
undefined4 uw_frame_state_for(void)

{
  int iVar1;
  short *psVar2;
  byte bVar3;
  char cVar4;
  int iVar5;
  size_t sVar6;
  byte *pbVar7;
  int iVar8;
  byte bVar9;
  byte bVar10;
  int extraout_ECX;
  int iVar11;
  int *piVar12;
  byte *pbVar13;
  char *pcVar14;
  uint uVar15;
  byte *pbVar16;
  uint uVar17;
  int *piVar18;
  byte bVar19;
  undefined8 uVar20;
  char *local_38;
  int local_20 [4];
  
  bVar19 = 0;
  uVar20 = __x86_get_pc_thunk_di();
  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);
  iVar8 = (int)uVar20;
  piVar18 = piVar12;
  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {
    *piVar18 = 0;
    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;
  }
  *(undefined4 *)(iVar8 + 0x68) = 0;
  *(undefined4 *)(iVar8 + 0x50) = 0;
  if (*(int *)(iVar8 + 0x4c) == 0) {
    return 5;
  }
  iVar11 = _Unwind_Find_FDE((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),
                            iVar8 + 0x54);
  if (iVar11 == 0) {
    iVar11 = *(int *)(iVar8 + 0x48);
    psVar2 = *(short **)(iVar8 + 0x4c);
    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {
      iVar8 = iVar11 + 4;
    }
    else {
      if ((char)*psVar2 != -0x48) {
        return 5;
      }
      if (*(int *)((int)psVar2 + 1) != 0xad) {
        return 5;
      }
      if (*(short *)((int)psVar2 + 5) != -0x7f33) {
        return 5;
      }
      iVar8 = iVar11 + 0xa0;
    }
    iVar5 = *(int *)(iVar8 + 0x1c);
    piVar12[1] = 1;
    piVar12[0x28] = 1;
    piVar12[7] = 1;
    piVar12[0x26] = 4;
    piVar12[0x25] = iVar5 - iVar11;
    *piVar12 = (iVar8 + 0x2c) - iVar5;
    piVar12[3] = 1;
    piVar12[6] = (iVar8 + 0x20) - iVar5;
    piVar12[5] = 1;
    piVar12[2] = (iVar8 + 0x28) - iVar5;
    piVar12[0xd] = 1;
    piVar12[4] = (iVar8 + 0x24) - iVar5;
    piVar12[0xf] = 1;
    piVar12[0xc] = (iVar8 + 0x14) - iVar5;
    piVar12[0xb] = 1;
    piVar12[0xe] = (iVar8 + 0x10) - iVar5;
    piVar12[0x11] = 1;
    piVar12[0x10] = (iVar8 + 0x38) - iVar5;
    piVar12[10] = (iVar8 + 0x18) - iVar5;
    piVar12[0x2d] = 8;
    *(undefined1 *)((int)piVar12 + 0xbb) = 1;
    return 0;
  }
  piVar12[0x29] = *(int *)(iVar8 + 0x5c);
  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);
  local_38 = (char *)(iVar5 + 9);
  sVar6 = strlen(local_38);
  pbVar7 = (byte *)(iVar5 + 10 + sVar6);
  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {
    iVar1 = *(int *)pbVar7;
    local_38 = (char *)(iVar5 + 0xb);
    pbVar7 = pbVar7 + 4;
    piVar12[0x2f] = iVar1;
  }
  bVar19 = *(byte *)(iVar5 + 8);
  bVar10 = *pbVar7;
  if (3 < bVar19) {
    if (bVar10 != 4) {
      return 3;
    }
    if (pbVar7[1] != 0) {
      return 3;
    }
    bVar10 = pbVar7[2];
    pbVar7 = pbVar7 + 2;
  }
  uVar17 = 0;
  bVar9 = 0;
  while( true ) {
    pbVar7 = pbVar7 + 1;
    bVar3 = bVar9 & 0x1f;
    bVar9 = bVar9 + 7;
    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;
    if (-1 < (char)bVar10) break;
    bVar10 = *pbVar7;
  }
  piVar12[0x2c] = uVar17;
  uVar15 = 0;
  uVar17 = 0;
  do {
    pbVar13 = pbVar7;
    pbVar7 = pbVar13 + 1;
    bVar10 = *pbVar13;
    bVar9 = (byte)uVar17;
    uVar17 = uVar17 + 7;
    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);
  } while ((char)bVar10 < '\0');
  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {
    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);
  }
  bVar10 = 0;
  piVar12[0x2b] = uVar15;
  if (bVar19 == 1) {
    pbVar13 = pbVar13 + 2;
    piVar12[0x2d] = (uint)*pbVar7;
  }
  else {
    uVar17 = 0;
    do {
      pbVar13 = pbVar7 + 1;
      bVar19 = *pbVar7;
      bVar9 = bVar10 & 0x1f;
      bVar10 = bVar10 + 7;
      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;
      pbVar7 = pbVar13;
    } while ((char)bVar19 < '\0');
    piVar12[0x2d] = uVar17;
  }
  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;
  pbVar7 = (byte *)0x0;
  cVar4 = *local_38;
  if (cVar4 == 'z') {
    bVar19 = 0;
    uVar17 = 0;
    pbVar7 = pbVar13;
    do {
      pbVar13 = pbVar7 + 1;
      bVar10 = *pbVar7;
      bVar9 = bVar19 & 0x1f;
      bVar19 = bVar19 + 7;
      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;
      pbVar7 = pbVar13;
    } while ((char)bVar10 < '\0');
    pbVar7 = pbVar13 + uVar17;
    *(undefined1 *)((int)piVar12 + 0xba) = 1;
    local_38 = local_38 + 1;
    cVar4 = *local_38;
  }
  while (local_38 = local_38 + 1, cVar4 != '\0') {
    if (cVar4 == 'L') {
      bVar19 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      *(byte *)((int)piVar12 + 0xb9) = bVar19;
    }
    else if (cVar4 == 'R') {
      bVar19 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      *(byte *)(piVar12 + 0x2e) = bVar19;
    }
    else if (cVar4 == 'P') {
      base_of_encoded_value();
      pbVar13 = (byte *)read_encoded_value_with_base(local_20);
      piVar12[0x2a] = local_20[0];
    }
    else {
      pbVar16 = pbVar7;
      if (cVar4 != 'S') goto LAB_0027c844;
      *(undefined1 *)((int)piVar12 + 0xbb) = 1;
    }
    cVar4 = *local_38;
  }
  pbVar16 = pbVar13;
  if (pbVar7 == (byte *)0x0) {
LAB_0027c844:
    if (pbVar16 == (byte *)0x0) {
      return 3;
    }
  }
  execute_cfa_program(piVar12);
  if (*(byte *)(piVar12 + 0x2e) == 0xff) {
    iVar5 = 8;
  }
  else {
    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;
    if (bVar19 == 2) {
      iVar5 = 0xc;
    }
    else {
      if (bVar19 < 3) {
        if (bVar19 != 0) {
LAB_0027c97e:
                    /* WARNING: Subroutine does not return */
          abort();
        }
      }
      else if (bVar19 != 3) {
        if (bVar19 != 4) goto LAB_0027c97e;
        iVar5 = 0x18;
        goto LAB_0027c6ff;
      }
      iVar5 = 0x10;
    }
  }
LAB_0027c6ff:
  pcVar14 = (char *)(iVar5 + iVar11);
  if (*(char *)((int)piVar12 + 0xba) != '\0') {
    do {
      cVar4 = *pcVar14;
      pcVar14 = pcVar14 + 1;
    } while (cVar4 < '\0');
  }
  if (*(char *)((int)piVar12 + 0xb9) != -1) {
    base_of_encoded_value();
    read_encoded_value_with_base(local_20);
    *(int *)(iVar8 + 0x50) = local_20[0];
  }
  execute_cfa_program(piVar12);
  return 0;
}



undefined4 FUN_0027c430(void)

{
  int iVar1;
  short *psVar2;
  byte bVar3;
  char cVar4;
  int iVar5;
  size_t sVar6;
  byte *pbVar7;
  int iVar8;
  byte bVar9;
  byte bVar10;
  int extraout_ECX;
  int iVar11;
  int *piVar12;
  byte *pbVar13;
  char *pcVar14;
  uint uVar15;
  byte *pbVar16;
  uint uVar17;
  int *piVar18;
  byte bVar19;
  undefined8 uVar20;
  char *local_38;
  int local_20 [4];
  
  bVar19 = 0;
  uVar20 = FUN_000559ee();
  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);
  iVar8 = (int)uVar20;
  piVar18 = piVar12;
  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {
    *piVar18 = 0;
    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;
  }
  *(undefined4 *)(iVar8 + 0x68) = 0;
  *(undefined4 *)(iVar8 + 0x50) = 0;
  if (*(int *)(iVar8 + 0x4c) == 0) {
    return 5;
  }
  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),
                        iVar8 + 0x54);
  if (iVar11 == 0) {
    iVar11 = *(int *)(iVar8 + 0x48);
    psVar2 = *(short **)(iVar8 + 0x4c);
    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {
      iVar8 = iVar11 + 4;
    }
    else {
      if ((char)*psVar2 != -0x48) {
        return 5;
      }
      if (*(int *)((int)psVar2 + 1) != 0xad) {
        return 5;
      }
      if (*(short *)((int)psVar2 + 5) != -0x7f33) {
        return 5;
      }
      iVar8 = iVar11 + 0xa0;
    }
    iVar5 = *(int *)(iVar8 + 0x1c);
    piVar12[1] = 1;
    piVar12[0x28] = 1;
    piVar12[7] = 1;
    piVar12[0x26] = 4;
    piVar12[0x25] = iVar5 - iVar11;
    *piVar12 = (iVar8 + 0x2c) - iVar5;
    piVar12[3] = 1;
    piVar12[6] = (iVar8 + 0x20) - iVar5;
    piVar12[5] = 1;
    piVar12[2] = (iVar8 + 0x28) - iVar5;
    piVar12[0xd] = 1;
    piVar12[4] = (iVar8 + 0x24) - iVar5;
    piVar12[0xf] = 1;
    piVar12[0xc] = (iVar8 + 0x14) - iVar5;
    piVar12[0xb] = 1;
    piVar12[0xe] = (iVar8 + 0x10) - iVar5;
    piVar12[0x11] = 1;
    piVar12[0x10] = (iVar8 + 0x38) - iVar5;
    piVar12[10] = (iVar8 + 0x18) - iVar5;
    piVar12[0x2d] = 8;
    *(undefined1 *)((int)piVar12 + 0xbb) = 1;
    return 0;
  }
  piVar12[0x29] = *(int *)(iVar8 + 0x5c);
  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);
  local_38 = (char *)(iVar5 + 9);
  sVar6 = strlen(local_38);
  pbVar7 = (byte *)(iVar5 + 10 + sVar6);
  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {
    iVar1 = *(int *)pbVar7;
    local_38 = (char *)(iVar5 + 0xb);
    pbVar7 = pbVar7 + 4;
    piVar12[0x2f] = iVar1;
  }
  bVar19 = *(byte *)(iVar5 + 8);
  bVar10 = *pbVar7;
  if (3 < bVar19) {
    if (bVar10 != 4) {
      return 3;
    }
    if (pbVar7[1] != 0) {
      return 3;
    }
    bVar10 = pbVar7[2];
    pbVar7 = pbVar7 + 2;
  }
  uVar17 = 0;
  bVar9 = 0;
  while( true ) {
    pbVar7 = pbVar7 + 1;
    bVar3 = bVar9 & 0x1f;
    bVar9 = bVar9 + 7;
    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;
    if (-1 < (char)bVar10) break;
    bVar10 = *pbVar7;
  }
  piVar12[0x2c] = uVar17;
  uVar15 = 0;
  uVar17 = 0;
  do {
    pbVar13 = pbVar7;
    pbVar7 = pbVar13 + 1;
    bVar10 = *pbVar13;
    bVar9 = (byte)uVar17;
    uVar17 = uVar17 + 7;
    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);
  } while ((char)bVar10 < '\0');
  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {
    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);
  }
  bVar10 = 0;
  piVar12[0x2b] = uVar15;
  if (bVar19 == 1) {
    pbVar13 = pbVar13 + 2;
    piVar12[0x2d] = (uint)*pbVar7;
  }
  else {
    uVar17 = 0;
    do {
      pbVar13 = pbVar7 + 1;
      bVar19 = *pbVar7;
      bVar9 = bVar10 & 0x1f;
      bVar10 = bVar10 + 7;
      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;
      pbVar7 = pbVar13;
    } while ((char)bVar19 < '\0');
    piVar12[0x2d] = uVar17;
  }
  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;
  pbVar7 = (byte *)0x0;
  cVar4 = *local_38;
  if (cVar4 == 'z') {
    bVar19 = 0;
    uVar17 = 0;
    pbVar7 = pbVar13;
    do {
      pbVar13 = pbVar7 + 1;
      bVar10 = *pbVar7;
      bVar9 = bVar19 & 0x1f;
      bVar19 = bVar19 + 7;
      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;
      pbVar7 = pbVar13;
    } while ((char)bVar10 < '\0');
    pbVar7 = pbVar13 + uVar17;
    *(undefined1 *)((int)piVar12 + 0xba) = 1;
    local_38 = local_38 + 1;
    cVar4 = *local_38;
  }
  while (local_38 = local_38 + 1, cVar4 != '\0') {
    if (cVar4 == 'L') {
      bVar19 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      *(byte *)((int)piVar12 + 0xb9) = bVar19;
    }
    else if (cVar4 == 'R') {
      bVar19 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      *(byte *)(piVar12 + 0x2e) = bVar19;
    }
    else if (cVar4 == 'P') {
      FUN_0027bae0();
      pbVar13 = (byte *)FUN_0027b990(local_20);
      piVar12[0x2a] = local_20[0];
    }
    else {
      pbVar16 = pbVar7;
      if (cVar4 != 'S') goto LAB_0027c844;
      *(undefined1 *)((int)piVar12 + 0xbb) = 1;
    }
    cVar4 = *local_38;
  }
  pbVar16 = pbVar13;
  if (pbVar7 == (byte *)0x0) {
LAB_0027c844:
    if (pbVar16 == (byte *)0x0) {
      return 3;
    }
  }
  FUN_0027bb40(piVar12);
  if (*(byte *)(piVar12 + 0x2e) == 0xff) {
    iVar5 = 8;
  }
  else {
    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;
    if (bVar19 == 2) {
      iVar5 = 0xc;
    }
    else {
      if (bVar19 < 3) {
        if (bVar19 != 0) {
LAB_0027c97e:
                    /* WARNING: Subroutine does not return */
          abort();
        }
      }
      else if (bVar19 != 3) {
        if (bVar19 != 4) goto LAB_0027c97e;
        iVar5 = 0x18;
        goto LAB_0027c6ff;
      }
      iVar5 = 0x10;
    }
  }
LAB_0027c6ff:
  pcVar14 = (char *)(iVar5 + iVar11);
  if (*(char *)((int)piVar12 + 0xba) != '\0') {
    do {
      cVar4 = *pcVar14;
      pcVar14 = pcVar14 + 1;
    } while (cVar4 < '\0');
  }
  if (*(char *)((int)piVar12 + 0xb9) != -1) {
    FUN_0027bae0();
    FUN_0027b990(local_20);
    *(int *)(iVar8 + 0x50) = local_20[0];
  }
  FUN_0027bb40(piVar12);
  return 0;
}


PUSH EBP
MOV ECX,0x30
PUSH EDI
CALL 0x000559ee
ADD EDI,0x112bc4
PUSH ESI
PUSH EBX
MOV EBX,EAX
XOR EAX,EAX
SUB ESP,0x3c
MOV dword ptr [ESP + 0x10],EDI
MOV EDI,EDX
STOSD.REP ES:EDI
MOV dword ptr [EBX + 0x68],0x0
MOV dword ptr [EBX + 0x50],0x0
MOV ECX,dword ptr [EBX + 0x4c]
TEST ECX,ECX
JZ 0x0027c7f3
MOV dword ptr [ESP + 0x8],EBX
LEA EAX,[EBX + 0x54]
SUB ESP,0x8
MOV EDI,EDX
PUSH EAX
MOV EAX,dword ptr [EBX + 0x60]
MOV dword ptr [ESP + 0x18],EAX
SHR EAX,0x1f
LEA EAX,[ECX + EAX*0x1 + -0x1]
PUSH EAX
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x0027f910
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
TEST EAX,EAX
MOV EAX,dword ptr [ESP + 0x8]
JZ 0x0027c7c8
MOV ESI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x5c]
SUB ESP,0xc
MOV dword ptr [EDI + 0xa4],EAX
LEA EAX,[ESI + 0x4]
SUB EAX,dword ptr [ESI + 0x4]
MOV dword ptr [ESP + 0x24],EAX
MOV ESI,EAX
LEA EAX,[EAX + 0x9]
MOV dword ptr [ESP + 0x20],EAX
MOV EBP,EAX
PUSH EAX
MOV EBX,dword ptr [ESP + 0x20]
CALL 0x000295f0
ADD ESP,0x10
CMP byte ptr [ESI + 0x9],0x65
LEA EAX,[EBP + EAX*0x1 + 0x1]
JZ 0x0027c610
MOV EBX,dword ptr [ESP + 0x18]
MOVZX ECX,byte ptr [EBX + 0x8]
MOVZX EBX,byte ptr [EAX]
MOV byte ptr [ESP + 0x1c],CL
CMP CL,0x3
JA 0x0027c888
XOR ESI,ESI
XOR ECX,ECX
JMP 0x0027c50b
MOVZX EBX,byte ptr [EAX]
MOV EDX,EBX
ADD EAX,0x1
AND EDX,0x7f
SHL EDX,CL
ADD ECX,0x7
OR ESI,EDX
TEST BL,BL
JS 0x0027c508
MOV dword ptr [EDI + 0xb0],ESI
XOR EBP,EBP
XOR ECX,ECX
JMP 0x0027c532
MOV EAX,ESI
LEA ESI,[EAX + 0x1]
MOVZX EBX,byte ptr [ESI + -0x1]
MOV EDX,EBX
AND EDX,0x7f
SHL EDX,CL
ADD ECX,0x7
OR EBP,EDX
TEST BL,BL
JS 0x0027c530
MOV EDX,ESI
MOV ESI,EBX
MOV EBX,EDX
CMP ECX,0x1f
JA 0x0027c562
AND ESI,0x40
JZ 0x0027c562
MOV EDX,0xffffffff
SHL EDX,CL
OR EBP,EDX
XOR EDX,EDX
XOR ECX,ECX
CMP byte ptr [ESP + 0x1c],0x1
MOV dword ptr [EDI + 0xac],EBP
MOV ESI,EDX
JZ 0x0027c638
LEA ESI,[ESI]
ADD EBX,0x1
MOVZX EDX,byte ptr [EBX + -0x1]
MOV EAX,EDX
AND EAX,0x7f
SHL EAX,CL
ADD ECX,0x7
OR ESI,EAX
TEST DL,DL
JS 0x0027c580
MOV dword ptr [EDI + 0xb4],ESI
MOV EAX,dword ptr [ESP + 0x14]
MOV byte ptr [EDI + 0xb9],0xff
XOR EBP,EBP
MOVZX EAX,byte ptr [EAX]
CMP AL,0x7a
JZ 0x0027c800
MOV ESI,dword ptr [ESP + 0x14]
LEA ECX,[ESP + 0x2c]
MOV dword ptr [ESP + 0x1c],EBP
MOV EBP,EBX
MOV dword ptr [ESP + 0x14],ECX
ADD ESI,0x1
JMP 0x0027c5f1
CMP AL,0x52
JZ 0x0027c650
CMP AL,0x50
JZ 0x0027c660
CMP AL,0x53
JNZ 0x0027c840
MOV byte ptr [EDI + 0xbb],0x1
MOVZX EAX,byte ptr [ESI]
ADD ESI,0x1
TEST AL,AL
JZ 0x0027c6a0
CMP AL,0x4c
JNZ 0x0027c5d0
MOVZX EAX,byte ptr [EBP]
ADD EBP,0x1
MOV byte ptr [EDI + 0xb9],AL
JMP 0x0027c5eb
MOV EBX,dword ptr [ESP + 0x18]
CMP byte ptr [EBX + 0xa],0x68
JNZ 0x0027c4e4
MOV EDX,dword ptr [EAX]
ADD EBX,0xb
ADD EAX,0x4
MOV dword ptr [ESP + 0x14],EBX
MOV dword ptr [EDI + 0xbc],EDX
JMP 0x0027c4e4
MOVZX EDX,byte ptr [EBX]
LEA EBX,[EAX + 0x2]
MOV dword ptr [EDI + 0xb4],EDX
JMP 0x0027c59d
MOVZX EAX,byte ptr [EBP]
ADD EBP,0x1
MOV byte ptr [EDI + 0xb8],AL
JMP 0x0027c5eb
MOVZX EBX,byte ptr [EBP]
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,EBX
CALL 0x0027bae0
SUB ESP,0xc
LEA ECX,[EBP + 0x1]
PUSH dword ptr [ESP + 0x20]
MOV EDX,EAX
MOV EAX,EBX
CALL 0x0027b990
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x3c]
ADD ESP,0x10
MOV dword ptr [EDI + 0xa8],EAX
JMP 0x0027c5eb
MOV EBX,EBP
MOV EBP,dword ptr [ESP + 0x1c]
TEST EBP,EBP
JZ 0x0027c860
MOV ECX,dword ptr [ESP + 0x18]
SUB ESP,0xc
MOV EAX,dword ptr [ECX]
PUSH EDI
LEA EDX,[ECX + EAX*0x1 + 0x4]
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,EBP
CALL 0x0027bb40
MOVZX EAX,byte ptr [EDI + 0xb8]
ADD ESP,0x10
CMP AL,0xff
JZ 0x0027c878
AND EAX,0x7
CMP AL,0x2
JZ 0x0027c868
JBE 0x0027c7b0
CMP AL,0x3
JZ 0x0027c7b8
CMP AL,0x4
JNZ 0x0027c97e
MOV EBX,0x18
ADD EBX,dword ptr [ESP + 0xc]
CMP byte ptr [EDI + 0xba],0x0
MOVZX EBP,byte ptr [EDI + 0xb9]
JZ 0x0027c770
XOR ESI,ESI
XOR ECX,ECX
LEA ESI,[ESI]
NOP
ADD EBX,0x1
MOVZX EDX,byte ptr [EBX + -0x1]
MOV EAX,EDX
AND EAX,0x7f
SHL EAX,CL
ADD ECX,0x7
OR ESI,EAX
TEST DL,DL
JS 0x0027c720
MOV ECX,EBP
ADD ESI,EBX
MOV EAX,EBX
CMP CL,0xff
JNZ 0x0027c778
TEST ESI,ESI
CMOVNZ EAX,ESI
MOV EBX,EAX
MOV ECX,dword ptr [ESP + 0xc]
SUB ESP,0xc
MOV EAX,dword ptr [ECX]
PUSH EDI
LEA EDX,[ECX + EAX*0x1 + 0x4]
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,EBX
CALL 0x0027bb40
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EBP
CMP AL,0xff
JZ 0x0027c749
XOR ESI,ESI
MOV EAX,EBP
MOV EDX,dword ptr [ESP + 0x8]
MOVZX EBP,AL
MOV EAX,EBP
CALL 0x0027bae0
SUB ESP,0xc
MOV ECX,EBX
LEA EDX,[ESP + 0x38]
PUSH EDX
MOV EDX,EAX
MOV EAX,EBP
CALL 0x0027b990
MOV EDX,dword ptr [ESP + 0x3c]
MOV EBX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV dword ptr [EBX + 0x50],EDX
JMP 0x0027c742
TEST AL,AL
JNZ 0x0027c97e
MOV EBX,0x10
JMP 0x0027c6ff
MOV ECX,dword ptr [EAX + 0x48]
MOV EAX,dword ptr [EAX + 0x4c]
CMP word ptr [EAX],0xb858
JZ 0x0027c960
CMP byte ptr [EAX],0xb8
JNZ 0x0027c7f3
CMP dword ptr [EAX + 0x1],0xad
JNZ 0x0027c7f3
CMP word ptr [EAX + 0x5],0x80cd
JZ 0x0027c8a0
ADD ESP,0x3c
MOV EAX,0x5
POP EBX
POP ESI
POP EDI
POP EBP
RET
XOR ESI,ESI
XOR ECX,ECX
LEA ESI,[ESI]
ADD EBX,0x1
MOVZX EDX,byte ptr [EBX + -0x1]
MOV EAX,EDX
AND EAX,0x7f
SHL EAX,CL
ADD ECX,0x7
OR ESI,EAX
TEST DL,DL
JS 0x0027c808
LEA EBP,[EBX + ESI*0x1]
MOV ESI,dword ptr [ESP + 0x14]
MOV byte ptr [EDI + 0xba],0x1
ADD ESI,0x1
MOVZX EAX,byte ptr [ESI]
MOV dword ptr [ESP + 0x14],ESI
JMP 0x0027c5b5
MOV EBP,dword ptr [ESP + 0x1c]
TEST EBP,EBP
JNZ 0x0027c6ae
ADD ESP,0x3c
MOV EAX,0x3
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBP,EBX
JMP 0x0027c844
MOV EBX,0xc
JMP 0x0027c6ff
MOV EBX,0x8
JMP 0x0027c6ff
CMP BL,0x4
JNZ 0x0027c84c
CMP byte ptr [EAX + 0x1],0x0
JNZ 0x0027c84c
MOVZX EBX,byte ptr [EAX + 0x2]
ADD EAX,0x2
JMP 0x0027c4fc
LEA EAX,[ECX + 0xa0]
MOV EDX,dword ptr [EAX + 0x1c]
MOV dword ptr [EDI + 0x4],0x1
MOV dword ptr [EDI + 0xa0],0x1
MOV EBX,EDX
MOV dword ptr [EDI + 0x1c],0x1
SUB EBX,ECX
LEA ECX,[EAX + 0x2c]
MOV dword ptr [EDI + 0x98],0x4
SUB ECX,EDX
MOV dword ptr [EDI + 0x94],EBX
MOV dword ptr [EDI],ECX
LEA ECX,[EAX + 0x20]
SUB ECX,EDX
MOV dword ptr [EDI + 0xc],0x1
MOV dword ptr [EDI + 0x18],ECX
LEA ECX,[EAX + 0x28]
SUB ECX,EDX
MOV dword ptr [EDI + 0x14],0x1
MOV dword ptr [EDI + 0x8],ECX
LEA ECX,[EAX + 0x24]
SUB ECX,EDX
MOV dword ptr [EDI + 0x34],0x1
MOV dword ptr [EDI + 0x10],ECX
LEA ECX,[EAX + 0x14]
SUB ECX,EDX
MOV dword ptr [EDI + 0x3c],0x1
MOV dword ptr [EDI + 0x30],ECX
LEA ECX,[EAX + 0x10]
SUB ECX,EDX
MOV dword ptr [EDI + 0x2c],0x1
MOV dword ptr [EDI + 0x38],ECX
LEA ECX,[EAX + 0x18]
ADD EAX,0x38
SUB EAX,EDX
SUB ECX,EDX
MOV dword ptr [EDI + 0x44],0x1
MOV dword ptr [EDI + 0x40],EAX
XOR EAX,EAX
MOV dword ptr [EDI + 0x28],ECX
MOV dword ptr [EDI + 0xb4],0x8
MOV byte ptr [EDI + 0xbb],0x1
JMP 0x0027c767
CMP dword ptr [EAX + 0x2],0x77
JNZ 0x0027c7d9
CMP word ptr [EAX + 0x6],0x80cd
JNZ 0x0027c7d9
LEA EAX,[ECX + 0x4]
JMP 0x0027c8a6
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x00029080
(translation_unit "undefined4 FUN_0027c430(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_0027c430(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}" type_identifier (function_declarator "FUN_0027c430(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "short *psVar2;" (sized_type_specifier "short" short) (pointer_declarator "*psVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "undefined8 uVar20;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = FUN_000559ee();" (assignment_expression "uVar20 = FUN_000559ee()" identifier = (call_expression "FUN_000559ee()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar12 = (int *)((ulonglong)uVar20 >> 0x20);" (assignment_expression "piVar12 = (int *)((ulonglong)uVar20 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar20 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar20 >> 0x20)" ( (binary_expression "(ulonglong)uVar20 >> 0x20" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar8 = (int)uVar20;" (assignment_expression "iVar8 = (int)uVar20" identifier = (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar18 = piVar12;" (assignment_expression "piVar18 = piVar12" identifier = identifier) ;) (for_statement "for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" for ( (assignment_expression "iVar11 = extraout_ECX" identifier = identifier) ; (binary_expression "iVar11 != 0" identifier != number_literal) ; (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ) (compound_statement "{\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" { (expression_statement "*piVar18 = 0;" (assignment_expression "*piVar18 = 0" (pointer_expression "*piVar18" * identifier) = number_literal) ;) (expression_statement "piVar18 = piVar18 + (uint)bVar19 * -2 + 1;" (assignment_expression "piVar18 = piVar18 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "piVar18 + (uint)bVar19 * -2 + 1" (binary_expression "piVar18 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(iVar8 + 0x68) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x68) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x68)" * (cast_expression "(undefined4 *)(iVar8 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x68)" ( (binary_expression "iVar8 + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x50) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x50)" * (cast_expression "(undefined4 *)(iVar8 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }" if (parenthesized_expression "(*(int *)(iVar8 + 0x4c) == 0)" ( (binary_expression "*(int *)(iVar8 + 0x4c) == 0" (pointer_expression "*(int *)(iVar8 + 0x4c)" * (cast_expression "(int *)(iVar8 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return 5;\n  }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);" (assignment_expression "iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" identifier = (call_expression "FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" identifier (argument_list "((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" ( (binary_expression "(*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f)" (parenthesized_expression "(*(int *)(iVar8 + 0x4c) + -1)" ( (binary_expression "*(int *)(iVar8 + 0x4c) + -1" (pointer_expression "*(int *)(iVar8 + 0x4c)" * (cast_expression "(int *)(iVar8 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) + number_literal) )) - (parenthesized_expression "(*(int *)(iVar8 + 0x60) >> 0x1f)" ( (binary_expression "*(int *)(iVar8 + 0x60) >> 0x1f" (pointer_expression "*(int *)(iVar8 + 0x60)" * (cast_expression "(int *)(iVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x60)" ( (binary_expression "iVar8 + 0x60" identifier + number_literal) )))) >> number_literal) ))) , (binary_expression "iVar8 + 0x54" identifier + number_literal) )))) ;) (if_statement "if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" { (expression_statement "iVar11 = *(int *)(iVar8 + 0x48);" (assignment_expression "iVar11 = *(int *)(iVar8 + 0x48)" identifier = (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "psVar2 = *(short **)(iVar8 + 0x4c);" (assignment_expression "psVar2 = *(short **)(iVar8 + 0x4c)" identifier = (pointer_expression "*(short **)(iVar8 + 0x4c)" * (cast_expression "(short **)(iVar8 + 0x4c)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" if (parenthesized_expression "(((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33))" ( (binary_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)" (parenthesized_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77))" ( (binary_expression "(*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)" (parenthesized_expression "(*psVar2 == -0x47a8)" ( (binary_expression "*psVar2 == -0x47a8" (pointer_expression "*psVar2" * identifier) == number_literal) )) && (parenthesized_expression "(*(int *)(psVar2 + 1) == 0x77)" ( (binary_expression "*(int *)(psVar2 + 1) == 0x77" (pointer_expression "*(int *)(psVar2 + 1)" * (cast_expression "(int *)(psVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar2 + 1)" ( (binary_expression "psVar2 + 1" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(psVar2[3] == -0x7f33)" ( (binary_expression "psVar2[3] == -0x7f33" (subscript_expression "psVar2[3]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      iVar8 = iVar11 + 4;\n    }" { (expression_statement "iVar8 = iVar11 + 4;" (assignment_expression "iVar8 = iVar11 + 4" identifier = (binary_expression "iVar11 + 4" identifier + number_literal)) ;) }) (else_clause "else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" else (compound_statement "{\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" { (if_statement "if ((char)*psVar2 != -0x48) {\n        return 5;\n      }" if (parenthesized_expression "((char)*psVar2 != -0x48)" ( (binary_expression "(char)*psVar2 != -0x48" (cast_expression "(char)*psVar2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*psVar2" * identifier)) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }" if (parenthesized_expression "(*(int *)((int)psVar2 + 1) != 0xad)" ( (binary_expression "*(int *)((int)psVar2 + 1) != 0xad" (pointer_expression "*(int *)((int)psVar2 + 1)" * (cast_expression "(int *)((int)psVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2 + 1)" ( (binary_expression "(int)psVar2 + 1" (cast_expression "(int)psVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }" if (parenthesized_expression "(*(short *)((int)psVar2 + 5) != -0x7f33)" ( (binary_expression "*(short *)((int)psVar2 + 5) != -0x7f33" (pointer_expression "*(short *)((int)psVar2 + 5)" * (cast_expression "(short *)((int)psVar2 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2 + 5)" ( (binary_expression "(int)psVar2 + 5" (cast_expression "(int)psVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "iVar8 = iVar11 + 0xa0;" (assignment_expression "iVar8 = iVar11 + 0xa0" identifier = (binary_expression "iVar11 + 0xa0" identifier + number_literal)) ;) }))) (expression_statement "iVar5 = *(int *)(iVar8 + 0x1c);" (assignment_expression "iVar5 = *(int *)(iVar8 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x1c)" * (cast_expression "(int *)(iVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "piVar12[1] = 1;" (assignment_expression "piVar12[1] = 1" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x28] = 1;" (assignment_expression "piVar12[0x28] = 1" (subscript_expression "piVar12[0x28]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[7] = 1;" (assignment_expression "piVar12[7] = 1" (subscript_expression "piVar12[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x26] = 4;" (assignment_expression "piVar12[0x26] = 4" (subscript_expression "piVar12[0x26]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x25] = iVar5 - iVar11;" (assignment_expression "piVar12[0x25] = iVar5 - iVar11" (subscript_expression "piVar12[0x25]" identifier [ number_literal ]) = (binary_expression "iVar5 - iVar11" identifier - identifier)) ;) (expression_statement "*piVar12 = (iVar8 + 0x2c) - iVar5;" (assignment_expression "*piVar12 = (iVar8 + 0x2c) - iVar5" (pointer_expression "*piVar12" * identifier) = (binary_expression "(iVar8 + 0x2c) - iVar5" (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[3] = 1;" (assignment_expression "piVar12[3] = 1" (subscript_expression "piVar12[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[6] = (iVar8 + 0x20) - iVar5;" (assignment_expression "piVar12[6] = (iVar8 + 0x20) - iVar5" (subscript_expression "piVar12[6]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x20) - iVar5" (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[5] = 1;" (assignment_expression "piVar12[5] = 1" (subscript_expression "piVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[2] = (iVar8 + 0x28) - iVar5;" (assignment_expression "piVar12[2] = (iVar8 + 0x28) - iVar5" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x28) - iVar5" (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xd] = 1;" (assignment_expression "piVar12[0xd] = 1" (subscript_expression "piVar12[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[4] = (iVar8 + 0x24) - iVar5;" (assignment_expression "piVar12[4] = (iVar8 + 0x24) - iVar5" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x24) - iVar5" (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xf] = 1;" (assignment_expression "piVar12[0xf] = 1" (subscript_expression "piVar12[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0xc] = (iVar8 + 0x14) - iVar5;" (assignment_expression "piVar12[0xc] = (iVar8 + 0x14) - iVar5" (subscript_expression "piVar12[0xc]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x14) - iVar5" (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xb] = 1;" (assignment_expression "piVar12[0xb] = 1" (subscript_expression "piVar12[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0xe] = (iVar8 + 0x10) - iVar5;" (assignment_expression "piVar12[0xe] = (iVar8 + 0x10) - iVar5" (subscript_expression "piVar12[0xe]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x10) - iVar5" (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0x11] = 1;" (assignment_expression "piVar12[0x11] = 1" (subscript_expression "piVar12[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x10] = (iVar8 + 0x38) - iVar5;" (assignment_expression "piVar12[0x10] = (iVar8 + 0x38) - iVar5" (subscript_expression "piVar12[0x10]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x38) - iVar5" (parenthesized_expression "(iVar8 + 0x38)" ( (binary_expression "iVar8 + 0x38" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[10] = (iVar8 + 0x18) - iVar5;" (assignment_expression "piVar12[10] = (iVar8 + 0x18) - iVar5" (subscript_expression "piVar12[10]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x18) - iVar5" (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0x2d] = 8;" (assignment_expression "piVar12[0x2d] = 8" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xbb)" ( (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar12[0x29] = *(int *)(iVar8 + 0x5c);" (assignment_expression "piVar12[0x29] = *(int *)(iVar8 + 0x5c)" (subscript_expression "piVar12[0x29]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar8 + 0x5c)" * (cast_expression "(int *)(iVar8 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5c)" ( (binary_expression "iVar8 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);" (assignment_expression "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4)" identifier = (binary_expression "(iVar11 + 4) - *(int *)(iVar11 + 4)" (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )) - (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))))) ;) (expression_statement "local_38 = (char *)(iVar5 + 9);" (assignment_expression "local_38 = (char *)(iVar5 + 9)" identifier = (cast_expression "(char *)(iVar5 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 9)" ( (binary_expression "iVar5 + 9" identifier + number_literal) )))) ;) (expression_statement "sVar6 = strlen(local_38);" (assignment_expression "sVar6 = strlen(local_38)" identifier = (call_expression "strlen(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "pbVar7 = (byte *)(iVar5 + 10 + sVar6);" (assignment_expression "pbVar7 = (byte *)(iVar5 + 10 + sVar6)" identifier = (cast_expression "(byte *)(iVar5 + 10 + sVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 10 + sVar6)" ( (binary_expression "iVar5 + 10 + sVar6" (binary_expression "iVar5 + 10" identifier + number_literal) + identifier) )))) ;) (if_statement "if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" if (parenthesized_expression "((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h'))" ( (binary_expression "(*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')" (parenthesized_expression "(*(char *)(iVar5 + 9) == 'e')" ( (binary_expression "*(char *)(iVar5 + 9) == 'e'" (pointer_expression "*(char *)(iVar5 + 9)" * (cast_expression "(char *)(iVar5 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 9)" ( (binary_expression "iVar5 + 9" identifier + number_literal) )))) == (char_literal "'e'" ' character ')) )) && (parenthesized_expression "(*(char *)(iVar5 + 10) == 'h')" ( (binary_expression "*(char *)(iVar5 + 10) == 'h'" (pointer_expression "*(char *)(iVar5 + 10)" * (cast_expression "(char *)(iVar5 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 10)" ( (binary_expression "iVar5 + 10" identifier + number_literal) )))) == (char_literal "'h'" ' character ')) ))) )) (compound_statement "{\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" { (expression_statement "iVar1 = *(int *)pbVar7;" (assignment_expression "iVar1 = *(int *)pbVar7" identifier = (pointer_expression "*(int *)pbVar7" * (cast_expression "(int *)pbVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_38 = (char *)(iVar5 + 0xb);" (assignment_expression "local_38 = (char *)(iVar5 + 0xb)" identifier = (cast_expression "(char *)(iVar5 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xb)" ( (binary_expression "iVar5 + 0xb" identifier + number_literal) )))) ;) (expression_statement "pbVar7 = pbVar7 + 4;" (assignment_expression "pbVar7 = pbVar7 + 4" identifier = (binary_expression "pbVar7 + 4" identifier + number_literal)) ;) (expression_statement "piVar12[0x2f] = iVar1;" (assignment_expression "piVar12[0x2f] = iVar1" (subscript_expression "piVar12[0x2f]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "bVar19 = *(byte *)(iVar5 + 8);" (assignment_expression "bVar19 = *(byte *)(iVar5 + 8)" identifier = (pointer_expression "*(byte *)(iVar5 + 8)" * (cast_expression "(byte *)(iVar5 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (if_statement "if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" if (parenthesized_expression "(3 < bVar19)" ( (binary_expression "3 < bVar19" number_literal < identifier) )) (compound_statement "{\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" { (if_statement "if (bVar10 != 4) {\n      return 3;\n    }" if (parenthesized_expression "(bVar10 != 4)" ( (binary_expression "bVar10 != 4" identifier != number_literal) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) })) (if_statement "if (pbVar7[1] != 0) {\n      return 3;\n    }" if (parenthesized_expression "(pbVar7[1] != 0)" ( (binary_expression "pbVar7[1] != 0" (subscript_expression "pbVar7[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) })) (expression_statement "bVar10 = pbVar7[2];" (assignment_expression "bVar10 = pbVar7[2]" identifier = (subscript_expression "pbVar7[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" identifier = (binary_expression "pbVar7 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" { (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = bVar9 & 0x1f;" (assignment_expression "bVar3 = bVar9 & 0x1f" identifier = (binary_expression "bVar9 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar9 = bVar9 + 7;" (assignment_expression "bVar9 = bVar9 + 7" identifier = (binary_expression "bVar9 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3" identifier = (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar3" identifier | (binary_expression "(bVar10 & 0x7f) << bVar3" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << identifier))) ;) (if_statement "if (-1 < (char)bVar10) break;" if (parenthesized_expression "(-1 < (char)bVar10)" ( (binary_expression "-1 < (char)bVar10" number_literal < (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) })) (expression_statement "piVar12[0x2c] = uVar17;" (assignment_expression "piVar12[0x2c] = uVar17" (subscript_expression "piVar12[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');" do (compound_statement "{\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  }" { (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" identifier = identifier) ;) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar13;" (assignment_expression "bVar10 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "bVar9 = (byte)uVar17;" (assignment_expression "bVar9 = (byte)uVar17" identifier = (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar17 = uVar17 + 7;" (assignment_expression "uVar17 = uVar17 + 7" identifier = (binary_expression "uVar17 + 7" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);" (assignment_expression "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" identifier = (binary_expression "uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" identifier | (binary_expression "(bVar10 & 0x7f) << (bVar9 & 0x1f)" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "((char)bVar10 < '\0')" ( (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" if (parenthesized_expression "((uVar17 < 0x20) && ((bVar10 & 0x40) != 0))" ( (binary_expression "(uVar17 < 0x20) && ((bVar10 & 0x40) != 0)" (parenthesized_expression "(uVar17 < 0x20)" ( (binary_expression "uVar17 < 0x20" identifier < number_literal) )) && (parenthesized_expression "((bVar10 & 0x40) != 0)" ( (binary_expression "(bVar10 & 0x40) != 0" (parenthesized_expression "(bVar10 & 0x40)" ( (binary_expression "bVar10 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" { (expression_statement "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);" (assignment_expression "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f)" identifier = (binary_expression "uVar15 | -1 << ((byte)uVar17 & 0x1f)" identifier | (binary_expression "-1 << ((byte)uVar17 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar17 & 0x1f)" ( (binary_expression "(byte)uVar17 & 0x1f" (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) })) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar12[0x2b] = uVar15;" (assignment_expression "piVar12[0x2b] = uVar15" (subscript_expression "piVar12[0x2b]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" if (parenthesized_expression "(bVar19 == 1)" ( (binary_expression "bVar19 == 1" identifier == number_literal) )) (compound_statement "{\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }" { (expression_statement "pbVar13 = pbVar13 + 2;" (assignment_expression "pbVar13 = pbVar13 + 2" identifier = (binary_expression "pbVar13 + 2" identifier + number_literal)) ;) (expression_statement "piVar12[0x2d] = (uint)*pbVar7;" (assignment_expression "piVar12[0x2d] = (uint)*pbVar7" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" else (compound_statement "{\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');" do (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar7;" (assignment_expression "bVar19 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar9 = bVar10 & 0x1f;" (assignment_expression "bVar9 = bVar10 & 0x1f" identifier = (binary_expression "bVar10 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar10 = bVar10 + 7;" (assignment_expression "bVar10 = bVar10 + 7" identifier = (binary_expression "bVar10 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9" identifier = (binary_expression "uVar17 | (bVar19 & 0x7f) << bVar9" identifier | (binary_expression "(bVar19 & 0x7f) << bVar9" (parenthesized_expression "(bVar19 & 0x7f)" ( (binary_expression "bVar19 & 0x7f" identifier & number_literal) )) << identifier))) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar19 < '\0')" ( (binary_expression "(char)bVar19 < '\0'" (cast_expression "(char)bVar19" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "piVar12[0x2d] = uVar17;" (assignment_expression "piVar12[0x2d] = uVar17" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xb9)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xb9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)0x0;" (assignment_expression "pbVar7 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (if_statement "if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" if (parenthesized_expression "(cVar4 == 'z')" ( (binary_expression "cVar4 == 'z'" identifier == (char_literal "'z'" ' character ')) )) (compound_statement "{\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" { (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');" do (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar9 = bVar19 & 0x1f;" (assignment_expression "bVar9 = bVar19 & 0x1f" identifier = (binary_expression "bVar19 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar19 = bVar19 + 7;" (assignment_expression "bVar19 = bVar19 + 7" identifier = (binary_expression "bVar19 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9" identifier = (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar9" identifier | (binary_expression "(bVar10 & 0x7f) << bVar9" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << identifier))) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar10 < '\0')" ( (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pbVar7 = pbVar13 + uVar17;" (assignment_expression "pbVar7 = pbVar13 + uVar17" identifier = (binary_expression "pbVar13 + uVar17" identifier + identifier)) ;) (expression_statement "*(undefined1 *)((int)piVar12 + 0xba) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xba) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xba)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xba)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xba)" ( (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (while_statement "while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" while (parenthesized_expression "(local_38 = local_38 + 1, cVar4 != '\0')" ( (comma_expression "local_38 = local_38 + 1, cVar4 != '\0'" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) , (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" { (if_statement "if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'L')" ( (binary_expression "cVar4 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }" { (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)piVar12 + 0xb9) = bVar19;" (assignment_expression "*(byte *)((int)piVar12 + 0xb9) = bVar19" (pointer_expression "*(byte *)((int)piVar12 + 0xb9)" * (cast_expression "(byte *)((int)piVar12 + 0xb9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }) (else_clause "else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (if_statement "if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'R')" ( (binary_expression "cVar4 == 'R'" identifier == (char_literal "'R'" ' character ')) )) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }" { (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(piVar12 + 0x2e) = bVar19;" (assignment_expression "*(byte *)(piVar12 + 0x2e) = bVar19" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (if_statement "if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'P')" ( (binary_expression "cVar4 == 'P'" identifier == (char_literal "'P'" ' character ')) )) (compound_statement "{\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }" { (expression_statement "FUN_0027bae0();" (call_expression "FUN_0027bae0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar13 = (byte *)FUN_0027b990(local_20);" (assignment_expression "pbVar13 = (byte *)FUN_0027b990(local_20)" identifier = (cast_expression "(byte *)FUN_0027b990(local_20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027b990(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "piVar12[0x2a] = local_20[0];" (assignment_expression "piVar12[0x2a] = local_20[0]" (subscript_expression "piVar12[0x2a]" identifier [ number_literal ]) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (compound_statement "{\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" { (expression_statement "pbVar16 = pbVar7;" (assignment_expression "pbVar16 = pbVar7" identifier = identifier) ;) (if_statement "if (cVar4 != 'S') goto LAB_0027c844;" if (parenthesized_expression "(cVar4 != 'S')" ( (binary_expression "cVar4 != 'S'" identifier != (char_literal "'S'" ' character ')) )) (goto_statement "goto LAB_0027c844;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xbb)" ( (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))))))) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (expression_statement "pbVar16 = pbVar13;" (assignment_expression "pbVar16 = pbVar13" identifier = identifier) ;) (if_statement "if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" if (parenthesized_expression "(pbVar7 == (byte *)0x0)" ( (binary_expression "pbVar7 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" { (labeled_statement "LAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" statement_identifier : (if_statement "if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" if (parenthesized_expression "(pbVar16 == (byte *)0x0)" ( (binary_expression "pbVar16 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) }))) })) (expression_statement "FUN_0027bb40(piVar12);" (call_expression "FUN_0027bb40(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;) (if_statement "if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" if (parenthesized_expression "(*(byte *)(piVar12 + 0x2e) == 0xff)" ( (binary_expression "*(byte *)(piVar12 + 0x2e) == 0xff" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar5 = 8;\n  }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) }) (else_clause "else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" else (compound_statement "{\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" { (expression_statement "bVar19 = *(byte *)(piVar12 + 0x2e) & 7;" (assignment_expression "bVar19 = *(byte *)(piVar12 + 0x2e) & 7" identifier = (binary_expression "*(byte *)(piVar12 + 0x2e) & 7" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" if (parenthesized_expression "(bVar19 == 2)" ( (binary_expression "bVar19 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar5 = 0xc;\n    }" { (expression_statement "iVar5 = 0xc;" (assignment_expression "iVar5 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" else (compound_statement "{\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" { (if_statement "if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" if (parenthesized_expression "(bVar19 < 3)" ( (binary_expression "bVar19 < 3" identifier < number_literal) )) (compound_statement "{\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }" { (if_statement "if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" if (parenthesized_expression "(bVar19 != 0)" ( (binary_expression "bVar19 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" { (labeled_statement "LAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();" statement_identifier : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }) (else_clause "else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" else (if_statement "if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" if (parenthesized_expression "(bVar19 != 3)" ( (binary_expression "bVar19 != 3" identifier != number_literal) )) (compound_statement "{\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" { (if_statement "if (bVar19 != 4) goto LAB_0027c97e;" if (parenthesized_expression "(bVar19 != 4)" ( (binary_expression "bVar19 != 4" identifier != number_literal) )) (goto_statement "goto LAB_0027c97e;" goto statement_identifier ;)) (expression_statement "iVar5 = 0x18;" (assignment_expression "iVar5 = 0x18" identifier = number_literal) ;) (goto_statement "goto LAB_0027c6ff;" goto statement_identifier ;) })))) (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);" statement_identifier : (expression_statement "pcVar14 = (char *)(iVar5 + iVar11);" (assignment_expression "pcVar14 = (char *)(iVar5 + iVar11)" identifier = (cast_expression "(char *)(iVar5 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar11)" ( (binary_expression "iVar5 + iVar11" identifier + identifier) )))) ;)) (if_statement "if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" if (parenthesized_expression "(*(char *)((int)piVar12 + 0xba) != '\0')" ( (binary_expression "*(char *)((int)piVar12 + 0xba) != '\0'" (pointer_expression "*(char *)((int)piVar12 + 0xba)" * (cast_expression "(char *)((int)piVar12 + 0xba)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xba)" ( (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" { (do_statement "do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');" do (compound_statement "{\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    }" { (expression_statement "cVar4 = *pcVar14;" (assignment_expression "cVar4 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar4 < '\0')" ( (binary_expression "cVar4 < '\0'" identifier < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" if (parenthesized_expression "(*(char *)((int)piVar12 + 0xb9) != -1)" ( (binary_expression "*(char *)((int)piVar12 + 0xb9) != -1" (pointer_expression "*(char *)((int)piVar12 + 0xb9)" * (cast_expression "(char *)((int)piVar12 + 0xb9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" { (expression_statement "FUN_0027bae0();" (call_expression "FUN_0027bae0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0027b990(local_20);" (call_expression "FUN_0027b990(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "*(int *)(iVar8 + 0x50) = local_20[0];" (assignment_expression "*(int *)(iVar8 + 0x50) = local_20[0]" (pointer_expression "*(int *)(iVar8 + 0x50)" * (cast_expression "(int *)(iVar8 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) })) (expression_statement "FUN_0027bb40(piVar12);" (call_expression "FUN_0027bb40(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 uw_frame_state_for(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = __x86_get_pc_thunk_di();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = _Unwind_Find_FDE((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                            iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  execute_cfa_program(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    base_of_encoded_value();\n    read_encoded_value_with_base(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  execute_cfa_program(piVar12);\n  return 0;\n}\n\n" (function_definition "undefined4 uw_frame_state_for(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = __x86_get_pc_thunk_di();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = _Unwind_Find_FDE((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                            iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  execute_cfa_program(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    base_of_encoded_value();\n    read_encoded_value_with_base(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  execute_cfa_program(piVar12);\n  return 0;\n}" type_identifier (function_declarator "uw_frame_state_for(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = __x86_get_pc_thunk_di();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = _Unwind_Find_FDE((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                            iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  execute_cfa_program(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    base_of_encoded_value();\n    read_encoded_value_with_base(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  execute_cfa_program(piVar12);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "short *psVar2;" (sized_type_specifier "short" short) (pointer_declarator "*psVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "undefined8 uVar20;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = __x86_get_pc_thunk_di();" (assignment_expression "uVar20 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar12 = (int *)((ulonglong)uVar20 >> 0x20);" (assignment_expression "piVar12 = (int *)((ulonglong)uVar20 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar20 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar20 >> 0x20)" ( (binary_expression "(ulonglong)uVar20 >> 0x20" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar8 = (int)uVar20;" (assignment_expression "iVar8 = (int)uVar20" identifier = (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar18 = piVar12;" (assignment_expression "piVar18 = piVar12" identifier = identifier) ;) (for_statement "for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" for ( (assignment_expression "iVar11 = extraout_ECX" identifier = identifier) ; (binary_expression "iVar11 != 0" identifier != number_literal) ; (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ) (compound_statement "{\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" { (expression_statement "*piVar18 = 0;" (assignment_expression "*piVar18 = 0" (pointer_expression "*piVar18" * identifier) = number_literal) ;) (expression_statement "piVar18 = piVar18 + (uint)bVar19 * -2 + 1;" (assignment_expression "piVar18 = piVar18 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "piVar18 + (uint)bVar19 * -2 + 1" (binary_expression "piVar18 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(iVar8 + 0x68) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x68) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x68)" * (cast_expression "(undefined4 *)(iVar8 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x68)" ( (binary_expression "iVar8 + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x50) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x50)" * (cast_expression "(undefined4 *)(iVar8 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }" if (parenthesized_expression "(*(int *)(iVar8 + 0x4c) == 0)" ( (binary_expression "*(int *)(iVar8 + 0x4c) == 0" (pointer_expression "*(int *)(iVar8 + 0x4c)" * (cast_expression "(int *)(iVar8 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return 5;\n  }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "iVar11 = _Unwind_Find_FDE((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                            iVar8 + 0x54);" (assignment_expression "iVar11 = _Unwind_Find_FDE((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                            iVar8 + 0x54)" identifier = (call_expression "_Unwind_Find_FDE((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                            iVar8 + 0x54)" identifier (argument_list "((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                            iVar8 + 0x54)" ( (binary_expression "(*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f)" (parenthesized_expression "(*(int *)(iVar8 + 0x4c) + -1)" ( (binary_expression "*(int *)(iVar8 + 0x4c) + -1" (pointer_expression "*(int *)(iVar8 + 0x4c)" * (cast_expression "(int *)(iVar8 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) + number_literal) )) - (parenthesized_expression "(*(int *)(iVar8 + 0x60) >> 0x1f)" ( (binary_expression "*(int *)(iVar8 + 0x60) >> 0x1f" (pointer_expression "*(int *)(iVar8 + 0x60)" * (cast_expression "(int *)(iVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x60)" ( (binary_expression "iVar8 + 0x60" identifier + number_literal) )))) >> number_literal) ))) , (binary_expression "iVar8 + 0x54" identifier + number_literal) )))) ;) (if_statement "if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" { (expression_statement "iVar11 = *(int *)(iVar8 + 0x48);" (assignment_expression "iVar11 = *(int *)(iVar8 + 0x48)" identifier = (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "psVar2 = *(short **)(iVar8 + 0x4c);" (assignment_expression "psVar2 = *(short **)(iVar8 + 0x4c)" identifier = (pointer_expression "*(short **)(iVar8 + 0x4c)" * (cast_expression "(short **)(iVar8 + 0x4c)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" if (parenthesized_expression "(((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33))" ( (binary_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)" (parenthesized_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77))" ( (binary_expression "(*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)" (parenthesized_expression "(*psVar2 == -0x47a8)" ( (binary_expression "*psVar2 == -0x47a8" (pointer_expression "*psVar2" * identifier) == number_literal) )) && (parenthesized_expression "(*(int *)(psVar2 + 1) == 0x77)" ( (binary_expression "*(int *)(psVar2 + 1) == 0x77" (pointer_expression "*(int *)(psVar2 + 1)" * (cast_expression "(int *)(psVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar2 + 1)" ( (binary_expression "psVar2 + 1" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(psVar2[3] == -0x7f33)" ( (binary_expression "psVar2[3] == -0x7f33" (subscript_expression "psVar2[3]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      iVar8 = iVar11 + 4;\n    }" { (expression_statement "iVar8 = iVar11 + 4;" (assignment_expression "iVar8 = iVar11 + 4" identifier = (binary_expression "iVar11 + 4" identifier + number_literal)) ;) }) (else_clause "else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" else (compound_statement "{\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" { (if_statement "if ((char)*psVar2 != -0x48) {\n        return 5;\n      }" if (parenthesized_expression "((char)*psVar2 != -0x48)" ( (binary_expression "(char)*psVar2 != -0x48" (cast_expression "(char)*psVar2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*psVar2" * identifier)) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }" if (parenthesized_expression "(*(int *)((int)psVar2 + 1) != 0xad)" ( (binary_expression "*(int *)((int)psVar2 + 1) != 0xad" (pointer_expression "*(int *)((int)psVar2 + 1)" * (cast_expression "(int *)((int)psVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2 + 1)" ( (binary_expression "(int)psVar2 + 1" (cast_expression "(int)psVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }" if (parenthesized_expression "(*(short *)((int)psVar2 + 5) != -0x7f33)" ( (binary_expression "*(short *)((int)psVar2 + 5) != -0x7f33" (pointer_expression "*(short *)((int)psVar2 + 5)" * (cast_expression "(short *)((int)psVar2 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2 + 5)" ( (binary_expression "(int)psVar2 + 5" (cast_expression "(int)psVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "iVar8 = iVar11 + 0xa0;" (assignment_expression "iVar8 = iVar11 + 0xa0" identifier = (binary_expression "iVar11 + 0xa0" identifier + number_literal)) ;) }))) (expression_statement "iVar5 = *(int *)(iVar8 + 0x1c);" (assignment_expression "iVar5 = *(int *)(iVar8 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x1c)" * (cast_expression "(int *)(iVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "piVar12[1] = 1;" (assignment_expression "piVar12[1] = 1" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x28] = 1;" (assignment_expression "piVar12[0x28] = 1" (subscript_expression "piVar12[0x28]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[7] = 1;" (assignment_expression "piVar12[7] = 1" (subscript_expression "piVar12[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x26] = 4;" (assignment_expression "piVar12[0x26] = 4" (subscript_expression "piVar12[0x26]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x25] = iVar5 - iVar11;" (assignment_expression "piVar12[0x25] = iVar5 - iVar11" (subscript_expression "piVar12[0x25]" identifier [ number_literal ]) = (binary_expression "iVar5 - iVar11" identifier - identifier)) ;) (expression_statement "*piVar12 = (iVar8 + 0x2c) - iVar5;" (assignment_expression "*piVar12 = (iVar8 + 0x2c) - iVar5" (pointer_expression "*piVar12" * identifier) = (binary_expression "(iVar8 + 0x2c) - iVar5" (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[3] = 1;" (assignment_expression "piVar12[3] = 1" (subscript_expression "piVar12[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[6] = (iVar8 + 0x20) - iVar5;" (assignment_expression "piVar12[6] = (iVar8 + 0x20) - iVar5" (subscript_expression "piVar12[6]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x20) - iVar5" (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[5] = 1;" (assignment_expression "piVar12[5] = 1" (subscript_expression "piVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[2] = (iVar8 + 0x28) - iVar5;" (assignment_expression "piVar12[2] = (iVar8 + 0x28) - iVar5" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x28) - iVar5" (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xd] = 1;" (assignment_expression "piVar12[0xd] = 1" (subscript_expression "piVar12[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[4] = (iVar8 + 0x24) - iVar5;" (assignment_expression "piVar12[4] = (iVar8 + 0x24) - iVar5" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x24) - iVar5" (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xf] = 1;" (assignment_expression "piVar12[0xf] = 1" (subscript_expression "piVar12[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0xc] = (iVar8 + 0x14) - iVar5;" (assignment_expression "piVar12[0xc] = (iVar8 + 0x14) - iVar5" (subscript_expression "piVar12[0xc]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x14) - iVar5" (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xb] = 1;" (assignment_expression "piVar12[0xb] = 1" (subscript_expression "piVar12[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0xe] = (iVar8 + 0x10) - iVar5;" (assignment_expression "piVar12[0xe] = (iVar8 + 0x10) - iVar5" (subscript_expression "piVar12[0xe]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x10) - iVar5" (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0x11] = 1;" (assignment_expression "piVar12[0x11] = 1" (subscript_expression "piVar12[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x10] = (iVar8 + 0x38) - iVar5;" (assignment_expression "piVar12[0x10] = (iVar8 + 0x38) - iVar5" (subscript_expression "piVar12[0x10]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x38) - iVar5" (parenthesized_expression "(iVar8 + 0x38)" ( (binary_expression "iVar8 + 0x38" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[10] = (iVar8 + 0x18) - iVar5;" (assignment_expression "piVar12[10] = (iVar8 + 0x18) - iVar5" (subscript_expression "piVar12[10]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x18) - iVar5" (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0x2d] = 8;" (assignment_expression "piVar12[0x2d] = 8" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xbb)" ( (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar12[0x29] = *(int *)(iVar8 + 0x5c);" (assignment_expression "piVar12[0x29] = *(int *)(iVar8 + 0x5c)" (subscript_expression "piVar12[0x29]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar8 + 0x5c)" * (cast_expression "(int *)(iVar8 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5c)" ( (binary_expression "iVar8 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);" (assignment_expression "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4)" identifier = (binary_expression "(iVar11 + 4) - *(int *)(iVar11 + 4)" (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )) - (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))))) ;) (expression_statement "local_38 = (char *)(iVar5 + 9);" (assignment_expression "local_38 = (char *)(iVar5 + 9)" identifier = (cast_expression "(char *)(iVar5 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 9)" ( (binary_expression "iVar5 + 9" identifier + number_literal) )))) ;) (expression_statement "sVar6 = strlen(local_38);" (assignment_expression "sVar6 = strlen(local_38)" identifier = (call_expression "strlen(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "pbVar7 = (byte *)(iVar5 + 10 + sVar6);" (assignment_expression "pbVar7 = (byte *)(iVar5 + 10 + sVar6)" identifier = (cast_expression "(byte *)(iVar5 + 10 + sVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 10 + sVar6)" ( (binary_expression "iVar5 + 10 + sVar6" (binary_expression "iVar5 + 10" identifier + number_literal) + identifier) )))) ;) (if_statement "if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" if (parenthesized_expression "((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h'))" ( (binary_expression "(*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')" (parenthesized_expression "(*(char *)(iVar5 + 9) == 'e')" ( (binary_expression "*(char *)(iVar5 + 9) == 'e'" (pointer_expression "*(char *)(iVar5 + 9)" * (cast_expression "(char *)(iVar5 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 9)" ( (binary_expression "iVar5 + 9" identifier + number_literal) )))) == (char_literal "'e'" ' character ')) )) && (parenthesized_expression "(*(char *)(iVar5 + 10) == 'h')" ( (binary_expression "*(char *)(iVar5 + 10) == 'h'" (pointer_expression "*(char *)(iVar5 + 10)" * (cast_expression "(char *)(iVar5 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 10)" ( (binary_expression "iVar5 + 10" identifier + number_literal) )))) == (char_literal "'h'" ' character ')) ))) )) (compound_statement "{\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" { (expression_statement "iVar1 = *(int *)pbVar7;" (assignment_expression "iVar1 = *(int *)pbVar7" identifier = (pointer_expression "*(int *)pbVar7" * (cast_expression "(int *)pbVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_38 = (char *)(iVar5 + 0xb);" (assignment_expression "local_38 = (char *)(iVar5 + 0xb)" identifier = (cast_expression "(char *)(iVar5 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xb)" ( (binary_expression "iVar5 + 0xb" identifier + number_literal) )))) ;) (expression_statement "pbVar7 = pbVar7 + 4;" (assignment_expression "pbVar7 = pbVar7 + 4" identifier = (binary_expression "pbVar7 + 4" identifier + number_literal)) ;) (expression_statement "piVar12[0x2f] = iVar1;" (assignment_expression "piVar12[0x2f] = iVar1" (subscript_expression "piVar12[0x2f]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "bVar19 = *(byte *)(iVar5 + 8);" (assignment_expression "bVar19 = *(byte *)(iVar5 + 8)" identifier = (pointer_expression "*(byte *)(iVar5 + 8)" * (cast_expression "(byte *)(iVar5 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (if_statement "if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" if (parenthesized_expression "(3 < bVar19)" ( (binary_expression "3 < bVar19" number_literal < identifier) )) (compound_statement "{\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" { (if_statement "if (bVar10 != 4) {\n      return 3;\n    }" if (parenthesized_expression "(bVar10 != 4)" ( (binary_expression "bVar10 != 4" identifier != number_literal) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) })) (if_statement "if (pbVar7[1] != 0) {\n      return 3;\n    }" if (parenthesized_expression "(pbVar7[1] != 0)" ( (binary_expression "pbVar7[1] != 0" (subscript_expression "pbVar7[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) })) (expression_statement "bVar10 = pbVar7[2];" (assignment_expression "bVar10 = pbVar7[2]" identifier = (subscript_expression "pbVar7[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" identifier = (binary_expression "pbVar7 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" { (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = bVar9 & 0x1f;" (assignment_expression "bVar3 = bVar9 & 0x1f" identifier = (binary_expression "bVar9 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar9 = bVar9 + 7;" (assignment_expression "bVar9 = bVar9 + 7" identifier = (binary_expression "bVar9 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3" identifier = (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar3" identifier | (binary_expression "(bVar10 & 0x7f) << bVar3" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << identifier))) ;) (if_statement "if (-1 < (char)bVar10) break;" if (parenthesized_expression "(-1 < (char)bVar10)" ( (binary_expression "-1 < (char)bVar10" number_literal < (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) })) (expression_statement "piVar12[0x2c] = uVar17;" (assignment_expression "piVar12[0x2c] = uVar17" (subscript_expression "piVar12[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');" do (compound_statement "{\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  }" { (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" identifier = identifier) ;) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar13;" (assignment_expression "bVar10 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "bVar9 = (byte)uVar17;" (assignment_expression "bVar9 = (byte)uVar17" identifier = (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar17 = uVar17 + 7;" (assignment_expression "uVar17 = uVar17 + 7" identifier = (binary_expression "uVar17 + 7" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);" (assignment_expression "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" identifier = (binary_expression "uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" identifier | (binary_expression "(bVar10 & 0x7f) << (bVar9 & 0x1f)" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "((char)bVar10 < '\0')" ( (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" if (parenthesized_expression "((uVar17 < 0x20) && ((bVar10 & 0x40) != 0))" ( (binary_expression "(uVar17 < 0x20) && ((bVar10 & 0x40) != 0)" (parenthesized_expression "(uVar17 < 0x20)" ( (binary_expression "uVar17 < 0x20" identifier < number_literal) )) && (parenthesized_expression "((bVar10 & 0x40) != 0)" ( (binary_expression "(bVar10 & 0x40) != 0" (parenthesized_expression "(bVar10 & 0x40)" ( (binary_expression "bVar10 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" { (expression_statement "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);" (assignment_expression "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f)" identifier = (binary_expression "uVar15 | -1 << ((byte)uVar17 & 0x1f)" identifier | (binary_expression "-1 << ((byte)uVar17 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar17 & 0x1f)" ( (binary_expression "(byte)uVar17 & 0x1f" (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) })) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar12[0x2b] = uVar15;" (assignment_expression "piVar12[0x2b] = uVar15" (subscript_expression "piVar12[0x2b]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" if (parenthesized_expression "(bVar19 == 1)" ( (binary_expression "bVar19 == 1" identifier == number_literal) )) (compound_statement "{\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }" { (expression_statement "pbVar13 = pbVar13 + 2;" (assignment_expression "pbVar13 = pbVar13 + 2" identifier = (binary_expression "pbVar13 + 2" identifier + number_literal)) ;) (expression_statement "piVar12[0x2d] = (uint)*pbVar7;" (assignment_expression "piVar12[0x2d] = (uint)*pbVar7" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" else (compound_statement "{\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');" do (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar7;" (assignment_expression "bVar19 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar9 = bVar10 & 0x1f;" (assignment_expression "bVar9 = bVar10 & 0x1f" identifier = (binary_expression "bVar10 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar10 = bVar10 + 7;" (assignment_expression "bVar10 = bVar10 + 7" identifier = (binary_expression "bVar10 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9" identifier = (binary_expression "uVar17 | (bVar19 & 0x7f) << bVar9" identifier | (binary_expression "(bVar19 & 0x7f) << bVar9" (parenthesized_expression "(bVar19 & 0x7f)" ( (binary_expression "bVar19 & 0x7f" identifier & number_literal) )) << identifier))) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar19 < '\0')" ( (binary_expression "(char)bVar19 < '\0'" (cast_expression "(char)bVar19" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "piVar12[0x2d] = uVar17;" (assignment_expression "piVar12[0x2d] = uVar17" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xb9)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xb9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)0x0;" (assignment_expression "pbVar7 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (if_statement "if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" if (parenthesized_expression "(cVar4 == 'z')" ( (binary_expression "cVar4 == 'z'" identifier == (char_literal "'z'" ' character ')) )) (compound_statement "{\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" { (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');" do (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar9 = bVar19 & 0x1f;" (assignment_expression "bVar9 = bVar19 & 0x1f" identifier = (binary_expression "bVar19 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar19 = bVar19 + 7;" (assignment_expression "bVar19 = bVar19 + 7" identifier = (binary_expression "bVar19 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9" identifier = (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar9" identifier | (binary_expression "(bVar10 & 0x7f) << bVar9" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << identifier))) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar10 < '\0')" ( (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pbVar7 = pbVar13 + uVar17;" (assignment_expression "pbVar7 = pbVar13 + uVar17" identifier = (binary_expression "pbVar13 + uVar17" identifier + identifier)) ;) (expression_statement "*(undefined1 *)((int)piVar12 + 0xba) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xba) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xba)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xba)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xba)" ( (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (while_statement "while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" while (parenthesized_expression "(local_38 = local_38 + 1, cVar4 != '\0')" ( (comma_expression "local_38 = local_38 + 1, cVar4 != '\0'" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) , (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" { (if_statement "if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'L')" ( (binary_expression "cVar4 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }" { (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)piVar12 + 0xb9) = bVar19;" (assignment_expression "*(byte *)((int)piVar12 + 0xb9) = bVar19" (pointer_expression "*(byte *)((int)piVar12 + 0xb9)" * (cast_expression "(byte *)((int)piVar12 + 0xb9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }) (else_clause "else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (if_statement "if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'R')" ( (binary_expression "cVar4 == 'R'" identifier == (char_literal "'R'" ' character ')) )) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }" { (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(piVar12 + 0x2e) = bVar19;" (assignment_expression "*(byte *)(piVar12 + 0x2e) = bVar19" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (if_statement "if (cVar4 == 'P') {\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'P')" ( (binary_expression "cVar4 == 'P'" identifier == (char_literal "'P'" ' character ')) )) (compound_statement "{\n      base_of_encoded_value();\n      pbVar13 = (byte *)read_encoded_value_with_base(local_20);\n      piVar12[0x2a] = local_20[0];\n    }" { (expression_statement "base_of_encoded_value();" (call_expression "base_of_encoded_value()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar13 = (byte *)read_encoded_value_with_base(local_20);" (assignment_expression "pbVar13 = (byte *)read_encoded_value_with_base(local_20)" identifier = (cast_expression "(byte *)read_encoded_value_with_base(local_20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "read_encoded_value_with_base(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "piVar12[0x2a] = local_20[0];" (assignment_expression "piVar12[0x2a] = local_20[0]" (subscript_expression "piVar12[0x2a]" identifier [ number_literal ]) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (compound_statement "{\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" { (expression_statement "pbVar16 = pbVar7;" (assignment_expression "pbVar16 = pbVar7" identifier = identifier) ;) (if_statement "if (cVar4 != 'S') goto LAB_0027c844;" if (parenthesized_expression "(cVar4 != 'S')" ( (binary_expression "cVar4 != 'S'" identifier != (char_literal "'S'" ' character ')) )) (goto_statement "goto LAB_0027c844;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xbb)" ( (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))))))) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (expression_statement "pbVar16 = pbVar13;" (assignment_expression "pbVar16 = pbVar13" identifier = identifier) ;) (if_statement "if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" if (parenthesized_expression "(pbVar7 == (byte *)0x0)" ( (binary_expression "pbVar7 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" { (labeled_statement "LAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" statement_identifier : (if_statement "if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" if (parenthesized_expression "(pbVar16 == (byte *)0x0)" ( (binary_expression "pbVar16 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) }))) })) (expression_statement "execute_cfa_program(piVar12);" (call_expression "execute_cfa_program(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;) (if_statement "if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" if (parenthesized_expression "(*(byte *)(piVar12 + 0x2e) == 0xff)" ( (binary_expression "*(byte *)(piVar12 + 0x2e) == 0xff" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar5 = 8;\n  }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) }) (else_clause "else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" else (compound_statement "{\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" { (expression_statement "bVar19 = *(byte *)(piVar12 + 0x2e) & 7;" (assignment_expression "bVar19 = *(byte *)(piVar12 + 0x2e) & 7" identifier = (binary_expression "*(byte *)(piVar12 + 0x2e) & 7" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" if (parenthesized_expression "(bVar19 == 2)" ( (binary_expression "bVar19 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar5 = 0xc;\n    }" { (expression_statement "iVar5 = 0xc;" (assignment_expression "iVar5 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" else (compound_statement "{\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" { (if_statement "if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" if (parenthesized_expression "(bVar19 < 3)" ( (binary_expression "bVar19 < 3" identifier < number_literal) )) (compound_statement "{\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }\n      }" { (if_statement "if (bVar19 != 0) {\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" if (parenthesized_expression "(bVar19 != 0)" ( (binary_expression "bVar19 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();\n        }" { (labeled_statement "LAB_0027c97e:\n                    /* WARNING: Subroutine does not return */\n          abort();" statement_identifier : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }) (else_clause "else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" else (if_statement "if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" if (parenthesized_expression "(bVar19 != 3)" ( (binary_expression "bVar19 != 3" identifier != number_literal) )) (compound_statement "{\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" { (if_statement "if (bVar19 != 4) goto LAB_0027c97e;" if (parenthesized_expression "(bVar19 != 4)" ( (binary_expression "bVar19 != 4" identifier != number_literal) )) (goto_statement "goto LAB_0027c97e;" goto statement_identifier ;)) (expression_statement "iVar5 = 0x18;" (assignment_expression "iVar5 = 0x18" identifier = number_literal) ;) (goto_statement "goto LAB_0027c6ff;" goto statement_identifier ;) })))) (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);" statement_identifier : (expression_statement "pcVar14 = (char *)(iVar5 + iVar11);" (assignment_expression "pcVar14 = (char *)(iVar5 + iVar11)" identifier = (cast_expression "(char *)(iVar5 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar11)" ( (binary_expression "iVar5 + iVar11" identifier + identifier) )))) ;)) (if_statement "if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" if (parenthesized_expression "(*(char *)((int)piVar12 + 0xba) != '\0')" ( (binary_expression "*(char *)((int)piVar12 + 0xba) != '\0'" (pointer_expression "*(char *)((int)piVar12 + 0xba)" * (cast_expression "(char *)((int)piVar12 + 0xba)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xba)" ( (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" { (do_statement "do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');" do (compound_statement "{\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    }" { (expression_statement "cVar4 = *pcVar14;" (assignment_expression "cVar4 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar4 < '\0')" ( (binary_expression "cVar4 < '\0'" identifier < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    base_of_encoded_value();\n    read_encoded_value_with_base(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" if (parenthesized_expression "(*(char *)((int)piVar12 + 0xb9) != -1)" ( (binary_expression "*(char *)((int)piVar12 + 0xb9) != -1" (pointer_expression "*(char *)((int)piVar12 + 0xb9)" * (cast_expression "(char *)((int)piVar12 + 0xb9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    base_of_encoded_value();\n    read_encoded_value_with_base(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" { (expression_statement "base_of_encoded_value();" (call_expression "base_of_encoded_value()" identifier (argument_list "()" ( ))) ;) (expression_statement "read_encoded_value_with_base(local_20);" (call_expression "read_encoded_value_with_base(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "*(int *)(iVar8 + 0x50) = local_20[0];" (assignment_expression "*(int *)(iVar8 + 0x50) = local_20[0]" (pointer_expression "*(int *)(iVar8 + 0x50)" * (cast_expression "(int *)(iVar8 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) })) (expression_statement "execute_cfa_program(piVar12);" (call_expression "execute_cfa_program(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_0027c430(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_0027c430(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}" type_identifier (function_declarator "FUN_0027c430(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "short *psVar2;" (sized_type_specifier "short" short) (pointer_declarator "*psVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "int extraout_ECX;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int *piVar12;" primitive_type (pointer_declarator "*piVar12" * identifier) ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int *piVar18;" primitive_type (pointer_declarator "*piVar18" * identifier) ;) (declaration "byte bVar19;" type_identifier identifier ;) (declaration "undefined8 uVar20;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_20 [4];" primitive_type (array_declarator "local_20 [4]" identifier [ number_literal ]) ;) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar20 = FUN_000559ee();" (assignment_expression "uVar20 = FUN_000559ee()" identifier = (call_expression "FUN_000559ee()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar12 = (int *)((ulonglong)uVar20 >> 0x20);" (assignment_expression "piVar12 = (int *)((ulonglong)uVar20 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar20 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar20 >> 0x20)" ( (binary_expression "(ulonglong)uVar20 >> 0x20" (cast_expression "(ulonglong)uVar20" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar8 = (int)uVar20;" (assignment_expression "iVar8 = (int)uVar20" identifier = (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar18 = piVar12;" (assignment_expression "piVar18 = piVar12" identifier = identifier) ;) (for_statement "for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" for ( (assignment_expression "iVar11 = extraout_ECX" identifier = identifier) ; (binary_expression "iVar11 != 0" identifier != number_literal) ; (assignment_expression "iVar11 = iVar11 + -1" identifier = (binary_expression "iVar11 + -1" identifier + number_literal)) ) (compound_statement "{\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" { (expression_statement "*piVar18 = 0;" (assignment_expression "*piVar18 = 0" (pointer_expression "*piVar18" * identifier) = number_literal) ;) (expression_statement "piVar18 = piVar18 + (uint)bVar19 * -2 + 1;" (assignment_expression "piVar18 = piVar18 + (uint)bVar19 * -2 + 1" identifier = (binary_expression "piVar18 + (uint)bVar19 * -2 + 1" (binary_expression "piVar18 + (uint)bVar19 * -2" identifier + (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*(undefined4 *)(iVar8 + 0x68) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x68) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x68)" * (cast_expression "(undefined4 *)(iVar8 + 0x68)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x68)" ( (binary_expression "iVar8 + 0x68" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar8 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x50) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x50)" * (cast_expression "(undefined4 *)(iVar8 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }" if (parenthesized_expression "(*(int *)(iVar8 + 0x4c) == 0)" ( (binary_expression "*(int *)(iVar8 + 0x4c) == 0" (pointer_expression "*(int *)(iVar8 + 0x4c)" * (cast_expression "(int *)(iVar8 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    return 5;\n  }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);" (assignment_expression "iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" identifier = (call_expression "FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" identifier (argument_list "((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" ( (binary_expression "(*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f)" (parenthesized_expression "(*(int *)(iVar8 + 0x4c) + -1)" ( (binary_expression "*(int *)(iVar8 + 0x4c) + -1" (pointer_expression "*(int *)(iVar8 + 0x4c)" * (cast_expression "(int *)(iVar8 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) )))) + number_literal) )) - (parenthesized_expression "(*(int *)(iVar8 + 0x60) >> 0x1f)" ( (binary_expression "*(int *)(iVar8 + 0x60) >> 0x1f" (pointer_expression "*(int *)(iVar8 + 0x60)" * (cast_expression "(int *)(iVar8 + 0x60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x60)" ( (binary_expression "iVar8 + 0x60" identifier + number_literal) )))) >> number_literal) ))) , (binary_expression "iVar8 + 0x54" identifier + number_literal) )))) ;) (if_statement "if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" { (expression_statement "iVar11 = *(int *)(iVar8 + 0x48);" (assignment_expression "iVar11 = *(int *)(iVar8 + 0x48)" identifier = (pointer_expression "*(int *)(iVar8 + 0x48)" * (cast_expression "(int *)(iVar8 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x48)" ( (binary_expression "iVar8 + 0x48" identifier + number_literal) ))))) ;) (expression_statement "psVar2 = *(short **)(iVar8 + 0x4c);" (assignment_expression "psVar2 = *(short **)(iVar8 + 0x4c)" identifier = (pointer_expression "*(short **)(iVar8 + 0x4c)" * (cast_expression "(short **)(iVar8 + 0x4c)" ( (type_descriptor "short **" (sized_type_specifier "short" short) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x4c)" ( (binary_expression "iVar8 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" if (parenthesized_expression "(((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33))" ( (binary_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)" (parenthesized_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77))" ( (binary_expression "(*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)" (parenthesized_expression "(*psVar2 == -0x47a8)" ( (binary_expression "*psVar2 == -0x47a8" (pointer_expression "*psVar2" * identifier) == number_literal) )) && (parenthesized_expression "(*(int *)(psVar2 + 1) == 0x77)" ( (binary_expression "*(int *)(psVar2 + 1) == 0x77" (pointer_expression "*(int *)(psVar2 + 1)" * (cast_expression "(int *)(psVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar2 + 1)" ( (binary_expression "psVar2 + 1" identifier + number_literal) )))) == number_literal) ))) )) && (parenthesized_expression "(psVar2[3] == -0x7f33)" ( (binary_expression "psVar2[3] == -0x7f33" (subscript_expression "psVar2[3]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      iVar8 = iVar11 + 4;\n    }" { (expression_statement "iVar8 = iVar11 + 4;" (assignment_expression "iVar8 = iVar11 + 4" identifier = (binary_expression "iVar11 + 4" identifier + number_literal)) ;) }) (else_clause "else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" else (compound_statement "{\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" { (if_statement "if ((char)*psVar2 != -0x48) {\n        return 5;\n      }" if (parenthesized_expression "((char)*psVar2 != -0x48)" ( (binary_expression "(char)*psVar2 != -0x48" (cast_expression "(char)*psVar2" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*psVar2" * identifier)) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }" if (parenthesized_expression "(*(int *)((int)psVar2 + 1) != 0xad)" ( (binary_expression "*(int *)((int)psVar2 + 1) != 0xad" (pointer_expression "*(int *)((int)psVar2 + 1)" * (cast_expression "(int *)((int)psVar2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2 + 1)" ( (binary_expression "(int)psVar2 + 1" (cast_expression "(int)psVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (if_statement "if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }" if (parenthesized_expression "(*(short *)((int)psVar2 + 5) != -0x7f33)" ( (binary_expression "*(short *)((int)psVar2 + 5) != -0x7f33" (pointer_expression "*(short *)((int)psVar2 + 5)" * (cast_expression "(short *)((int)psVar2 + 5)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)psVar2 + 5)" ( (binary_expression "(int)psVar2 + 5" (cast_expression "(int)psVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n        return 5;\n      }" { (return_statement "return 5;" return number_literal ;) })) (expression_statement "iVar8 = iVar11 + 0xa0;" (assignment_expression "iVar8 = iVar11 + 0xa0" identifier = (binary_expression "iVar11 + 0xa0" identifier + number_literal)) ;) }))) (expression_statement "iVar5 = *(int *)(iVar8 + 0x1c);" (assignment_expression "iVar5 = *(int *)(iVar8 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar8 + 0x1c)" * (cast_expression "(int *)(iVar8 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1c)" ( (binary_expression "iVar8 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "piVar12[1] = 1;" (assignment_expression "piVar12[1] = 1" (subscript_expression "piVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x28] = 1;" (assignment_expression "piVar12[0x28] = 1" (subscript_expression "piVar12[0x28]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[7] = 1;" (assignment_expression "piVar12[7] = 1" (subscript_expression "piVar12[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x26] = 4;" (assignment_expression "piVar12[0x26] = 4" (subscript_expression "piVar12[0x26]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x25] = iVar5 - iVar11;" (assignment_expression "piVar12[0x25] = iVar5 - iVar11" (subscript_expression "piVar12[0x25]" identifier [ number_literal ]) = (binary_expression "iVar5 - iVar11" identifier - identifier)) ;) (expression_statement "*piVar12 = (iVar8 + 0x2c) - iVar5;" (assignment_expression "*piVar12 = (iVar8 + 0x2c) - iVar5" (pointer_expression "*piVar12" * identifier) = (binary_expression "(iVar8 + 0x2c) - iVar5" (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[3] = 1;" (assignment_expression "piVar12[3] = 1" (subscript_expression "piVar12[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[6] = (iVar8 + 0x20) - iVar5;" (assignment_expression "piVar12[6] = (iVar8 + 0x20) - iVar5" (subscript_expression "piVar12[6]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x20) - iVar5" (parenthesized_expression "(iVar8 + 0x20)" ( (binary_expression "iVar8 + 0x20" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[5] = 1;" (assignment_expression "piVar12[5] = 1" (subscript_expression "piVar12[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[2] = (iVar8 + 0x28) - iVar5;" (assignment_expression "piVar12[2] = (iVar8 + 0x28) - iVar5" (subscript_expression "piVar12[2]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x28) - iVar5" (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xd] = 1;" (assignment_expression "piVar12[0xd] = 1" (subscript_expression "piVar12[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[4] = (iVar8 + 0x24) - iVar5;" (assignment_expression "piVar12[4] = (iVar8 + 0x24) - iVar5" (subscript_expression "piVar12[4]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x24) - iVar5" (parenthesized_expression "(iVar8 + 0x24)" ( (binary_expression "iVar8 + 0x24" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xf] = 1;" (assignment_expression "piVar12[0xf] = 1" (subscript_expression "piVar12[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0xc] = (iVar8 + 0x14) - iVar5;" (assignment_expression "piVar12[0xc] = (iVar8 + 0x14) - iVar5" (subscript_expression "piVar12[0xc]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x14) - iVar5" (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0xb] = 1;" (assignment_expression "piVar12[0xb] = 1" (subscript_expression "piVar12[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0xe] = (iVar8 + 0x10) - iVar5;" (assignment_expression "piVar12[0xe] = (iVar8 + 0x10) - iVar5" (subscript_expression "piVar12[0xe]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x10) - iVar5" (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0x11] = 1;" (assignment_expression "piVar12[0x11] = 1" (subscript_expression "piVar12[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar12[0x10] = (iVar8 + 0x38) - iVar5;" (assignment_expression "piVar12[0x10] = (iVar8 + 0x38) - iVar5" (subscript_expression "piVar12[0x10]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x38) - iVar5" (parenthesized_expression "(iVar8 + 0x38)" ( (binary_expression "iVar8 + 0x38" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[10] = (iVar8 + 0x18) - iVar5;" (assignment_expression "piVar12[10] = (iVar8 + 0x18) - iVar5" (subscript_expression "piVar12[10]" identifier [ number_literal ]) = (binary_expression "(iVar8 + 0x18) - iVar5" (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) )) - identifier)) ;) (expression_statement "piVar12[0x2d] = 8;" (assignment_expression "piVar12[0x2d] = 8" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xbb)" ( (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar12[0x29] = *(int *)(iVar8 + 0x5c);" (assignment_expression "piVar12[0x29] = *(int *)(iVar8 + 0x5c)" (subscript_expression "piVar12[0x29]" identifier [ number_literal ]) = (pointer_expression "*(int *)(iVar8 + 0x5c)" * (cast_expression "(int *)(iVar8 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x5c)" ( (binary_expression "iVar8 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);" (assignment_expression "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4)" identifier = (binary_expression "(iVar11 + 4) - *(int *)(iVar11 + 4)" (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )) - (pointer_expression "*(int *)(iVar11 + 4)" * (cast_expression "(int *)(iVar11 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) )))))) ;) (expression_statement "local_38 = (char *)(iVar5 + 9);" (assignment_expression "local_38 = (char *)(iVar5 + 9)" identifier = (cast_expression "(char *)(iVar5 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 9)" ( (binary_expression "iVar5 + 9" identifier + number_literal) )))) ;) (expression_statement "sVar6 = strlen(local_38);" (assignment_expression "sVar6 = strlen(local_38)" identifier = (call_expression "strlen(local_38)" identifier (argument_list "(local_38)" ( identifier )))) ;) (expression_statement "pbVar7 = (byte *)(iVar5 + 10 + sVar6);" (assignment_expression "pbVar7 = (byte *)(iVar5 + 10 + sVar6)" identifier = (cast_expression "(byte *)(iVar5 + 10 + sVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 10 + sVar6)" ( (binary_expression "iVar5 + 10 + sVar6" (binary_expression "iVar5 + 10" identifier + number_literal) + identifier) )))) ;) (if_statement "if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" if (parenthesized_expression "((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h'))" ( (binary_expression "(*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')" (parenthesized_expression "(*(char *)(iVar5 + 9) == 'e')" ( (binary_expression "*(char *)(iVar5 + 9) == 'e'" (pointer_expression "*(char *)(iVar5 + 9)" * (cast_expression "(char *)(iVar5 + 9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 9)" ( (binary_expression "iVar5 + 9" identifier + number_literal) )))) == (char_literal "'e'" ' character ')) )) && (parenthesized_expression "(*(char *)(iVar5 + 10) == 'h')" ( (binary_expression "*(char *)(iVar5 + 10) == 'h'" (pointer_expression "*(char *)(iVar5 + 10)" * (cast_expression "(char *)(iVar5 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 10)" ( (binary_expression "iVar5 + 10" identifier + number_literal) )))) == (char_literal "'h'" ' character ')) ))) )) (compound_statement "{\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" { (expression_statement "iVar1 = *(int *)pbVar7;" (assignment_expression "iVar1 = *(int *)pbVar7" identifier = (pointer_expression "*(int *)pbVar7" * (cast_expression "(int *)pbVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_38 = (char *)(iVar5 + 0xb);" (assignment_expression "local_38 = (char *)(iVar5 + 0xb)" identifier = (cast_expression "(char *)(iVar5 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0xb)" ( (binary_expression "iVar5 + 0xb" identifier + number_literal) )))) ;) (expression_statement "pbVar7 = pbVar7 + 4;" (assignment_expression "pbVar7 = pbVar7 + 4" identifier = (binary_expression "pbVar7 + 4" identifier + number_literal)) ;) (expression_statement "piVar12[0x2f] = iVar1;" (assignment_expression "piVar12[0x2f] = iVar1" (subscript_expression "piVar12[0x2f]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "bVar19 = *(byte *)(iVar5 + 8);" (assignment_expression "bVar19 = *(byte *)(iVar5 + 8)" identifier = (pointer_expression "*(byte *)(iVar5 + 8)" * (cast_expression "(byte *)(iVar5 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (if_statement "if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" if (parenthesized_expression "(3 < bVar19)" ( (binary_expression "3 < bVar19" number_literal < identifier) )) (compound_statement "{\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" { (if_statement "if (bVar10 != 4) {\n      return 3;\n    }" if (parenthesized_expression "(bVar10 != 4)" ( (binary_expression "bVar10 != 4" identifier != number_literal) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) })) (if_statement "if (pbVar7[1] != 0) {\n      return 3;\n    }" if (parenthesized_expression "(pbVar7[1] != 0)" ( (binary_expression "pbVar7[1] != 0" (subscript_expression "pbVar7[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) })) (expression_statement "bVar10 = pbVar7[2];" (assignment_expression "bVar10 = pbVar7[2]" identifier = (subscript_expression "pbVar7[2]" identifier [ number_literal ])) ;) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" identifier = (binary_expression "pbVar7 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (while_statement "while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" { (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = bVar9 & 0x1f;" (assignment_expression "bVar3 = bVar9 & 0x1f" identifier = (binary_expression "bVar9 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar9 = bVar9 + 7;" (assignment_expression "bVar9 = bVar9 + 7" identifier = (binary_expression "bVar9 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3" identifier = (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar3" identifier | (binary_expression "(bVar10 & 0x7f) << bVar3" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << identifier))) ;) (if_statement "if (-1 < (char)bVar10) break;" if (parenthesized_expression "(-1 < (char)bVar10)" ( (binary_expression "-1 < (char)bVar10" number_literal < (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) })) (expression_statement "piVar12[0x2c] = uVar17;" (assignment_expression "piVar12[0x2c] = uVar17" (subscript_expression "piVar12[0x2c]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');" do (compound_statement "{\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  }" { (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" identifier = identifier) ;) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar13;" (assignment_expression "bVar10 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "bVar9 = (byte)uVar17;" (assignment_expression "bVar9 = (byte)uVar17" identifier = (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "uVar17 = uVar17 + 7;" (assignment_expression "uVar17 = uVar17 + 7" identifier = (binary_expression "uVar17 + 7" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);" (assignment_expression "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" identifier = (binary_expression "uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" identifier | (binary_expression "(bVar10 & 0x7f) << (bVar9 & 0x1f)" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "(bVar9 & 0x1f)" ( (binary_expression "bVar9 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "((char)bVar10 < '\0')" ( (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" if (parenthesized_expression "((uVar17 < 0x20) && ((bVar10 & 0x40) != 0))" ( (binary_expression "(uVar17 < 0x20) && ((bVar10 & 0x40) != 0)" (parenthesized_expression "(uVar17 < 0x20)" ( (binary_expression "uVar17 < 0x20" identifier < number_literal) )) && (parenthesized_expression "((bVar10 & 0x40) != 0)" ( (binary_expression "(bVar10 & 0x40) != 0" (parenthesized_expression "(bVar10 & 0x40)" ( (binary_expression "bVar10 & 0x40" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" { (expression_statement "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);" (assignment_expression "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f)" identifier = (binary_expression "uVar15 | -1 << ((byte)uVar17 & 0x1f)" identifier | (binary_expression "-1 << ((byte)uVar17 & 0x1f)" number_literal << (parenthesized_expression "((byte)uVar17 & 0x1f)" ( (binary_expression "(byte)uVar17 & 0x1f" (cast_expression "(byte)uVar17" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) ))))) ;) })) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) (expression_statement "piVar12[0x2b] = uVar15;" (assignment_expression "piVar12[0x2b] = uVar15" (subscript_expression "piVar12[0x2b]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" if (parenthesized_expression "(bVar19 == 1)" ( (binary_expression "bVar19 == 1" identifier == number_literal) )) (compound_statement "{\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }" { (expression_statement "pbVar13 = pbVar13 + 2;" (assignment_expression "pbVar13 = pbVar13 + 2" identifier = (binary_expression "pbVar13 + 2" identifier + number_literal)) ;) (expression_statement "piVar12[0x2d] = (uint)*pbVar7;" (assignment_expression "piVar12[0x2d] = (uint)*pbVar7" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" else (compound_statement "{\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');" do (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar7;" (assignment_expression "bVar19 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar9 = bVar10 & 0x1f;" (assignment_expression "bVar9 = bVar10 & 0x1f" identifier = (binary_expression "bVar10 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar10 = bVar10 + 7;" (assignment_expression "bVar10 = bVar10 + 7" identifier = (binary_expression "bVar10 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9" identifier = (binary_expression "uVar17 | (bVar19 & 0x7f) << bVar9" identifier | (binary_expression "(bVar19 & 0x7f) << bVar9" (parenthesized_expression "(bVar19 & 0x7f)" ( (binary_expression "bVar19 & 0x7f" identifier & number_literal) )) << identifier))) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar19 < '\0')" ( (binary_expression "(char)bVar19 < '\0'" (cast_expression "(char)bVar19" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "piVar12[0x2d] = uVar17;" (assignment_expression "piVar12[0x2d] = uVar17" (subscript_expression "piVar12[0x2d]" identifier [ number_literal ]) = identifier) ;) }))) (expression_statement "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xb9)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xb9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)0x0;" (assignment_expression "pbVar7 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) (if_statement "if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" if (parenthesized_expression "(cVar4 == 'z')" ( (binary_expression "cVar4 == 'z'" identifier == (char_literal "'z'" ' character ')) )) (compound_statement "{\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" { (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');" do (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" { (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" identifier = (pointer_expression "*pbVar7" * identifier)) ;) (expression_statement "bVar9 = bVar19 & 0x1f;" (assignment_expression "bVar9 = bVar19 & 0x1f" identifier = (binary_expression "bVar19 & 0x1f" identifier & number_literal)) ;) (expression_statement "bVar19 = bVar19 + 7;" (assignment_expression "bVar19 = bVar19 + 7" identifier = (binary_expression "bVar19 + 7" identifier + number_literal)) ;) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9" identifier = (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar9" identifier | (binary_expression "(bVar10 & 0x7f) << bVar9" (parenthesized_expression "(bVar10 & 0x7f)" ( (binary_expression "bVar10 & 0x7f" identifier & number_literal) )) << identifier))) ;) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" identifier = identifier) ;) }) while (parenthesized_expression "((char)bVar10 < '\0')" ( (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) ;) (expression_statement "pbVar7 = pbVar13 + uVar17;" (assignment_expression "pbVar7 = pbVar13 + uVar17" identifier = (binary_expression "pbVar13 + uVar17" identifier + identifier)) ;) (expression_statement "*(undefined1 *)((int)piVar12 + 0xba) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xba) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xba)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xba)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xba)" ( (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (while_statement "while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" while (parenthesized_expression "(local_38 = local_38 + 1, cVar4 != '\0')" ( (comma_expression "local_38 = local_38 + 1, cVar4 != '\0'" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) , (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence '))) )) (compound_statement "{\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" { (if_statement "if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'L')" ( (binary_expression "cVar4 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }" { (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)((int)piVar12 + 0xb9) = bVar19;" (assignment_expression "*(byte *)((int)piVar12 + 0xb9) = bVar19" (pointer_expression "*(byte *)((int)piVar12 + 0xb9)" * (cast_expression "(byte *)((int)piVar12 + 0xb9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }) (else_clause "else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (if_statement "if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'R')" ( (binary_expression "cVar4 == 'R'" identifier == (char_literal "'R'" ' character ')) )) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }" { (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "*(byte *)(piVar12 + 0x2e) = bVar19;" (assignment_expression "*(byte *)(piVar12 + 0x2e) = bVar19" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (if_statement "if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" if (parenthesized_expression "(cVar4 == 'P')" ( (binary_expression "cVar4 == 'P'" identifier == (char_literal "'P'" ' character ')) )) (compound_statement "{\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }" { (expression_statement "FUN_0027bae0();" (call_expression "FUN_0027bae0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar13 = (byte *)FUN_0027b990(local_20);" (assignment_expression "pbVar13 = (byte *)FUN_0027b990(local_20)" identifier = (cast_expression "(byte *)FUN_0027b990(local_20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0027b990(local_20)" identifier (argument_list "(local_20)" ( identifier ))))) ;) (expression_statement "piVar12[0x2a] = local_20[0];" (assignment_expression "piVar12[0x2a] = local_20[0]" (subscript_expression "piVar12[0x2a]" identifier [ number_literal ]) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) }) (else_clause "else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" else (compound_statement "{\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" { (expression_statement "pbVar16 = pbVar7;" (assignment_expression "pbVar16 = pbVar7" identifier = identifier) ;) (if_statement "if (cVar4 != 'S') goto LAB_0027c844;" if (parenthesized_expression "(cVar4 != 'S')" ( (binary_expression "cVar4 != 'S'" identifier != (char_literal "'S'" ' character ')) )) (goto_statement "goto LAB_0027c844;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" * (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xbb)" ( (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))))))) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" identifier = (pointer_expression "*local_38" * identifier)) ;) })) (expression_statement "pbVar16 = pbVar13;" (assignment_expression "pbVar16 = pbVar13" identifier = identifier) ;) (if_statement "if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" if (parenthesized_expression "(pbVar7 == (byte *)0x0)" ( (binary_expression "pbVar7 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" { (labeled_statement "LAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" statement_identifier : (if_statement "if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" if (parenthesized_expression "(pbVar16 == (byte *)0x0)" ( (binary_expression "pbVar16 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 3;\n    }" { (return_statement "return 3;" return number_literal ;) }))) })) (expression_statement "FUN_0027bb40(piVar12);" (call_expression "FUN_0027bb40(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;) (if_statement "if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" if (parenthesized_expression "(*(byte *)(piVar12 + 0x2e) == 0xff)" ( (binary_expression "*(byte *)(piVar12 + 0x2e) == 0xff" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    iVar5 = 8;\n  }" { (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" identifier = number_literal) ;) }) (else_clause "else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" else (compound_statement "{\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" { (expression_statement "bVar19 = *(byte *)(piVar12 + 0x2e) & 7;" (assignment_expression "bVar19 = *(byte *)(piVar12 + 0x2e) & 7" identifier = (binary_expression "*(byte *)(piVar12 + 0x2e) & 7" (pointer_expression "*(byte *)(piVar12 + 0x2e)" * (cast_expression "(byte *)(piVar12 + 0x2e)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar12 + 0x2e)" ( (binary_expression "piVar12 + 0x2e" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" if (parenthesized_expression "(bVar19 == 2)" ( (binary_expression "bVar19 == 2" identifier == number_literal) )) (compound_statement "{\n      iVar5 = 0xc;\n    }" { (expression_statement "iVar5 = 0xc;" (assignment_expression "iVar5 = 0xc" identifier = number_literal) ;) }) (else_clause "else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" else (compound_statement "{\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" { (if_statement "if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" if (parenthesized_expression "(bVar19 < 3)" ( (binary_expression "bVar19 < 3" identifier < number_literal) )) (compound_statement "{\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }" { (if_statement "if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }" if (parenthesized_expression "(bVar19 != 0)" ( (binary_expression "bVar19 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0027c97e:\n                    \n          abort();\n        }" { (labeled_statement "LAB_0027c97e:\n                    \n          abort();" statement_identifier : (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) }) (else_clause "else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" else (if_statement "if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" if (parenthesized_expression "(bVar19 != 3)" ( (binary_expression "bVar19 != 3" identifier != number_literal) )) (compound_statement "{\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" { (if_statement "if (bVar19 != 4) goto LAB_0027c97e;" if (parenthesized_expression "(bVar19 != 4)" ( (binary_expression "bVar19 != 4" identifier != number_literal) )) (goto_statement "goto LAB_0027c97e;" goto statement_identifier ;)) (expression_statement "iVar5 = 0x18;" (assignment_expression "iVar5 = 0x18" identifier = number_literal) ;) (goto_statement "goto LAB_0027c6ff;" goto statement_identifier ;) })))) (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" identifier = number_literal) ;) }))) }))) (labeled_statement "LAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);" statement_identifier : (expression_statement "pcVar14 = (char *)(iVar5 + iVar11);" (assignment_expression "pcVar14 = (char *)(iVar5 + iVar11)" identifier = (cast_expression "(char *)(iVar5 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + iVar11)" ( (binary_expression "iVar5 + iVar11" identifier + identifier) )))) ;)) (if_statement "if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" if (parenthesized_expression "(*(char *)((int)piVar12 + 0xba) != '\0')" ( (binary_expression "*(char *)((int)piVar12 + 0xba) != '\0'" (pointer_expression "*(char *)((int)piVar12 + 0xba)" * (cast_expression "(char *)((int)piVar12 + 0xba)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xba)" ( (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" { (do_statement "do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');" do (compound_statement "{\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    }" { (expression_statement "cVar4 = *pcVar14;" (assignment_expression "cVar4 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(cVar4 < '\0')" ( (binary_expression "cVar4 < '\0'" identifier < (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" if (parenthesized_expression "(*(char *)((int)piVar12 + 0xb9) != -1)" ( (binary_expression "*(char *)((int)piVar12 + 0xb9) != -1" (pointer_expression "*(char *)((int)piVar12 + 0xb9)" * (cast_expression "(char *)((int)piVar12 + 0xb9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar12 + 0xb9)" ( (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" { (expression_statement "FUN_0027bae0();" (call_expression "FUN_0027bae0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_0027b990(local_20);" (call_expression "FUN_0027b990(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "*(int *)(iVar8 + 0x50) = local_20[0];" (assignment_expression "*(int *)(iVar8 + 0x50) = local_20[0]" (pointer_expression "*(int *)(iVar8 + 0x50)" * (cast_expression "(int *)(iVar8 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x50)" ( (binary_expression "iVar8 + 0x50" identifier + number_literal) )))) = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) })) (expression_statement "FUN_0027bb40(piVar12);" (call_expression "FUN_0027bb40(piVar12)" identifier (argument_list "(piVar12)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = IDENT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )) - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) ))) , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression LIT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != (char_literal ' escape_sequence '))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) }))))))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) }))) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (char_literal ' escape_sequence ')) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0027c430(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_0027c430(void)" (identifier "FUN_0027c430") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int iVar1;\n  short *psVar2;\n  byte bVar3;\n  char cVar4;\n  int iVar5;\n  size_t sVar6;\n  byte *pbVar7;\n  int iVar8;\n  byte bVar9;\n  byte bVar10;\n  int extraout_ECX;\n  int iVar11;\n  int *piVar12;\n  byte *pbVar13;\n  char *pcVar14;\n  uint uVar15;\n  byte *pbVar16;\n  uint uVar17;\n  int *piVar18;\n  byte bVar19;\n  undefined8 uVar20;\n  char *local_38;\n  int local_20 [4];\n  \n  bVar19 = 0;\n  uVar20 = FUN_000559ee();\n  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);\n  iVar8 = (int)uVar20;\n  piVar18 = piVar12;\n  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }\n  *(undefined4 *)(iVar8 + 0x68) = 0;\n  *(undefined4 *)(iVar8 + 0x50) = 0;\n  if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }\n  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);\n  if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }\n  piVar12[0x29] = *(int *)(iVar8 + 0x5c);\n  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);\n  local_38 = (char *)(iVar5 + 9);\n  sVar6 = strlen(local_38);\n  pbVar7 = (byte *)(iVar5 + 10 + sVar6);\n  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }\n  bVar19 = *(byte *)(iVar5 + 8);\n  bVar10 = *pbVar7;\n  if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }\n  uVar17 = 0;\n  bVar9 = 0;\n  while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }\n  piVar12[0x2c] = uVar17;\n  uVar15 = 0;\n  uVar17 = 0;\n  do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');\n  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }\n  bVar10 = 0;\n  piVar12[0x2b] = uVar15;\n  if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }\n  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;\n  pbVar7 = (byte *)0x0;\n  cVar4 = *local_38;\n  if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }\n  while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }\n  pbVar16 = pbVar13;\n  if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }\n  FUN_0027bb40(piVar12);\n  if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }\nLAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);\n  if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }\n  if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }\n  FUN_0027bb40(piVar12);\n  return 0;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "short *psVar2;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar2" (* "*") (identifier "psVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "byte bVar10;" (type_identifier "byte") (identifier "bVar10") (; ";")) (declaration "int extraout_ECX;" (primitive_type "int") (identifier "extraout_ECX") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "int *piVar12;" (primitive_type "int") (pointer_declarator "*piVar12" (* "*") (identifier "piVar12")) (; ";")) (declaration "byte *pbVar13;" (type_identifier "byte") (pointer_declarator "*pbVar13" (* "*") (identifier "pbVar13")) (; ";")) (declaration "char *pcVar14;" (primitive_type "char") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "int *piVar18;" (primitive_type "int") (pointer_declarator "*piVar18" (* "*") (identifier "piVar18")) (; ";")) (declaration "byte bVar19;" (type_identifier "byte") (identifier "bVar19") (; ";")) (declaration "undefined8 uVar20;" (type_identifier "undefined8") (identifier "uVar20") (; ";")) (declaration "char *local_38;" (primitive_type "char") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int local_20 [4];" (primitive_type "int") (array_declarator "local_20 [4]" (identifier "local_20") ([ "[") (number_literal "4") (] "]")) (; ";")) (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" (identifier "bVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar20 = FUN_000559ee();" (assignment_expression "uVar20 = FUN_000559ee()" (identifier "uVar20") (= "=") (call_expression "FUN_000559ee()" (identifier "FUN_000559ee") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar12 = (int *)((ulonglong)uVar20 >> 0x20);" (assignment_expression "piVar12 = (int *)((ulonglong)uVar20 >> 0x20)" (identifier "piVar12") (= "=") (cast_expression "(int *)((ulonglong)uVar20 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar20 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar20 >> 0x20" (cast_expression "(ulonglong)uVar20" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar20")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iVar8 = (int)uVar20;" (assignment_expression "iVar8 = (int)uVar20" (identifier "iVar8") (= "=") (cast_expression "(int)uVar20" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar20"))) (; ";")) (expression_statement "piVar18 = piVar12;" (assignment_expression "piVar18 = piVar12" (identifier "piVar18") (= "=") (identifier "piVar12")) (; ";")) (for_statement "for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" (for "for") (( "(") (assignment_expression "iVar11 = extraout_ECX" (identifier "iVar11") (= "=") (identifier "extraout_ECX")) (; ";") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar11 = iVar11 + -1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + -1" (identifier "iVar11") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n    *piVar18 = 0;\n    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;\n  }" ({ "{") (expression_statement "*piVar18 = 0;" (assignment_expression "*piVar18 = 0" (pointer_expression "*piVar18" (* "*") (identifier "piVar18")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar18 = piVar18 + (uint)bVar19 * -2 + 1;" (assignment_expression "piVar18 = piVar18 + (uint)bVar19 * -2 + 1" (identifier "piVar18") (= "=") (binary_expression "piVar18 + (uint)bVar19 * -2 + 1" (binary_expression "piVar18 + (uint)bVar19 * -2" (identifier "piVar18") (+ "+") (binary_expression "(uint)bVar19 * -2" (cast_expression "(uint)bVar19" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar19")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(iVar8 + 0x68) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x68) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x68)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x68)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x68)" (( "(") (binary_expression "iVar8 + 0x68" (identifier "iVar8") (+ "+") (number_literal "0x68")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar8 + 0x50) = 0;" (assignment_expression "*(undefined4 *)(iVar8 + 0x50) = 0" (pointer_expression "*(undefined4 *)(iVar8 + 0x50)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x50)" (( "(") (binary_expression "iVar8 + 0x50" (identifier "iVar8") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(iVar8 + 0x4c) == 0) {\n    return 5;\n  }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x4c) == 0)" (( "(") (binary_expression "*(int *)(iVar8 + 0x4c) == 0" (pointer_expression "*(int *)(iVar8 + 0x4c)" (* "*") (cast_expression "(int *)(iVar8 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x4c)" (( "(") (binary_expression "iVar8 + 0x4c" (identifier "iVar8") (+ "+") (number_literal "0x4c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    return 5;\n  }" ({ "{") (return_statement "return 5;" (return "return") (number_literal "5") (; ";")) (} "}"))) (expression_statement "iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54);" (assignment_expression "iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" (identifier "iVar11") (= "=") (call_expression "FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" (identifier "FUN_0027f910") (argument_list "((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),\n                        iVar8 + 0x54)" (( "(") (binary_expression "(*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f)" (parenthesized_expression "(*(int *)(iVar8 + 0x4c) + -1)" (( "(") (binary_expression "*(int *)(iVar8 + 0x4c) + -1" (pointer_expression "*(int *)(iVar8 + 0x4c)" (* "*") (cast_expression "(int *)(iVar8 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x4c)" (( "(") (binary_expression "iVar8 + 0x4c" (identifier "iVar8") (+ "+") (number_literal "0x4c")) () ")")))) (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(*(int *)(iVar8 + 0x60) >> 0x1f)" (( "(") (binary_expression "*(int *)(iVar8 + 0x60) >> 0x1f" (pointer_expression "*(int *)(iVar8 + 0x60)" (* "*") (cast_expression "(int *)(iVar8 + 0x60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x60)" (( "(") (binary_expression "iVar8 + 0x60" (identifier "iVar8") (+ "+") (number_literal "0x60")) () ")")))) (>> ">>") (number_literal "0x1f")) () ")"))) (, ",") (binary_expression "iVar8 + 0x54" (identifier "iVar8") (+ "+") (number_literal "0x54")) () ")")))) (; ";")) (if_statement "if (iVar11 == 0) {\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar11 = *(int *)(iVar8 + 0x48);\n    psVar2 = *(short **)(iVar8 + 0x4c);\n    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }\n    iVar5 = *(int *)(iVar8 + 0x1c);\n    piVar12[1] = 1;\n    piVar12[0x28] = 1;\n    piVar12[7] = 1;\n    piVar12[0x26] = 4;\n    piVar12[0x25] = iVar5 - iVar11;\n    *piVar12 = (iVar8 + 0x2c) - iVar5;\n    piVar12[3] = 1;\n    piVar12[6] = (iVar8 + 0x20) - iVar5;\n    piVar12[5] = 1;\n    piVar12[2] = (iVar8 + 0x28) - iVar5;\n    piVar12[0xd] = 1;\n    piVar12[4] = (iVar8 + 0x24) - iVar5;\n    piVar12[0xf] = 1;\n    piVar12[0xc] = (iVar8 + 0x14) - iVar5;\n    piVar12[0xb] = 1;\n    piVar12[0xe] = (iVar8 + 0x10) - iVar5;\n    piVar12[0x11] = 1;\n    piVar12[0x10] = (iVar8 + 0x38) - iVar5;\n    piVar12[10] = (iVar8 + 0x18) - iVar5;\n    piVar12[0x2d] = 8;\n    *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    return 0;\n  }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar8 + 0x48);" (assignment_expression "iVar11 = *(int *)(iVar8 + 0x48)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar8 + 0x48)" (* "*") (cast_expression "(int *)(iVar8 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x48)" (( "(") (binary_expression "iVar8 + 0x48" (identifier "iVar8") (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "psVar2 = *(short **)(iVar8 + 0x4c);" (assignment_expression "psVar2 = *(short **)(iVar8 + 0x4c)" (identifier "psVar2") (= "=") (pointer_expression "*(short **)(iVar8 + 0x4c)" (* "*") (cast_expression "(short **)(iVar8 + 0x4c)" (( "(") (type_descriptor "short **" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x4c)" (( "(") (binary_expression "iVar8 + 0x4c" (identifier "iVar8") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {\n      iVar8 = iVar11 + 4;\n    }\n    else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" (if "if") (parenthesized_expression "(((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33))" (( "(") (binary_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)" (parenthesized_expression "((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77))" (( "(") (binary_expression "(*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)" (parenthesized_expression "(*psVar2 == -0x47a8)" (( "(") (binary_expression "*psVar2 == -0x47a8" (pointer_expression "*psVar2" (* "*") (identifier "psVar2")) (== "==") (number_literal "-0x47a8")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(psVar2 + 1) == 0x77)" (( "(") (binary_expression "*(int *)(psVar2 + 1) == 0x77" (pointer_expression "*(int *)(psVar2 + 1)" (* "*") (cast_expression "(int *)(psVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar2 + 1)" (( "(") (binary_expression "psVar2 + 1" (identifier "psVar2") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "0x77")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(psVar2[3] == -0x7f33)" (( "(") (binary_expression "psVar2[3] == -0x7f33" (subscript_expression "psVar2[3]" (identifier "psVar2") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "-0x7f33")) () ")"))) () ")")) (compound_statement "{\n      iVar8 = iVar11 + 4;\n    }" ({ "{") (expression_statement "iVar8 = iVar11 + 4;" (assignment_expression "iVar8 = iVar11 + 4" (identifier "iVar8") (= "=") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (else_clause "else {\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" (else "else") (compound_statement "{\n      if ((char)*psVar2 != -0x48) {\n        return 5;\n      }\n      if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }\n      if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }\n      iVar8 = iVar11 + 0xa0;\n    }" ({ "{") (if_statement "if ((char)*psVar2 != -0x48) {\n        return 5;\n      }" (if "if") (parenthesized_expression "((char)*psVar2 != -0x48)" (( "(") (binary_expression "(char)*psVar2 != -0x48" (cast_expression "(char)*psVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*psVar2" (* "*") (identifier "psVar2"))) (!= "!=") (number_literal "-0x48")) () ")")) (compound_statement "{\n        return 5;\n      }" ({ "{") (return_statement "return 5;" (return "return") (number_literal "5") (; ";")) (} "}"))) (if_statement "if (*(int *)((int)psVar2 + 1) != 0xad) {\n        return 5;\n      }" (if "if") (parenthesized_expression "(*(int *)((int)psVar2 + 1) != 0xad)" (( "(") (binary_expression "*(int *)((int)psVar2 + 1) != 0xad" (pointer_expression "*(int *)((int)psVar2 + 1)" (* "*") (cast_expression "(int *)((int)psVar2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)psVar2 + 1)" (( "(") (binary_expression "(int)psVar2 + 1" (cast_expression "(int)psVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "psVar2")) (+ "+") (number_literal "1")) () ")")))) (!= "!=") (number_literal "0xad")) () ")")) (compound_statement "{\n        return 5;\n      }" ({ "{") (return_statement "return 5;" (return "return") (number_literal "5") (; ";")) (} "}"))) (if_statement "if (*(short *)((int)psVar2 + 5) != -0x7f33) {\n        return 5;\n      }" (if "if") (parenthesized_expression "(*(short *)((int)psVar2 + 5) != -0x7f33)" (( "(") (binary_expression "*(short *)((int)psVar2 + 5) != -0x7f33" (pointer_expression "*(short *)((int)psVar2 + 5)" (* "*") (cast_expression "(short *)((int)psVar2 + 5)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)psVar2 + 5)" (( "(") (binary_expression "(int)psVar2 + 5" (cast_expression "(int)psVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "psVar2")) (+ "+") (number_literal "5")) () ")")))) (!= "!=") (number_literal "-0x7f33")) () ")")) (compound_statement "{\n        return 5;\n      }" ({ "{") (return_statement "return 5;" (return "return") (number_literal "5") (; ";")) (} "}"))) (expression_statement "iVar8 = iVar11 + 0xa0;" (assignment_expression "iVar8 = iVar11 + 0xa0" (identifier "iVar8") (= "=") (binary_expression "iVar11 + 0xa0" (identifier "iVar11") (+ "+") (number_literal "0xa0"))) (; ";")) (} "}")))) (expression_statement "iVar5 = *(int *)(iVar8 + 0x1c);" (assignment_expression "iVar5 = *(int *)(iVar8 + 0x1c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(iVar8 + 0x1c)" (* "*") (cast_expression "(int *)(iVar8 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x1c)" (( "(") (binary_expression "iVar8 + 0x1c" (identifier "iVar8") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "piVar12[1] = 1;" (assignment_expression "piVar12[1] = 1" (subscript_expression "piVar12[1]" (identifier "piVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[0x28] = 1;" (assignment_expression "piVar12[0x28] = 1" (subscript_expression "piVar12[0x28]" (identifier "piVar12") ([ "[") (number_literal "0x28") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[7] = 1;" (assignment_expression "piVar12[7] = 1" (subscript_expression "piVar12[7]" (identifier "piVar12") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[0x26] = 4;" (assignment_expression "piVar12[0x26] = 4" (subscript_expression "piVar12[0x26]" (identifier "piVar12") ([ "[") (number_literal "0x26") (] "]")) (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar12[0x25] = iVar5 - iVar11;" (assignment_expression "piVar12[0x25] = iVar5 - iVar11" (subscript_expression "piVar12[0x25]" (identifier "piVar12") ([ "[") (number_literal "0x25") (] "]")) (= "=") (binary_expression "iVar5 - iVar11" (identifier "iVar5") (- "-") (identifier "iVar11"))) (; ";")) (expression_statement "*piVar12 = (iVar8 + 0x2c) - iVar5;" (assignment_expression "*piVar12 = (iVar8 + 0x2c) - iVar5" (pointer_expression "*piVar12" (* "*") (identifier "piVar12")) (= "=") (binary_expression "(iVar8 + 0x2c) - iVar5" (parenthesized_expression "(iVar8 + 0x2c)" (( "(") (binary_expression "iVar8 + 0x2c" (identifier "iVar8") (+ "+") (number_literal "0x2c")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[3] = 1;" (assignment_expression "piVar12[3] = 1" (subscript_expression "piVar12[3]" (identifier "piVar12") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[6] = (iVar8 + 0x20) - iVar5;" (assignment_expression "piVar12[6] = (iVar8 + 0x20) - iVar5" (subscript_expression "piVar12[6]" (identifier "piVar12") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "(iVar8 + 0x20) - iVar5" (parenthesized_expression "(iVar8 + 0x20)" (( "(") (binary_expression "iVar8 + 0x20" (identifier "iVar8") (+ "+") (number_literal "0x20")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[5] = 1;" (assignment_expression "piVar12[5] = 1" (subscript_expression "piVar12[5]" (identifier "piVar12") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[2] = (iVar8 + 0x28) - iVar5;" (assignment_expression "piVar12[2] = (iVar8 + 0x28) - iVar5" (subscript_expression "piVar12[2]" (identifier "piVar12") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(iVar8 + 0x28) - iVar5" (parenthesized_expression "(iVar8 + 0x28)" (( "(") (binary_expression "iVar8 + 0x28" (identifier "iVar8") (+ "+") (number_literal "0x28")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[0xd] = 1;" (assignment_expression "piVar12[0xd] = 1" (subscript_expression "piVar12[0xd]" (identifier "piVar12") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[4] = (iVar8 + 0x24) - iVar5;" (assignment_expression "piVar12[4] = (iVar8 + 0x24) - iVar5" (subscript_expression "piVar12[4]" (identifier "piVar12") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "(iVar8 + 0x24) - iVar5" (parenthesized_expression "(iVar8 + 0x24)" (( "(") (binary_expression "iVar8 + 0x24" (identifier "iVar8") (+ "+") (number_literal "0x24")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[0xf] = 1;" (assignment_expression "piVar12[0xf] = 1" (subscript_expression "piVar12[0xf]" (identifier "piVar12") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[0xc] = (iVar8 + 0x14) - iVar5;" (assignment_expression "piVar12[0xc] = (iVar8 + 0x14) - iVar5" (subscript_expression "piVar12[0xc]" (identifier "piVar12") ([ "[") (number_literal "0xc") (] "]")) (= "=") (binary_expression "(iVar8 + 0x14) - iVar5" (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[0xb] = 1;" (assignment_expression "piVar12[0xb] = 1" (subscript_expression "piVar12[0xb]" (identifier "piVar12") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[0xe] = (iVar8 + 0x10) - iVar5;" (assignment_expression "piVar12[0xe] = (iVar8 + 0x10) - iVar5" (subscript_expression "piVar12[0xe]" (identifier "piVar12") ([ "[") (number_literal "0xe") (] "]")) (= "=") (binary_expression "(iVar8 + 0x10) - iVar5" (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[0x11] = 1;" (assignment_expression "piVar12[0x11] = 1" (subscript_expression "piVar12[0x11]" (identifier "piVar12") ([ "[") (number_literal "0x11") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar12[0x10] = (iVar8 + 0x38) - iVar5;" (assignment_expression "piVar12[0x10] = (iVar8 + 0x38) - iVar5" (subscript_expression "piVar12[0x10]" (identifier "piVar12") ([ "[") (number_literal "0x10") (] "]")) (= "=") (binary_expression "(iVar8 + 0x38) - iVar5" (parenthesized_expression "(iVar8 + 0x38)" (( "(") (binary_expression "iVar8 + 0x38" (identifier "iVar8") (+ "+") (number_literal "0x38")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[10] = (iVar8 + 0x18) - iVar5;" (assignment_expression "piVar12[10] = (iVar8 + 0x18) - iVar5" (subscript_expression "piVar12[10]" (identifier "piVar12") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "(iVar8 + 0x18) - iVar5" (parenthesized_expression "(iVar8 + 0x18)" (( "(") (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) () ")")) (- "-") (identifier "iVar5"))) (; ";")) (expression_statement "piVar12[0x2d] = 8;" (assignment_expression "piVar12[0x2d] = 8" (subscript_expression "piVar12[0x2d]" (identifier "piVar12") ([ "[") (number_literal "0x2d") (] "]")) (= "=") (number_literal "8")) (; ";")) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" (* "*") (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 0xbb)" (( "(") (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "0xbb")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "piVar12[0x29] = *(int *)(iVar8 + 0x5c);" (assignment_expression "piVar12[0x29] = *(int *)(iVar8 + 0x5c)" (subscript_expression "piVar12[0x29]" (identifier "piVar12") ([ "[") (number_literal "0x29") (] "]")) (= "=") (pointer_expression "*(int *)(iVar8 + 0x5c)" (* "*") (cast_expression "(int *)(iVar8 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x5c)" (( "(") (binary_expression "iVar8 + 0x5c" (identifier "iVar8") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);" (assignment_expression "iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4)" (identifier "iVar5") (= "=") (binary_expression "(iVar11 + 4) - *(int *)(iVar11 + 4)" (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")) (- "-") (pointer_expression "*(int *)(iVar11 + 4)" (* "*") (cast_expression "(int *)(iVar11 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "local_38 = (char *)(iVar5 + 9);" (assignment_expression "local_38 = (char *)(iVar5 + 9)" (identifier "local_38") (= "=") (cast_expression "(char *)(iVar5 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 9)" (( "(") (binary_expression "iVar5 + 9" (identifier "iVar5") (+ "+") (number_literal "9")) () ")")))) (; ";")) (expression_statement "sVar6 = strlen(local_38);" (assignment_expression "sVar6 = strlen(local_38)" (identifier "sVar6") (= "=") (call_expression "strlen(local_38)" (identifier "strlen") (argument_list "(local_38)" (( "(") (identifier "local_38") () ")")))) (; ";")) (expression_statement "pbVar7 = (byte *)(iVar5 + 10 + sVar6);" (assignment_expression "pbVar7 = (byte *)(iVar5 + 10 + sVar6)" (identifier "pbVar7") (= "=") (cast_expression "(byte *)(iVar5 + 10 + sVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 10 + sVar6)" (( "(") (binary_expression "iVar5 + 10 + sVar6" (binary_expression "iVar5 + 10" (identifier "iVar5") (+ "+") (number_literal "10")) (+ "+") (identifier "sVar6")) () ")")))) (; ";")) (if_statement "if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" (if "if") (parenthesized_expression "((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h'))" (( "(") (binary_expression "(*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')" (parenthesized_expression "(*(char *)(iVar5 + 9) == 'e')" (( "(") (binary_expression "*(char *)(iVar5 + 9) == 'e'" (pointer_expression "*(char *)(iVar5 + 9)" (* "*") (cast_expression "(char *)(iVar5 + 9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 9)" (( "(") (binary_expression "iVar5 + 9" (identifier "iVar5") (+ "+") (number_literal "9")) () ")")))) (== "==") (char_literal "'e'" (' "'") (character "e") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar5 + 10) == 'h')" (( "(") (binary_expression "*(char *)(iVar5 + 10) == 'h'" (pointer_expression "*(char *)(iVar5 + 10)" (* "*") (cast_expression "(char *)(iVar5 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 10)" (( "(") (binary_expression "iVar5 + 10" (identifier "iVar5") (+ "+") (number_literal "10")) () ")")))) (== "==") (char_literal "'h'" (' "'") (character "h") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    iVar1 = *(int *)pbVar7;\n    local_38 = (char *)(iVar5 + 0xb);\n    pbVar7 = pbVar7 + 4;\n    piVar12[0x2f] = iVar1;\n  }" ({ "{") (expression_statement "iVar1 = *(int *)pbVar7;" (assignment_expression "iVar1 = *(int *)pbVar7" (identifier "iVar1") (= "=") (pointer_expression "*(int *)pbVar7" (* "*") (cast_expression "(int *)pbVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar7")))) (; ";")) (expression_statement "local_38 = (char *)(iVar5 + 0xb);" (assignment_expression "local_38 = (char *)(iVar5 + 0xb)" (identifier "local_38") (= "=") (cast_expression "(char *)(iVar5 + 0xb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0xb)" (( "(") (binary_expression "iVar5 + 0xb" (identifier "iVar5") (+ "+") (number_literal "0xb")) () ")")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 4;" (assignment_expression "pbVar7 = pbVar7 + 4" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 4" (identifier "pbVar7") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "piVar12[0x2f] = iVar1;" (assignment_expression "piVar12[0x2f] = iVar1" (subscript_expression "piVar12[0x2f]" (identifier "piVar12") ([ "[") (number_literal "0x2f") (] "]")) (= "=") (identifier "iVar1")) (; ";")) (} "}"))) (expression_statement "bVar19 = *(byte *)(iVar5 + 8);" (assignment_expression "bVar19 = *(byte *)(iVar5 + 8)" (identifier "bVar19") (= "=") (pointer_expression "*(byte *)(iVar5 + 8)" (* "*") (cast_expression "(byte *)(iVar5 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" (identifier "bVar10") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (if_statement "if (3 < bVar19) {\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" (if "if") (parenthesized_expression "(3 < bVar19)" (( "(") (binary_expression "3 < bVar19" (number_literal "3") (< "<") (identifier "bVar19")) () ")")) (compound_statement "{\n    if (bVar10 != 4) {\n      return 3;\n    }\n    if (pbVar7[1] != 0) {\n      return 3;\n    }\n    bVar10 = pbVar7[2];\n    pbVar7 = pbVar7 + 2;\n  }" ({ "{") (if_statement "if (bVar10 != 4) {\n      return 3;\n    }" (if "if") (parenthesized_expression "(bVar10 != 4)" (( "(") (binary_expression "bVar10 != 4" (identifier "bVar10") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n      return 3;\n    }" ({ "{") (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}"))) (if_statement "if (pbVar7[1] != 0) {\n      return 3;\n    }" (if "if") (parenthesized_expression "(pbVar7[1] != 0)" (( "(") (binary_expression "pbVar7[1] != 0" (subscript_expression "pbVar7[1]" (identifier "pbVar7") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 3;\n    }" ({ "{") (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}"))) (expression_statement "bVar10 = pbVar7[2];" (assignment_expression "bVar10 = pbVar7[2]" (identifier "bVar10") (= "=") (subscript_expression "pbVar7[2]" (identifier "pbVar7") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 2;" (assignment_expression "pbVar7 = pbVar7 + 2" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 2" (identifier "pbVar7") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" (identifier "bVar9") (= "=") (number_literal "0")) (; ";")) (while_statement "while( true ) {\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    pbVar7 = pbVar7 + 1;\n    bVar3 = bVar9 & 0x1f;\n    bVar9 = bVar9 + 7;\n    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;\n    if (-1 < (char)bVar10) break;\n    bVar10 = *pbVar7;\n  }" ({ "{") (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar3 = bVar9 & 0x1f;" (assignment_expression "bVar3 = bVar9 & 0x1f" (identifier "bVar3") (= "=") (binary_expression "bVar9 & 0x1f" (identifier "bVar9") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "bVar9 = bVar9 + 7;" (assignment_expression "bVar9 = bVar9 + 7" (identifier "bVar9") (= "=") (binary_expression "bVar9 + 7" (identifier "bVar9") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3" (identifier "uVar17") (= "=") (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar3" (identifier "uVar17") (| "|") (binary_expression "(bVar10 & 0x7f) << bVar3" (parenthesized_expression "(bVar10 & 0x7f)" (( "(") (binary_expression "bVar10 & 0x7f" (identifier "bVar10") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (identifier "bVar3")))) (; ";")) (if_statement "if (-1 < (char)bVar10) break;" (if "if") (parenthesized_expression "(-1 < (char)bVar10)" (( "(") (binary_expression "-1 < (char)bVar10" (number_literal "-1") (< "<") (cast_expression "(char)bVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar10"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" (identifier "bVar10") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (} "}"))) (expression_statement "piVar12[0x2c] = uVar17;" (assignment_expression "piVar12[0x2c] = uVar17" (subscript_expression "piVar12[0x2c]" (identifier "piVar12") ([ "[") (number_literal "0x2c") (] "]")) (= "=") (identifier "uVar17")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  } while ((char)bVar10 < '\0');" (do "do") (compound_statement "{\n    pbVar13 = pbVar7;\n    pbVar7 = pbVar13 + 1;\n    bVar10 = *pbVar13;\n    bVar9 = (byte)uVar17;\n    uVar17 = uVar17 + 7;\n    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);\n  }" ({ "{") (expression_statement "pbVar13 = pbVar7;" (assignment_expression "pbVar13 = pbVar7" (identifier "pbVar13") (= "=") (identifier "pbVar7")) (; ";")) (expression_statement "pbVar7 = pbVar13 + 1;" (assignment_expression "pbVar7 = pbVar13 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar10 = *pbVar13;" (assignment_expression "bVar10 = *pbVar13" (identifier "bVar10") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (expression_statement "bVar9 = (byte)uVar17;" (assignment_expression "bVar9 = (byte)uVar17" (identifier "bVar9") (= "=") (cast_expression "(byte)uVar17" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar17"))) (; ";")) (expression_statement "uVar17 = uVar17 + 7;" (assignment_expression "uVar17 = uVar17 + 7" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 7" (identifier "uVar17") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);" (assignment_expression "uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" (identifier "uVar15") (= "=") (binary_expression "uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f)" (identifier "uVar15") (| "|") (binary_expression "(bVar10 & 0x7f) << (bVar9 & 0x1f)" (parenthesized_expression "(bVar10 & 0x7f)" (( "(") (binary_expression "bVar10 & 0x7f" (identifier "bVar10") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (parenthesized_expression "(bVar9 & 0x1f)" (( "(") (binary_expression "bVar9 & 0x1f" (identifier "bVar9") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar10 < '\0')" (( "(") (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar10")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (if_statement "if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" (if "if") (parenthesized_expression "((uVar17 < 0x20) && ((bVar10 & 0x40) != 0))" (( "(") (binary_expression "(uVar17 < 0x20) && ((bVar10 & 0x40) != 0)" (parenthesized_expression "(uVar17 < 0x20)" (( "(") (binary_expression "uVar17 < 0x20" (identifier "uVar17") (< "<") (number_literal "0x20")) () ")")) (&& "&&") (parenthesized_expression "((bVar10 & 0x40) != 0)" (( "(") (binary_expression "(bVar10 & 0x40) != 0" (parenthesized_expression "(bVar10 & 0x40)" (( "(") (binary_expression "bVar10 & 0x40" (identifier "bVar10") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);\n  }" ({ "{") (expression_statement "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);" (assignment_expression "uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f)" (identifier "uVar15") (= "=") (binary_expression "uVar15 | -1 << ((byte)uVar17 & 0x1f)" (identifier "uVar15") (| "|") (binary_expression "-1 << ((byte)uVar17 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "((byte)uVar17 & 0x1f)" (( "(") (binary_expression "(byte)uVar17 & 0x1f" (cast_expression "(byte)uVar17" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar17")) (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}"))) (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" (identifier "bVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar12[0x2b] = uVar15;" (assignment_expression "piVar12[0x2b] = uVar15" (subscript_expression "piVar12[0x2b]" (identifier "piVar12") ([ "[") (number_literal "0x2b") (] "]")) (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (bVar19 == 1) {\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }\n  else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" (if "if") (parenthesized_expression "(bVar19 == 1)" (( "(") (binary_expression "bVar19 == 1" (identifier "bVar19") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    pbVar13 = pbVar13 + 2;\n    piVar12[0x2d] = (uint)*pbVar7;\n  }" ({ "{") (expression_statement "pbVar13 = pbVar13 + 2;" (assignment_expression "pbVar13 = pbVar13 + 2" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 2" (identifier "pbVar13") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar12[0x2d] = (uint)*pbVar7;" (assignment_expression "piVar12[0x2d] = (uint)*pbVar7" (subscript_expression "piVar12[0x2d]" (identifier "piVar12") ([ "[") (number_literal "0x2d") (] "]")) (= "=") (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar7"))) (; ";")) (} "}")) (else_clause "else {\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" (else "else") (compound_statement "{\n    uVar17 = 0;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');\n    piVar12[0x2d] = uVar17;\n  }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar19 < '\0');" (do "do") (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar19 = *pbVar7;\n      bVar9 = bVar10 & 0x1f;\n      bVar10 = bVar10 + 7;\n      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" ({ "{") (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar19 = *pbVar7;" (assignment_expression "bVar19 = *pbVar7" (identifier "bVar19") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "bVar9 = bVar10 & 0x1f;" (assignment_expression "bVar9 = bVar10 & 0x1f" (identifier "bVar9") (= "=") (binary_expression "bVar10 & 0x1f" (identifier "bVar10") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "bVar10 = bVar10 + 7;" (assignment_expression "bVar10 = bVar10 + 7" (identifier "bVar10") (= "=") (binary_expression "bVar10 + 7" (identifier "bVar10") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9" (identifier "uVar17") (= "=") (binary_expression "uVar17 | (bVar19 & 0x7f) << bVar9" (identifier "uVar17") (| "|") (binary_expression "(bVar19 & 0x7f) << bVar9" (parenthesized_expression "(bVar19 & 0x7f)" (( "(") (binary_expression "bVar19 & 0x7f" (identifier "bVar19") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (identifier "bVar9")))) (; ";")) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" (identifier "pbVar7") (= "=") (identifier "pbVar13")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar19 < '\0')" (( "(") (binary_expression "(char)bVar19 < '\0'" (cast_expression "(char)bVar19" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar19")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "piVar12[0x2d] = uVar17;" (assignment_expression "piVar12[0x2d] = uVar17" (subscript_expression "piVar12[0x2d]" (identifier "piVar12") ([ "[") (number_literal "0x2d") (] "]")) (= "=") (identifier "uVar17")) (; ";")) (} "}")))) (expression_statement "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xb9) = 0xff" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xb9)" (* "*") (cast_expression "(undefined1 *)((int)piVar12 + 0xb9)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 0xb9)" (( "(") (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "0xb9")) () ")")))) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "pbVar7 = (byte *)0x0;" (assignment_expression "pbVar7 = (byte *)0x0" (identifier "pbVar7") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" (identifier "cVar4") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";")) (if_statement "if (cVar4 == 'z') {\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" (if "if") (parenthesized_expression "(cVar4 == 'z')" (( "(") (binary_expression "cVar4 == 'z'" (identifier "cVar4") (== "==") (char_literal "'z'" (' "'") (character "z") (' "'"))) () ")")) (compound_statement "{\n    bVar19 = 0;\n    uVar17 = 0;\n    pbVar7 = pbVar13;\n    do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');\n    pbVar7 = pbVar13 + uVar17;\n    *(undefined1 *)((int)piVar12 + 0xba) = 1;\n    local_38 = local_38 + 1;\n    cVar4 = *local_38;\n  }" ({ "{") (expression_statement "bVar19 = 0;" (assignment_expression "bVar19 = 0" (identifier "bVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" (identifier "pbVar7") (= "=") (identifier "pbVar13")) (; ";")) (do_statement "do {\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    } while ((char)bVar10 < '\0');" (do "do") (compound_statement "{\n      pbVar13 = pbVar7 + 1;\n      bVar10 = *pbVar7;\n      bVar9 = bVar19 & 0x1f;\n      bVar19 = bVar19 + 7;\n      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;\n      pbVar7 = pbVar13;\n    }" ({ "{") (expression_statement "pbVar13 = pbVar7 + 1;" (assignment_expression "pbVar13 = pbVar7 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar10 = *pbVar7;" (assignment_expression "bVar10 = *pbVar7" (identifier "bVar10") (= "=") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";")) (expression_statement "bVar9 = bVar19 & 0x1f;" (assignment_expression "bVar9 = bVar19 & 0x1f" (identifier "bVar9") (= "=") (binary_expression "bVar19 & 0x1f" (identifier "bVar19") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "bVar19 = bVar19 + 7;" (assignment_expression "bVar19 = bVar19 + 7" (identifier "bVar19") (= "=") (binary_expression "bVar19 + 7" (identifier "bVar19") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;" (assignment_expression "uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9" (identifier "uVar17") (= "=") (binary_expression "uVar17 | (bVar10 & 0x7f) << bVar9" (identifier "uVar17") (| "|") (binary_expression "(bVar10 & 0x7f) << bVar9" (parenthesized_expression "(bVar10 & 0x7f)" (( "(") (binary_expression "bVar10 & 0x7f" (identifier "bVar10") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (identifier "bVar9")))) (; ";")) (expression_statement "pbVar7 = pbVar13;" (assignment_expression "pbVar7 = pbVar13" (identifier "pbVar7") (= "=") (identifier "pbVar13")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((char)bVar10 < '\0')" (( "(") (binary_expression "(char)bVar10 < '\0'" (cast_expression "(char)bVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar10")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (expression_statement "pbVar7 = pbVar13 + uVar17;" (assignment_expression "pbVar7 = pbVar13 + uVar17" (identifier "pbVar7") (= "=") (binary_expression "pbVar13 + uVar17" (identifier "pbVar13") (+ "+") (identifier "uVar17"))) (; ";")) (expression_statement "*(undefined1 *)((int)piVar12 + 0xba) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xba) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xba)" (* "*") (cast_expression "(undefined1 *)((int)piVar12 + 0xba)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 0xba)" (( "(") (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "0xba")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" (identifier "cVar4") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";")) (} "}"))) (while_statement "while (local_38 = local_38 + 1, cVar4 != '\0') {\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" (while "while") (parenthesized_expression "(local_38 = local_38 + 1, cVar4 != '\0')" (( "(") (comma_expression "local_38 = local_38 + 1, cVar4 != '\0'" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (, ",") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")")) (compound_statement "{\n    if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }\n    cVar4 = *local_38;\n  }" ({ "{") (if_statement "if (cVar4 == 'L') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }\n    else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" (if "if") (parenthesized_expression "(cVar4 == 'L')" (( "(") (binary_expression "cVar4 == 'L'" (identifier "cVar4") (== "==") (char_literal "'L'" (' "'") (character "L") (' "'"))) () ")")) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)((int)piVar12 + 0xb9) = bVar19;\n    }" ({ "{") (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" (identifier "bVar19") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)((int)piVar12 + 0xb9) = bVar19;" (assignment_expression "*(byte *)((int)piVar12 + 0xb9) = bVar19" (pointer_expression "*(byte *)((int)piVar12 + 0xb9)" (* "*") (cast_expression "(byte *)((int)piVar12 + 0xb9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 0xb9)" (( "(") (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "0xb9")) () ")")))) (= "=") (identifier "bVar19")) (; ";")) (} "}")) (else_clause "else if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" (else "else") (if_statement "if (cVar4 == 'R') {\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }\n    else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" (if "if") (parenthesized_expression "(cVar4 == 'R')" (( "(") (binary_expression "cVar4 == 'R'" (identifier "cVar4") (== "==") (char_literal "'R'" (' "'") (character "R") (' "'"))) () ")")) (compound_statement "{\n      bVar19 = *pbVar13;\n      pbVar13 = pbVar13 + 1;\n      *(byte *)(piVar12 + 0x2e) = bVar19;\n    }" ({ "{") (expression_statement "bVar19 = *pbVar13;" (assignment_expression "bVar19 = *pbVar13" (identifier "bVar19") (= "=") (pointer_expression "*pbVar13" (* "*") (identifier "pbVar13"))) (; ";")) (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" (identifier "pbVar13") (= "=") (binary_expression "pbVar13 + 1" (identifier "pbVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(byte *)(piVar12 + 0x2e) = bVar19;" (assignment_expression "*(byte *)(piVar12 + 0x2e) = bVar19" (pointer_expression "*(byte *)(piVar12 + 0x2e)" (* "*") (cast_expression "(byte *)(piVar12 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar12 + 0x2e)" (( "(") (binary_expression "piVar12 + 0x2e" (identifier "piVar12") (+ "+") (number_literal "0x2e")) () ")")))) (= "=") (identifier "bVar19")) (; ";")) (} "}")) (else_clause "else if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" (else "else") (if_statement "if (cVar4 == 'P') {\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }\n    else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" (if "if") (parenthesized_expression "(cVar4 == 'P')" (( "(") (binary_expression "cVar4 == 'P'" (identifier "cVar4") (== "==") (char_literal "'P'" (' "'") (character "P") (' "'"))) () ")")) (compound_statement "{\n      FUN_0027bae0();\n      pbVar13 = (byte *)FUN_0027b990(local_20);\n      piVar12[0x2a] = local_20[0];\n    }" ({ "{") (expression_statement "FUN_0027bae0();" (call_expression "FUN_0027bae0()" (identifier "FUN_0027bae0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar13 = (byte *)FUN_0027b990(local_20);" (assignment_expression "pbVar13 = (byte *)FUN_0027b990(local_20)" (identifier "pbVar13") (= "=") (cast_expression "(byte *)FUN_0027b990(local_20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0027b990(local_20)" (identifier "FUN_0027b990") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))))) (; ";")) (expression_statement "piVar12[0x2a] = local_20[0];" (assignment_expression "piVar12[0x2a] = local_20[0]" (subscript_expression "piVar12[0x2a]" (identifier "piVar12") ([ "[") (number_literal "0x2a") (] "]")) (= "=") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" (else "else") (compound_statement "{\n      pbVar16 = pbVar7;\n      if (cVar4 != 'S') goto LAB_0027c844;\n      *(undefined1 *)((int)piVar12 + 0xbb) = 1;\n    }" ({ "{") (expression_statement "pbVar16 = pbVar7;" (assignment_expression "pbVar16 = pbVar7" (identifier "pbVar16") (= "=") (identifier "pbVar7")) (; ";")) (if_statement "if (cVar4 != 'S') goto LAB_0027c844;" (if "if") (parenthesized_expression "(cVar4 != 'S')" (( "(") (binary_expression "cVar4 != 'S'" (identifier "cVar4") (!= "!=") (char_literal "'S'" (' "'") (character "S") (' "'"))) () ")")) (goto_statement "goto LAB_0027c844;" (goto "goto") (statement_identifier "LAB_0027c844") (; ";"))) (expression_statement "*(undefined1 *)((int)piVar12 + 0xbb) = 1;" (assignment_expression "*(undefined1 *)((int)piVar12 + 0xbb) = 1" (pointer_expression "*(undefined1 *)((int)piVar12 + 0xbb)" (* "*") (cast_expression "(undefined1 *)((int)piVar12 + 0xbb)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 0xbb)" (( "(") (binary_expression "(int)piVar12 + 0xbb" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "0xbb")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}")))))))) (expression_statement "cVar4 = *local_38;" (assignment_expression "cVar4 = *local_38" (identifier "cVar4") (= "=") (pointer_expression "*local_38" (* "*") (identifier "local_38"))) (; ";")) (} "}"))) (expression_statement "pbVar16 = pbVar13;" (assignment_expression "pbVar16 = pbVar13" (identifier "pbVar16") (= "=") (identifier "pbVar13")) (; ";")) (if_statement "if (pbVar7 == (byte *)0x0) {\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" (if "if") (parenthesized_expression "(pbVar7 == (byte *)0x0)" (( "(") (binary_expression "pbVar7 == (byte *)0x0" (identifier "pbVar7") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }\n  }" ({ "{") (labeled_statement "LAB_0027c844:\n    if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" (statement_identifier "LAB_0027c844") (: ":") (if_statement "if (pbVar16 == (byte *)0x0) {\n      return 3;\n    }" (if "if") (parenthesized_expression "(pbVar16 == (byte *)0x0)" (( "(") (binary_expression "pbVar16 == (byte *)0x0" (identifier "pbVar16") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 3;\n    }" ({ "{") (return_statement "return 3;" (return "return") (number_literal "3") (; ";")) (} "}")))) (} "}"))) (expression_statement "FUN_0027bb40(piVar12);" (call_expression "FUN_0027bb40(piVar12)" (identifier "FUN_0027bb40") (argument_list "(piVar12)" (( "(") (identifier "piVar12") () ")"))) (; ";")) (if_statement "if (*(byte *)(piVar12 + 0x2e) == 0xff) {\n    iVar5 = 8;\n  }\n  else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" (if "if") (parenthesized_expression "(*(byte *)(piVar12 + 0x2e) == 0xff)" (( "(") (binary_expression "*(byte *)(piVar12 + 0x2e) == 0xff" (pointer_expression "*(byte *)(piVar12 + 0x2e)" (* "*") (cast_expression "(byte *)(piVar12 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar12 + 0x2e)" (( "(") (binary_expression "piVar12 + 0x2e" (identifier "piVar12") (+ "+") (number_literal "0x2e")) () ")")))) (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n    iVar5 = 8;\n  }" ({ "{") (expression_statement "iVar5 = 8;" (assignment_expression "iVar5 = 8" (identifier "iVar5") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" (else "else") (compound_statement "{\n    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;\n    if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }\n  }" ({ "{") (expression_statement "bVar19 = *(byte *)(piVar12 + 0x2e) & 7;" (assignment_expression "bVar19 = *(byte *)(piVar12 + 0x2e) & 7" (identifier "bVar19") (= "=") (binary_expression "*(byte *)(piVar12 + 0x2e) & 7" (pointer_expression "*(byte *)(piVar12 + 0x2e)" (* "*") (cast_expression "(byte *)(piVar12 + 0x2e)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar12 + 0x2e)" (( "(") (binary_expression "piVar12 + 0x2e" (identifier "piVar12") (+ "+") (number_literal "0x2e")) () ")")))) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (bVar19 == 2) {\n      iVar5 = 0xc;\n    }\n    else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" (if "if") (parenthesized_expression "(bVar19 == 2)" (( "(") (binary_expression "bVar19 == 2" (identifier "bVar19") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      iVar5 = 0xc;\n    }" ({ "{") (expression_statement "iVar5 = 0xc;" (assignment_expression "iVar5 = 0xc" (identifier "iVar5") (= "=") (number_literal "0xc")) (; ";")) (} "}")) (else_clause "else {\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" (else "else") (compound_statement "{\n      if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }\n      iVar5 = 0x10;\n    }" ({ "{") (if_statement "if (bVar19 < 3) {\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }\n      else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" (if "if") (parenthesized_expression "(bVar19 < 3)" (( "(") (binary_expression "bVar19 < 3" (identifier "bVar19") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n        if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }\n      }" ({ "{") (if_statement "if (bVar19 != 0) {\nLAB_0027c97e:\n                    \n          abort();\n        }" (if "if") (parenthesized_expression "(bVar19 != 0)" (( "(") (binary_expression "bVar19 != 0" (identifier "bVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0027c97e:\n                    \n          abort();\n        }" ({ "{") (labeled_statement "LAB_0027c97e:\n                    \n          abort();" (statement_identifier "LAB_0027c97e") (: ":") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (} "}")) (else_clause "else if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" (else "else") (if_statement "if (bVar19 != 3) {\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" (if "if") (parenthesized_expression "(bVar19 != 3)" (( "(") (binary_expression "bVar19 != 3" (identifier "bVar19") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n        if (bVar19 != 4) goto LAB_0027c97e;\n        iVar5 = 0x18;\n        goto LAB_0027c6ff;\n      }" ({ "{") (if_statement "if (bVar19 != 4) goto LAB_0027c97e;" (if "if") (parenthesized_expression "(bVar19 != 4)" (( "(") (binary_expression "bVar19 != 4" (identifier "bVar19") (!= "!=") (number_literal "4")) () ")")) (goto_statement "goto LAB_0027c97e;" (goto "goto") (statement_identifier "LAB_0027c97e") (; ";"))) (expression_statement "iVar5 = 0x18;" (assignment_expression "iVar5 = 0x18" (identifier "iVar5") (= "=") (number_literal "0x18")) (; ";")) (goto_statement "goto LAB_0027c6ff;" (goto "goto") (statement_identifier "LAB_0027c6ff") (; ";")) (} "}"))))) (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" (identifier "iVar5") (= "=") (number_literal "0x10")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_0027c6ff:\n  pcVar14 = (char *)(iVar5 + iVar11);" (statement_identifier "LAB_0027c6ff") (: ":") (expression_statement "pcVar14 = (char *)(iVar5 + iVar11);" (assignment_expression "pcVar14 = (char *)(iVar5 + iVar11)" (identifier "pcVar14") (= "=") (cast_expression "(char *)(iVar5 + iVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + iVar11)" (( "(") (binary_expression "iVar5 + iVar11" (identifier "iVar5") (+ "+") (identifier "iVar11")) () ")")))) (; ";"))) (if_statement "if (*(char *)((int)piVar12 + 0xba) != '\0') {\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" (if "if") (parenthesized_expression "(*(char *)((int)piVar12 + 0xba) != '\0')" (( "(") (binary_expression "*(char *)((int)piVar12 + 0xba) != '\0'" (pointer_expression "*(char *)((int)piVar12 + 0xba)" (* "*") (cast_expression "(char *)((int)piVar12 + 0xba)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 0xba)" (( "(") (binary_expression "(int)piVar12 + 0xba" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "0xba")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');\n  }" ({ "{") (do_statement "do {\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    } while (cVar4 < '\0');" (do "do") (compound_statement "{\n      cVar4 = *pcVar14;\n      pcVar14 = pcVar14 + 1;\n    }" ({ "{") (expression_statement "cVar4 = *pcVar14;" (assignment_expression "cVar4 = *pcVar14" (identifier "cVar4") (= "=") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14"))) (; ";")) (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" (identifier "pcVar14") (= "=") (binary_expression "pcVar14 + 1" (identifier "pcVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar4 < '\0')" (( "(") (binary_expression "cVar4 < '\0'" (identifier "cVar4") (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (if_statement "if (*(char *)((int)piVar12 + 0xb9) != -1) {\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" (if "if") (parenthesized_expression "(*(char *)((int)piVar12 + 0xb9) != -1)" (( "(") (binary_expression "*(char *)((int)piVar12 + 0xb9) != -1" (pointer_expression "*(char *)((int)piVar12 + 0xb9)" (* "*") (cast_expression "(char *)((int)piVar12 + 0xb9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar12 + 0xb9)" (( "(") (binary_expression "(int)piVar12 + 0xb9" (cast_expression "(int)piVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar12")) (+ "+") (number_literal "0xb9")) () ")")))) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n    FUN_0027bae0();\n    FUN_0027b990(local_20);\n    *(int *)(iVar8 + 0x50) = local_20[0];\n  }" ({ "{") (expression_statement "FUN_0027bae0();" (call_expression "FUN_0027bae0()" (identifier "FUN_0027bae0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_0027b990(local_20);" (call_expression "FUN_0027b990(local_20)" (identifier "FUN_0027b990") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))) (; ";")) (expression_statement "*(int *)(iVar8 + 0x50) = local_20[0];" (assignment_expression "*(int *)(iVar8 + 0x50) = local_20[0]" (pointer_expression "*(int *)(iVar8 + 0x50)" (* "*") (cast_expression "(int *)(iVar8 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x50)" (( "(") (binary_expression "iVar8 + 0x50" (identifier "iVar8") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (expression_statement "FUN_0027bb40(piVar12);" (call_expression "FUN_0027bb40(piVar12)" (identifier "FUN_0027bb40") (argument_list "(piVar12)" (( "(") (identifier "piVar12") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1 function_1(void)

{
  int iVar1;
  short *var_6;
  type_2 var_15;
  char var_18;
  int var_7;
  size_t var_9;
  type_2 *var_10;
  int var_4;
  type_2 var_13;
  type_2 var_12;
  int extraout_ECX;
  int var_2;
  int *var_20;
  type_2 *var_16;
  char *var_26;
  type_3 var_17;
  type_2 *var_23;
  type_3 var_14;
  int *var_3;
  type_2 var_11;
  type_4 uVar20;
  char *var_19;
  int local_20 [4];
  
  var_11 = 0;
  uVar20 = var_1();
  var_20 = (int *)((type_5)uVar20 >> 0x20);
  var_4 = (int)uVar20;
  var_3 = var_20;
  for (var_2 = extraout_ECX; var_2 != 0; var_2 = var_2 + -1) {
    *var_3 = 0;
    var_3 = var_3 + (type_3)var_11 * -2 + 1;
  }
  *(type_1 *)(var_4 + 0x68) = 0;
  *(type_1 *)(var_4 + 0x50) = 0;
  if (*(int *)(var_4 + 0x4c) == 0) {
    return 5;
  }
  var_2 = var_5((*(int *)(var_4 + 0x4c) + -1) - (*(int *)(var_4 + 0x60) >> 0x1f),
                            var_4 + 0x54);
  if (var_2 == 0) {
    var_2 = *(int *)(var_4 + 0x48);
    var_6 = *(short **)(var_4 + 0x4c);
    if (((*var_6 == -0x47a8) && (*(int *)(var_6 + 1) == 0x77)) && (var_6[3] == -0x7f33)) {
      var_4 = var_2 + 4;
    }
    else {
      if ((char)*var_6 != -0x48) {
        return 5;
      }
      if (*(int *)((int)var_6 + 1) != 0xad) {
        return 5;
      }
      if (*(short *)((int)var_6 + 5) != -0x7f33) {
        return 5;
      }
      var_4 = var_2 + 0xa0;
    }
    var_7 = *(int *)(var_4 + 0x1c);
    var_20[1] = 1;
    var_20[0x28] = 1;
    var_20[7] = 1;
    var_20[0x26] = 4;
    var_20[0x25] = var_7 - var_2;
    *var_20 = (var_4 + 0x2c) - var_7;
    var_20[3] = 1;
    var_20[6] = (var_4 + 0x20) - var_7;
    var_20[5] = 1;
    var_20[2] = (var_4 + 0x28) - var_7;
    var_20[0xd] = 1;
    var_20[4] = (var_4 + 0x24) - var_7;
    var_20[0xf] = 1;
    var_20[0xc] = (var_4 + 0x14) - var_7;
    var_20[0xb] = 1;
    var_20[0xe] = (var_4 + 0x10) - var_7;
    var_20[0x11] = 1;
    var_20[0x10] = (var_4 + 0x38) - var_7;
    var_20[10] = (var_4 + 0x18) - var_7;
    var_20[0x2d] = 8;
    *(type_6 *)((int)var_20 + 0xbb) = 1;
    return 0;
  }
  var_20[0x29] = *(int *)(var_4 + 0x5c);
  var_7 = (var_2 + 4) - *(int *)(var_2 + 4);
  var_19 = (char *)(var_7 + 9);
  var_9 = var_8(var_19);
  var_10 = (type_2 *)(var_7 + 10 + var_9);
  if ((*(char *)(var_7 + 9) == 'e') && (*(char *)(var_7 + 10) == 'h')) {
    iVar1 = *(int *)var_10;
    var_19 = (char *)(var_7 + 0xb);
    var_10 = var_10 + 4;
    var_20[0x2f] = iVar1;
  }
  var_11 = *(type_2 *)(var_7 + 8);
  var_12 = *var_10;
  if (3 < var_11) {
    if (var_12 != 4) {
      return 3;
    }
    if (var_10[1] != 0) {
      return 3;
    }
    var_12 = var_10[2];
    var_10 = var_10 + 2;
  }
  var_14 = 0;
  var_13 = 0;
  while( true ) {
    var_10 = var_10 + 1;
    var_15 = var_13 & 0x1f;
    var_13 = var_13 + 7;
    var_14 = var_14 | (var_12 & 0x7f) << var_15;
    if (-1 < (char)var_12) break;
    var_12 = *var_10;
  }
  var_20[0x2c] = var_14;
  var_17 = 0;
  var_14 = 0;
  do {
    var_16 = var_10;
    var_10 = var_16 + 1;
    var_12 = *var_16;
    var_13 = (type_2)var_14;
    var_14 = var_14 + 7;
    var_17 = var_17 | (var_12 & 0x7f) << (var_13 & 0x1f);
  } while ((char)var_12 < '\0');
  if ((var_14 < 0x20) && ((var_12 & 0x40) != 0)) {
    var_17 = var_17 | -1 << ((type_2)var_14 & 0x1f);
  }
  var_12 = 0;
  var_20[0x2b] = var_17;
  if (var_11 == 1) {
    var_16 = var_16 + 2;
    var_20[0x2d] = (type_3)*var_10;
  }
  else {
    var_14 = 0;
    do {
      var_16 = var_10 + 1;
      var_11 = *var_10;
      var_13 = var_12 & 0x1f;
      var_12 = var_12 + 7;
      var_14 = var_14 | (var_11 & 0x7f) << var_13;
      var_10 = var_16;
    } while ((char)var_11 < '\0');
    var_20[0x2d] = var_14;
  }
  *(type_6 *)((int)var_20 + 0xb9) = 0xff;
  var_10 = (type_2 *)0x0;
  var_18 = *var_19;
  if (var_18 == 'z') {
    var_11 = 0;
    var_14 = 0;
    var_10 = var_16;
    do {
      var_16 = var_10 + 1;
      var_12 = *var_10;
      var_13 = var_11 & 0x1f;
      var_11 = var_11 + 7;
      var_14 = var_14 | (var_12 & 0x7f) << var_13;
      var_10 = var_16;
    } while ((char)var_12 < '\0');
    var_10 = var_16 + var_14;
    *(type_6 *)((int)var_20 + 0xba) = 1;
    var_19 = var_19 + 1;
    var_18 = *var_19;
  }
  while (var_19 = var_19 + 1, var_18 != '\0') {
    if (var_18 == 'L') {
      var_11 = *var_16;
      var_16 = var_16 + 1;
      *(type_2 *)((int)var_20 + 0xb9) = var_11;
    }
    else if (var_18 == 'R') {
      var_11 = *var_16;
      var_16 = var_16 + 1;
      *(type_2 *)(var_20 + 0x2e) = var_11;
    }
    else if (var_18 == 'P') {
      var_21();
      var_16 = (type_2 *)var_22(local_20);
      var_20[0x2a] = local_20[0];
    }
    else {
      var_23 = var_10;
      if (var_18 != 'S') goto LAB_0027c844;
      *(type_6 *)((int)var_20 + 0xbb) = 1;
    }
    var_18 = *var_19;
  }
  var_23 = var_16;
  if (var_10 == (type_2 *)0x0) {
LAB_0027c844:
    if (var_23 == (type_2 *)0x0) {
      return 3;
    }
  }
  var_24(var_20);
  if (*(type_2 *)(var_20 + 0x2e) == 0xff) {
    var_7 = 8;
  }
  else {
    var_11 = *(type_2 *)(var_20 + 0x2e) & 7;
    if (var_11 == 2) {
      var_7 = 0xc;
    }
    else {
      if (var_11 < 3) {
        if (var_11 != 0) {
LAB_0027c97e:
                    /* WARNING: Subroutine does not return */
          var_25();
        }
      }
      else if (var_11 != 3) {
        if (var_11 != 4) goto LAB_0027c97e;
        var_7 = 0x18;
        goto LAB_0027c6ff;
      }
      var_7 = 0x10;
    }
  }
LAB_0027c6ff:
  var_26 = (char *)(var_7 + var_2);
  if (*(char *)((int)var_20 + 0xba) != '\0') {
    do {
      var_18 = *var_26;
      var_26 = var_26 + 1;
    } while (var_18 < '\0');
  }
  if (*(char *)((int)var_20 + 0xb9) != -1) {
    var_21();
    var_22(local_20);
    *(int *)(var_4 + 0x50) = local_20[0];
  }
  var_24(var_20);
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (for_statement initializer: (assignment_expression left: (identifier) right: (identifier)) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (return_statement (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (character)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (char_literal (escape_sequence))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))))

undefined4 MASKED(void)

{
  int iVar1;
  short *psVar2;
  byte bVar3;
  char cVar4;
  int iVar5;
  size_t sVar6;
  byte *pbVar7;
  int iVar8;
  byte bVar9;
  byte bVar10;
  int extraout_ECX;
  int iVar11;
  int *piVar12;
  byte *pbVar13;
  char *pcVar14;
  uint uVar15;
  byte *pbVar16;
  uint uVar17;
  int *piVar18;
  byte bVar19;
  undefined8 uVar20;
  char *local_38;
  int local_20 [4];
  
  bVar19 = 0;
  uVar20 = FUN_000559ee();
  piVar12 = (int *)((ulonglong)uVar20 >> 0x20);
  iVar8 = (int)uVar20;
  piVar18 = piVar12;
  for (iVar11 = extraout_ECX; iVar11 != 0; iVar11 = iVar11 + -1) {
    *piVar18 = 0;
    piVar18 = piVar18 + (uint)bVar19 * -2 + 1;
  }
  *(undefined4 *)(iVar8 + 0x68) = 0;
  *(undefined4 *)(iVar8 + 0x50) = 0;
  if (*(int *)(iVar8 + 0x4c) == 0) {
    return 5;
  }
  iVar11 = FUN_0027f910((*(int *)(iVar8 + 0x4c) + -1) - (*(int *)(iVar8 + 0x60) >> 0x1f),
                        iVar8 + 0x54);
  if (iVar11 == 0) {
    iVar11 = *(int *)(iVar8 + 0x48);
    psVar2 = *(short **)(iVar8 + 0x4c);
    if (((*psVar2 == -0x47a8) && (*(int *)(psVar2 + 1) == 0x77)) && (psVar2[3] == -0x7f33)) {
      iVar8 = iVar11 + 4;
    }
    else {
      if ((char)*psVar2 != -0x48) {
        return 5;
      }
      if (*(int *)((int)psVar2 + 1) != 0xad) {
        return 5;
      }
      if (*(short *)((int)psVar2 + 5) != -0x7f33) {
        return 5;
      }
      iVar8 = iVar11 + 0xa0;
    }
    iVar5 = *(int *)(iVar8 + 0x1c);
    piVar12[1] = 1;
    piVar12[0x28] = 1;
    piVar12[7] = 1;
    piVar12[0x26] = 4;
    piVar12[0x25] = iVar5 - iVar11;
    *piVar12 = (iVar8 + 0x2c) - iVar5;
    piVar12[3] = 1;
    piVar12[6] = (iVar8 + 0x20) - iVar5;
    piVar12[5] = 1;
    piVar12[2] = (iVar8 + 0x28) - iVar5;
    piVar12[0xd] = 1;
    piVar12[4] = (iVar8 + 0x24) - iVar5;
    piVar12[0xf] = 1;
    piVar12[0xc] = (iVar8 + 0x14) - iVar5;
    piVar12[0xb] = 1;
    piVar12[0xe] = (iVar8 + 0x10) - iVar5;
    piVar12[0x11] = 1;
    piVar12[0x10] = (iVar8 + 0x38) - iVar5;
    piVar12[10] = (iVar8 + 0x18) - iVar5;
    piVar12[0x2d] = 8;
    *(undefined1 *)((int)piVar12 + 0xbb) = 1;
    return 0;
  }
  piVar12[0x29] = *(int *)(iVar8 + 0x5c);
  iVar5 = (iVar11 + 4) - *(int *)(iVar11 + 4);
  local_38 = (char *)(iVar5 + 9);
  sVar6 = strlen(local_38);
  pbVar7 = (byte *)(iVar5 + 10 + sVar6);
  if ((*(char *)(iVar5 + 9) == 'e') && (*(char *)(iVar5 + 10) == 'h')) {
    iVar1 = *(int *)pbVar7;
    local_38 = (char *)(iVar5 + 0xb);
    pbVar7 = pbVar7 + 4;
    piVar12[0x2f] = iVar1;
  }
  bVar19 = *(byte *)(iVar5 + 8);
  bVar10 = *pbVar7;
  if (3 < bVar19) {
    if (bVar10 != 4) {
      return 3;
    }
    if (pbVar7[1] != 0) {
      return 3;
    }
    bVar10 = pbVar7[2];
    pbVar7 = pbVar7 + 2;
  }
  uVar17 = 0;
  bVar9 = 0;
  while( true ) {
    pbVar7 = pbVar7 + 1;
    bVar3 = bVar9 & 0x1f;
    bVar9 = bVar9 + 7;
    uVar17 = uVar17 | (bVar10 & 0x7f) << bVar3;
    if (-1 < (char)bVar10) break;
    bVar10 = *pbVar7;
  }
  piVar12[0x2c] = uVar17;
  uVar15 = 0;
  uVar17 = 0;
  do {
    pbVar13 = pbVar7;
    pbVar7 = pbVar13 + 1;
    bVar10 = *pbVar13;
    bVar9 = (byte)uVar17;
    uVar17 = uVar17 + 7;
    uVar15 = uVar15 | (bVar10 & 0x7f) << (bVar9 & 0x1f);
  } while ((char)bVar10 < '\0');
  if ((uVar17 < 0x20) && ((bVar10 & 0x40) != 0)) {
    uVar15 = uVar15 | -1 << ((byte)uVar17 & 0x1f);
  }
  bVar10 = 0;
  piVar12[0x2b] = uVar15;
  if (bVar19 == 1) {
    pbVar13 = pbVar13 + 2;
    piVar12[0x2d] = (uint)*pbVar7;
  }
  else {
    uVar17 = 0;
    do {
      pbVar13 = pbVar7 + 1;
      bVar19 = *pbVar7;
      bVar9 = bVar10 & 0x1f;
      bVar10 = bVar10 + 7;
      uVar17 = uVar17 | (bVar19 & 0x7f) << bVar9;
      pbVar7 = pbVar13;
    } while ((char)bVar19 < '\0');
    piVar12[0x2d] = uVar17;
  }
  *(undefined1 *)((int)piVar12 + 0xb9) = 0xff;
  pbVar7 = (byte *)0x0;
  cVar4 = *local_38;
  if (cVar4 == 'z') {
    bVar19 = 0;
    uVar17 = 0;
    pbVar7 = pbVar13;
    do {
      pbVar13 = pbVar7 + 1;
      bVar10 = *pbVar7;
      bVar9 = bVar19 & 0x1f;
      bVar19 = bVar19 + 7;
      uVar17 = uVar17 | (bVar10 & 0x7f) << bVar9;
      pbVar7 = pbVar13;
    } while ((char)bVar10 < '\0');
    pbVar7 = pbVar13 + uVar17;
    *(undefined1 *)((int)piVar12 + 0xba) = 1;
    local_38 = local_38 + 1;
    cVar4 = *local_38;
  }
  while (local_38 = local_38 + 1, cVar4 != '\0') {
    if (cVar4 == 'L') {
      bVar19 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      *(byte *)((int)piVar12 + 0xb9) = bVar19;
    }
    else if (cVar4 == 'R') {
      bVar19 = *pbVar13;
      pbVar13 = pbVar13 + 1;
      *(byte *)(piVar12 + 0x2e) = bVar19;
    }
    else if (cVar4 == 'P') {
      FUN_0027bae0();
      pbVar13 = (byte *)FUN_0027b990(local_20);
      piVar12[0x2a] = local_20[0];
    }
    else {
      pbVar16 = pbVar7;
      if (cVar4 != 'S') goto LAB_0027c844;
      *(undefined1 *)((int)piVar12 + 0xbb) = 1;
    }
    cVar4 = *local_38;
  }
  pbVar16 = pbVar13;
  if (pbVar7 == (byte *)0x0) {
LAB_0027c844:
    if (pbVar16 == (byte *)0x0) {
      return 3;
    }
  }
  FUN_0027bb40(piVar12);
  if (*(byte *)(piVar12 + 0x2e) == 0xff) {
    iVar5 = 8;
  }
  else {
    bVar19 = *(byte *)(piVar12 + 0x2e) & 7;
    if (bVar19 == 2) {
      iVar5 = 0xc;
    }
    else {
      if (bVar19 < 3) {
        if (bVar19 != 0) {
LAB_0027c97e:
                    /* WARNING: Subroutine does not return */
          abort();
        }
      }
      else if (bVar19 != 3) {
        if (bVar19 != 4) goto LAB_0027c97e;
        iVar5 = 0x18;
        goto LAB_0027c6ff;
      }
      iVar5 = 0x10;
    }
  }
LAB_0027c6ff:
  pcVar14 = (char *)(iVar5 + iVar11);
  if (*(char *)((int)piVar12 + 0xba) != '\0') {
    do {
      cVar4 = *pcVar14;
      pcVar14 = pcVar14 + 1;
    } while (cVar4 < '\0');
  }
  if (*(char *)((int)piVar12 + 0xb9) != -1) {
    FUN_0027bae0();
    FUN_0027b990(local_20);
    *(int *)(iVar8 + 0x50) = local_20[0];
  }
  FUN_0027bb40(piVar12);
  return 0;
}

