
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

int yyparse(void)

{
  uint uVar1;
  short *psVar2;
  short *psVar3;
  short *__src;
  int iVar4;
  short *psVar5;
  YYSTYPE *pYVar6;
  YYSTYPE *pYVar7;
  uint uVar8;
  char *in_stack_fffffaf4;
  YYSTYPE local_500;
  uint local_4f4;
  uint local_4f0;
  YYSTYPE *local_4ec;
  int local_4e8;
  short sStack_4ce;
  yytype_int16 yyssa [200];
  YYSTYPE yyvsa [200];
  
  local_4ec = yyvsa;
  local_500 = (YYSTYPE)0x0;
  local_4e8 = 0;
  local_4f4 = 200;
  yynerrs = 0;
  yychar = -2;
  yyssa[0] = 0;
  __src = yyssa;
  psVar2 = yyssa;
  pYVar6 = local_4ec;
  do {
    uVar8 = (uint)yypact[local_500.name];
    psVar3 = __src;
    if (uVar8 != 0xfffffff2) {
      if (yychar == -2) {
        yychar = yylex();
      }
      if (yychar < 1) {
        local_4f0 = 0;
        yychar = 0;
        uVar1 = uVar8;
      }
      else if (yychar < 0x114) {
        local_4f0 = (uint)""[yychar];
        uVar1 = uVar8 + local_4f0;
      }
      else {
        local_4f0 = 2;
        uVar1 = uVar8 + 2;
      }
      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;
      local_500 = (YYSTYPE)(int)yytable[uVar1];
      if ((int)local_500.name < 1) {
        uVar1 = -(int)local_500.name;
        goto LAB_00014e24;
      }
      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);
      pYVar7 = pYVar6 + 1;
      yychar = -2;
      *pYVar7 = yylval;
      goto LAB_00014ecb;
    }
LAB_00014d80:
    uVar1 = (uint)"\x02"[(int)local_500];
    if (uVar1 == 0) {
      if (local_4e8 == 0) {
        yynerrs = yynerrs + 1;
        yyerror(in_stack_fffffaf4);
      }
      else if (local_4e8 == 3) {
        if (yychar < 1) {
          if (yychar == 0) {
            iVar4 = 1;
            goto LAB_00015015;
          }
        }
        else {
          yychar = -2;
        }
      }
      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||
             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {
        if (psVar2 == __src) {
          iVar4 = 1;
          psVar3 = psVar2;
          goto LAB_00015015;
        }
        psVar2 = psVar2 + -1;
        pYVar6 = pYVar6 + -1;
        uVar8 = (uint)yypact[*psVar2];
      }
      pYVar7 = pYVar6 + 1;
      local_4e8 = 3;
      *pYVar7 = yylval;
      goto LAB_00014ecb;
    }
LAB_00014e24:
    uVar8 = (uint)""[uVar1];
    local_500 = pYVar6[1 - uVar8];
    switch(uVar1) {
    case 2:
    case 6:
      prompt();
      break;
    case 0x13:
      ar_end();
      return 0;
    case 0x15:
      yyerror(in_stack_fffffaf4);
      break;
    case 0x17:
      ar_extract(pYVar6->list);
      break;
    case 0x18:
      ar_replace(pYVar6->list);
      break;
    case 0x19:
      ar_clear();
      break;
    case 0x1a:
      ar_delete(pYVar6->list);
      break;
    case 0x1b:
      ar_addmod(pYVar6->list);
      break;
    case 0x1c:
      ar_list();
      break;
    case 0x1d:
      ar_save();
      break;
    case 0x1e:
      iVar4 = 0;
      goto LAB_00014e5b;
    case 0x1f:
      iVar4 = 1;
LAB_00014e5b:
      ar_open(pYVar6->name,iVar4);
      break;
    case 0x20:
      ar_addlib(pYVar6[-1].name,pYVar6->list);
      break;
    case 0x21:
      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);
      break;
    case 0x22:
      local_500.list = *(list **)pYVar6;
      break;
    case 0x23:
    case 0x25:
    case 0x27:
      local_500.name = (char *)0x0;
      break;
    case 0x24:
      local_500 = pYVar6[-1];
      break;
    case 0x26:
      local_500.name = (char *)malloc(8);
      (local_500.list)->next = (list *)pYVar6[-2];
      (local_500.list)->name = (char *)*(list **)pYVar6;
      break;
    case 0x2a:
      verbose = (int)(verbose == 0);
    }
    psVar2 = psVar2 + -uVar8;
    pYVar7 = pYVar6 + (1 - uVar8);
    pYVar6[1 - uVar8] = local_500;
    uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2;
    if ((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])) {
      local_500 = (YYSTYPE)(int)yytable[uVar8];
    }
    else {
      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];
    }
LAB_00014ecb:
    psVar5 = psVar2 + 1;
    psVar2[1] = local_500._0_2_;
    uVar8 = local_4f4 * 2;
    if (__src + (local_4f4 - 1) <= psVar5) {
      iVar4 = (int)psVar5 - (int)__src >> 1;
      if (local_4f4 < 10000) {
        local_4f4 = 10000;
        if (uVar8 < 0x2711) {
          local_4f4 = uVar8;
        }
        psVar3 = (short *)malloc(local_4f4 * 6 + 3);
        if (psVar3 != (short *)0x0) {
          memcpy(psVar3,__src,(iVar4 + 1) * 2);
          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);
          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);
          if (__src != yyssa) {
            free(__src);
          }
          psVar5 = psVar3 + iVar4;
          pYVar7 = pYVar6 + iVar4;
          local_4ec = pYVar6;
          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;
          iVar4 = 1;
          goto LAB_0001501b;
        }
      }
      iVar4 = 2;
      yyerror(in_stack_fffffaf4);
      psVar3 = __src;
      goto LAB_00015015;
    }
LAB_00014fae:
    __src = psVar3;
    psVar2 = psVar5;
    pYVar6 = pYVar7;
  } while (local_500 != (YYSTYPE)0x3);
  iVar4 = 0;
LAB_00015015:
  if (psVar3 != yyssa) {
LAB_0001501b:
    free(psVar3);
  }
  return iVar4;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 FUN_00014c60(void)

{
  int iVar1;
  short *psVar2;
  uint uVar3;
  short *psVar4;
  short *psVar5;
  short *__src;
  int iVar6;
  short *psVar7;
  short *psVar8;
  undefined4 uVar9;
  uint uVar10;
  undefined4 *local_500;
  uint local_4f4;
  uint local_4f0;
  short *local_4ec;
  int local_4e8;
  short local_4ce [201];
  short local_33c [404];
  undefined4 uStack_14;
  
  uStack_14 = 0x14c69;
  psVar2 = local_4ce + 1;
  local_4ec = local_33c;
  local_500 = (undefined4 *)0x0;
  local_4e8 = 0;
  local_4f4 = 200;
  DAT_00021388 = 0;
  DAT_0002138c = -2;
  local_4ce[1] = 0;
  __src = psVar2;
  psVar4 = psVar2;
  psVar7 = local_4ec;
  do {
    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];
    psVar5 = __src;
    if (uVar10 != 0xfffffff2) {
      if (DAT_0002138c == -2) {
        DAT_0002138c = FUN_00015810();
      }
      if (DAT_0002138c < 1) {
        local_4f0 = 0;
        DAT_0002138c = 0;
        uVar3 = uVar10;
      }
      else if (DAT_0002138c < 0x114) {
        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];
        uVar3 = uVar10 + local_4f0;
      }
      else {
        local_4f0 = 2;
        uVar3 = uVar10 + 2;
      }
      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;
      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];
      if ((int)local_500 < 1) {
        uVar3 = -(int)local_500;
        goto LAB_00014e24;
      }
      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);
      psVar8 = psVar7 + 2;
      DAT_0002138c = -2;
      *(undefined4 *)psVar8 = DAT_00021390;
      goto LAB_00014ecb;
    }
LAB_00014d80:
    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];
    if (uVar3 == 0) {
      if (local_4e8 == 0) {
        DAT_00021388 = DAT_00021388 + 1;
        FUN_00014c20();
      }
      else if (local_4e8 == 3) {
        if (DAT_0002138c < 1) {
          if (DAT_0002138c == 0) {
            uVar9 = 1;
            goto LAB_00015015;
          }
        }
        else {
          DAT_0002138c = -2;
        }
      }
      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))
             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))
      {
        if (psVar4 == __src) {
          uVar9 = 1;
          psVar5 = psVar4;
          goto LAB_00015015;
        }
        psVar4 = psVar4 + -1;
        psVar7 = psVar7 + -2;
        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];
      }
      psVar8 = psVar7 + 2;
      local_4e8 = 3;
      *(undefined4 *)psVar8 = DAT_00021390;
      goto LAB_00014ecb;
    }
LAB_00014e24:
    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];
    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);
    switch(uVar3) {
    case 2:
    case 6:
      FUN_000169c0();
      break;
    case 0x13:
      FUN_00017320();
      return 0;
    case 0x15:
      FUN_00014c20();
      break;
    case 0x17:
      FUN_00017360(*(undefined4 *)psVar7);
      break;
    case 0x18:
      FUN_00016ff0(*(undefined4 *)psVar7);
      break;
    case 0x19:
      FUN_00016db0();
      break;
    case 0x1a:
      FUN_00016dd0(*(undefined4 *)psVar7);
      break;
    case 0x1b:
      FUN_00016c90(*(undefined4 *)psVar7);
      break;
    case 0x1c:
      FUN_00017240();
      break;
    case 0x1d:
      FUN_00016f20();
      break;
    case 0x1e:
      uVar9 = 0;
      goto code_r0x00014e5b;
    case 0x1f:
      uVar9 = 1;
code_r0x00014e5b:
      FUN_00016a40(*(undefined4 *)psVar7,uVar9);
      break;
    case 0x20:
      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);
      break;
    case 0x21:
      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);
      break;
    case 0x22:
      local_500 = *(undefined4 **)psVar7;
      break;
    case 0x23:
    case 0x25:
    case 0x27:
      local_500 = (undefined4 *)0x0;
      break;
    case 0x24:
      local_500 = *(undefined4 **)(psVar7 + -2);
      break;
    case 0x26:
      local_500 = (undefined4 *)malloc(8);
      local_500[1] = *(undefined4 *)(psVar7 + -4);
      *local_500 = *(undefined4 *)psVar7;
      break;
    case 0x2a:
      DAT_0002126c = (uint)(DAT_0002126c == 0);
    }
    psVar4 = psVar4 + -uVar10;
    psVar8 = psVar7 + uVar10 * -2 + 2;
    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;
    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;
    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {
      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];
    }
    else {
      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];
    }
LAB_00014ecb:
    psVar7 = psVar4 + 1;
    psVar4[1] = (short)local_500;
    uVar10 = local_4f4 * 2;
    if (__src + (local_4f4 - 1) <= psVar7) {
      iVar6 = (int)psVar7 - (int)__src >> 1;
      iVar1 = iVar6 + 1;
      if (local_4f4 < 10000) {
        local_4f4 = 10000;
        if (uVar10 < 0x2711) {
          local_4f4 = uVar10;
        }
        psVar5 = (short *)malloc(local_4f4 * 6 + 3);
        if (psVar5 != (short *)0x0) {
          memcpy(psVar5,__src,iVar1 * 2);
          psVar4 = psVar5 + local_4f4;
          memcpy(psVar4,local_4ec,iVar1 * 4);
          if (__src != psVar2) {
            free(__src);
          }
          psVar7 = psVar5 + iVar6;
          psVar8 = psVar4 + iVar1 * 2 + -2;
          local_4ec = psVar4;
          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;
          uVar9 = 1;
          goto LAB_0001501b;
        }
      }
      uVar9 = 2;
      FUN_00014c20();
      psVar5 = __src;
      goto LAB_00015015;
    }
LAB_00014fae:
    __src = psVar5;
    psVar4 = psVar7;
    psVar7 = psVar8;
  } while (local_500 != (undefined4 *)0x3);
  uVar9 = 0;
LAB_00015015:
  if (psVar5 != psVar2) {
LAB_0001501b:
    free(psVar5);
  }
  return uVar9;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013710
ADD EBX,0xc397
SUB ESP,0x4fc
LEA ECX,[ESP + 0x40]
LEA ESI,[ESP + 0x1d0]
MOV dword ptr [ESP + 0xc],0x0
MOV dword ptr [ESP + 0x24],0x0
MOV EBP,ECX
MOV dword ptr [ESP + 0x18],0xc8
LEA EAX,[EBX + 0x388]
MOV dword ptr [ESP + 0x20],ESI
MOV dword ptr [ESP + 0x28],ECX
MOV dword ptr [EAX],0x0
MOV dword ptr [ESP + 0x30],EAX
LEA EAX,[EBX + 0x38c]
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [EAX],0xfffffffe
XOR EAX,EAX
MOV word ptr [ESP + 0x40],AX
LEA EAX,[EBX + 0xffffa260]
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[EBX + 0x26c]
MOV dword ptr [ESP + 0x38],EAX
LEA EAX,[EBX + 0x390]
MOV dword ptr [ESP + 0x34],EAX
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x14]
MOVSX EDI,byte ptr [EAX + EDX*0x1]
MOV EDX,EDI
CMP EDI,-0xe
JZ 0x00014d80
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
CMP EAX,-0x2
JZ 0x00015038
TEST EAX,EAX
JLE 0x00014fc0
CMP EAX,0x113
JLE 0x00014fe0
MOV dword ptr [ESP + 0x1c],0x2
LEA EDX,[EDI + 0x2]
CMP EDX,0x22
JA 0x00014d80
MOVZX EAX,byte ptr [EBX + EDX*0x1 + 0xffffa180]
CMP EAX,dword ptr [ESP + 0x1c]
JNZ 0x00014d80
MOVSX EAX,byte ptr [EBX + EDX*0x1 + 0xffffa1c0]
MOV dword ptr [ESP + 0xc],EAX
TEST EAX,EAX
JLE 0x00014e20
MOV EAX,dword ptr [ESP + 0x24]
CMP EAX,0x1
ADC EAX,-0x1
ADD ESI,0x4
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [EAX],0xfffffffe
LEA EAX,[EBX + 0x390]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESI],EAX
MOV EAX,EBP
JMP 0x00014ecb
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EDX,byte ptr [EBX + EAX*0x1 + 0xffffa220]
TEST EDX,EDX
JNZ 0x00014e24
MOV EAX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JZ 0x00015060
CMP dword ptr [ESP + 0x24],0x3
JNZ 0x00014dbb
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JG 0x00014ff8
JZ 0x0001529d
MOV EDX,dword ptr [ESP + 0x14]
JMP 0x00014dde
CMP EBP,ECX
JZ 0x00015010
SUB EBP,0x2
MOVSX EAX,word ptr [EBP]
SUB ESI,0x4
MOVSX EDI,byte ptr [EDX + EAX*0x1]
CMP EDI,-0xe
JZ 0x00014dc8
LEA EAX,[EDI + 0x1]
CMP EAX,0x22
JA 0x00014dc8
CMP byte ptr [EBX + EDI*0x1 + 0xffffa181],0x1
JNZ 0x00014dc8
MOVSX EAX,byte ptr [EBX + EDI*0x1 + 0xffffa1c1]
TEST EAX,EAX
JLE 0x00014dc8
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [ESP + 0x34]
ADD ESI,0x4
MOV dword ptr [ESP + 0x24],0x3
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESI],EAX
MOV EAX,EBP
JMP 0x00014ecb
NEG EAX
MOV EDX,EAX
MOVZX EDI,byte ptr [EBX + EDX*0x1 + 0xffffa100]
MOV EAX,0x1
SUB EAX,EDI
MOV dword ptr [ESP + 0x1c],EDI
MOV EAX,dword ptr [ESI + EAX*0x4]
MOV dword ptr [ESP + 0xc],EAX
CMP EDX,0x2a
JA 0x00014e70
MOV EAX,dword ptr [EBX + EDX*0x4 + 0xffffa040]
ADD EAX,EBX
JMP EAX
MOV EDI,dword ptr [ESP + 0x1c]
LEA EAX,[EDI*0x4 + 0x0]
ADD EDI,EDI
SUB ESI,EAX
MOV EAX,EBP
MOV EBP,dword ptr [ESP + 0xc]
SUB EAX,EDI
MOV EDI,ESI
LEA ESI,[ESI + 0x4]
MOV dword ptr [EDI + 0x4],EBP
MOVZX EBP,byte ptr [EBX + EDX*0x1 + 0xffffa140]
MOVSX EDI,word ptr [EAX]
MOVSX EDX,byte ptr [EBX + EBP*0x1 + 0xffffa1e4]
MOV dword ptr [ESP + 0xc],EDI
ADD EDX,EDI
CMP EDX,0x22
JA 0x00014ebf
MOVZX EDI,byte ptr [EBX + EDX*0x1 + 0xffffa180]
CMP dword ptr [ESP + 0xc],EDI
JZ 0x00015080
MOVSX EDX,byte ptr [EBX + EBP*0x1 + 0xffffa1cc]
MOV dword ptr [ESP + 0xc],EDX
MOVZX EDX,word ptr [ESP + 0xc]
MOV EDI,dword ptr [ESP + 0x18]
LEA EBP,[EAX + 0x2]
MOV word ptr [EAX + 0x2],DX
LEA EAX,[EDI + EDI*0x1 + -0x2]
LEA EDX,[ECX + EAX*0x1]
CMP EBP,EDX
JC 0x00014fae
SUB EBP,ECX
SAR EBP,0x1
LEA ESI,[EBP + 0x1]
CMP EDI,0x270f
JA 0x00015278
ADD EAX,0x2
MOV EDX,0x2710
MOV dword ptr [ESP + 0x2c],ECX
CMP EAX,0x2710
CMOVBE EDX,EAX
SUB ESP,0xc
MOV dword ptr [ESP + 0x24],EDX
LEA EAX,[EDX + EDX*0x1]
MOV dword ptr [ESP + 0x28],EAX
ADD EAX,EDX
LEA EAX,[EAX + EAX*0x1 + 0x3]
PUSH EAX
CALL 0x000122e0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x2c]
TEST EAX,EAX
MOV EDI,EAX
JZ 0x00015278
SUB ESP,0x4
LEA EBP,[ESI + ESI*0x1]
SHL ESI,0x2
PUSH EBP
PUSH ECX
MOV dword ptr [ESP + 0x38],ECX
PUSH EAX
CALL 0x00012120
MOV EAX,dword ptr [ESP + 0x2c]
ADD ESP,0xc
PUSH ESI
LEA EDX,[EAX + 0x3]
PUSH dword ptr [ESP + 0x28]
AND EDX,0xfffffffc
ADD EDX,EDI
PUSH EDX
MOV dword ptr [ESP + 0x30],EDX
CALL 0x00012120
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x20]
CMP ECX,dword ptr [ESP + 0x28]
JZ 0x00014f90
SUB ESP,0xc
PUSH ECX
CALL 0x00012100
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x1c]
LEA EBP,[EDI + EBP*0x1 + -0x2]
LEA ESI,[EDX + ESI*0x1 + -0x4]
LEA EAX,[EDI + EAX*0x1 + -0x2]
CMP EBP,EAX
JNC 0x00015291
MOV dword ptr [ESP + 0x20],EDX
MOV ECX,EDI
CMP dword ptr [ESP + 0xc],0x3
JNZ 0x00014ce7
MOV EBP,ECX
XOR ESI,ESI
JMP 0x00015015
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x1c],0x0
MOV dword ptr [EAX],0x0
JMP 0x00014d2b
MOVZX EAX,byte ptr [EBX + EAX*0x1 + 0xffffa2a0]
MOV dword ptr [ESP + 0x1c],EAX
LEA EDX,[EDI + EAX*0x1]
JMP 0x00014d2b
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
MOV dword ptr [EAX],0xfffffffe
JMP 0x00014dde
MOV ESI,0x1
CMP EBP,dword ptr [ESP + 0x28]
JZ 0x00015027
SUB ESP,0xc
PUSH EBP
CALL 0x00012100
ADD ESP,0x10
ADD ESP,0x4fc
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x2c],ECX
MOV dword ptr [ESP + 0x1c],EDI
CALL 0x00015810
MOV ECX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x1c]
MOV dword ptr [ECX],EAX
MOV ECX,dword ptr [ESP + 0x2c]
JMP 0x00014d0d
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0xc],ECX
ADD dword ptr [EAX],0x1
CALL 0x00014c20
MOV ECX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [ESP + 0x14]
JMP 0x00014dde
MOVSX EDX,byte ptr [EBX + EDX*0x1 + 0xffffa1c0]
MOV dword ptr [ESP + 0xc],EDX
JMP 0x00014ecb
MOV dword ptr [ESP + 0xc],ECX
MOV ESI,0x2
CALL 0x00014c20
MOV ECX,dword ptr [ESP + 0xc]
MOV EBP,ECX
JMP 0x00015015
MOV EBP,EDI
MOV ESI,0x1
JMP 0x0001501b
MOV EBP,ECX
MOV ESI,0x1
JMP 0x00015015
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_00014c60(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}\n\n" comment (function_definition "undefined4 FUN_00014c60(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}" type_identifier (function_declarator "FUN_00014c60(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "short *psVar2;" (sized_type_specifier "short" short) (pointer_declarator "*psVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "short *psVar4;" (sized_type_specifier "short" short) (pointer_declarator "*psVar4" * identifier) ;) (declaration "short *psVar5;" (sized_type_specifier "short" short) (pointer_declarator "*psVar5" * identifier) ;) (declaration "short *__src;" (sized_type_specifier "short" short) (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "short *psVar7;" (sized_type_specifier "short" short) (pointer_declarator "*psVar7" * identifier) ;) (declaration "short *psVar8;" (sized_type_specifier "short" short) (pointer_declarator "*psVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *local_500;" type_identifier (pointer_declarator "*local_500" * identifier) ;) (declaration "uint local_4f4;" type_identifier identifier ;) (declaration "uint local_4f0;" type_identifier identifier ;) (declaration "short *local_4ec;" (sized_type_specifier "short" short) (pointer_declarator "*local_4ec" * identifier) ;) (declaration "int local_4e8;" primitive_type identifier ;) (declaration "short local_4ce [201];" (sized_type_specifier "short" short) (array_declarator "local_4ce [201]" identifier [ number_literal ]) ;) (declaration "short local_33c [404];" (sized_type_specifier "short" short) (array_declarator "local_33c [404]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x14c69;" (assignment_expression "uStack_14 = 0x14c69" identifier = number_literal) ;) (expression_statement "psVar2 = local_4ce + 1;" (assignment_expression "psVar2 = local_4ce + 1" identifier = (binary_expression "local_4ce + 1" identifier + number_literal)) ;) (expression_statement "local_4ec = local_33c;" (assignment_expression "local_4ec = local_33c" identifier = identifier) ;) (expression_statement "local_500 = (undefined4 *)0x0;" (assignment_expression "local_500 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_4e8 = 0;" (assignment_expression "local_4e8 = 0" identifier = number_literal) ;) (expression_statement "local_4f4 = 200;" (assignment_expression "local_4f4 = 200" identifier = number_literal) ;) (expression_statement "DAT_00021388 = 0;" (assignment_expression "DAT_00021388 = 0" identifier = number_literal) ;) (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" identifier = number_literal) ;) (expression_statement "local_4ce[1] = 0;" (assignment_expression "local_4ce[1] = 0" (subscript_expression "local_4ce[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__src = psVar2;" (assignment_expression "__src = psVar2" identifier = identifier) ;) (expression_statement "psVar4 = psVar2;" (assignment_expression "psVar4 = psVar2" identifier = identifier) ;) (expression_statement "psVar7 = local_4ec;" (assignment_expression "psVar7 = local_4ec" identifier = identifier) ;) (do_statement "do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);" do (compound_statement "{\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  }" { (expression_statement "uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];" (assignment_expression "uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500]" identifier = (subscript_expression "(uint)(char)(&DAT_0001b260)[(int)local_500]" (call_expression "(uint)(char)(&DAT_0001b260)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0001b260)" ( (pointer_expression "&DAT_0001b260" & identifier) ))) [ (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "psVar5 = __src;" (assignment_expression "psVar5 = __src" identifier = identifier) ;) (if_statement "if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" if (parenthesized_expression "(uVar10 != 0xfffffff2)" ( (binary_expression "uVar10 != 0xfffffff2" identifier != number_literal) )) (compound_statement "{\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" { (if_statement "if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }" if (parenthesized_expression "(DAT_0002138c == -2)" ( (binary_expression "DAT_0002138c == -2" identifier == number_literal) )) (compound_statement "{\n        DAT_0002138c = FUN_00015810();\n      }" { (expression_statement "DAT_0002138c = FUN_00015810();" (assignment_expression "DAT_0002138c = FUN_00015810()" identifier = (call_expression "FUN_00015810()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" if (parenthesized_expression "(DAT_0002138c < 1)" ( (binary_expression "DAT_0002138c < 1" identifier < number_literal) )) (compound_statement "{\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }" { (expression_statement "local_4f0 = 0;" (assignment_expression "local_4f0 = 0" identifier = number_literal) ;) (expression_statement "DAT_0002138c = 0;" (assignment_expression "DAT_0002138c = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar10;" (assignment_expression "uVar3 = uVar10" identifier = identifier) ;) }) (else_clause "else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" else (if_statement "if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" if (parenthesized_expression "(DAT_0002138c < 0x114)" ( (binary_expression "DAT_0002138c < 0x114" identifier < number_literal) )) (compound_statement "{\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }" { (expression_statement "local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];" (assignment_expression "local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c]" identifier = (subscript_expression "(uint)(byte)(&UNK_0001b2a0)[DAT_0002138c]" (call_expression "(uint)(byte)(&UNK_0001b2a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&UNK_0001b2a0)" ( (pointer_expression "&UNK_0001b2a0" & identifier) ))) [ identifier ])) ;) (expression_statement "uVar3 = uVar10 + local_4f0;" (assignment_expression "uVar3 = uVar10 + local_4f0" identifier = (binary_expression "uVar10 + local_4f0" identifier + identifier)) ;) }) (else_clause "else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" else (compound_statement "{\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" { (expression_statement "local_4f0 = 2;" (assignment_expression "local_4f0 = 2" identifier = number_literal) ;) (expression_statement "uVar3 = uVar10 + 2;" (assignment_expression "uVar3 = uVar10 + 2" identifier = (binary_expression "uVar10 + 2" identifier + number_literal)) ;) }))))) (if_statement "if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;" if (parenthesized_expression "((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0))" ( (binary_expression "(0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)" (parenthesized_expression "(0x22 < uVar3)" ( (binary_expression "0x22 < uVar3" number_literal < identifier) )) || (parenthesized_expression "((byte)(&DAT_0001b180)[uVar3] != local_4f0)" ( (binary_expression "(byte)(&DAT_0001b180)[uVar3] != local_4f0" (subscript_expression "(byte)(&DAT_0001b180)[uVar3]" (call_expression "(byte)(&DAT_0001b180)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0001b180)" ( (pointer_expression "&DAT_0001b180" & identifier) ))) [ identifier ]) != identifier) ))) )) (goto_statement "goto LAB_00014d80;" goto statement_identifier ;)) (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1c0)[uVar3]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1c0)[uVar3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1c0)[uVar3]" (parenthesized_expression "(&DAT_0001b1c0)" ( (pointer_expression "&DAT_0001b1c0" & identifier) )) [ identifier ]))))) ;) (if_statement "if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }" if (parenthesized_expression "((int)local_500 < 1)" ( (binary_expression "(int)local_500 < 1" (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }" { (expression_statement "uVar3 = -(int)local_500;" (assignment_expression "uVar3 = -(int)local_500" identifier = (unary_expression "-(int)local_500" - (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00014e24;" goto statement_identifier ;) })) (expression_statement "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);" (assignment_expression "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0)" identifier = (binary_expression "local_4e8 + -1 + (uint)(local_4e8 == 0)" (binary_expression "local_4e8 + -1" identifier + number_literal) + (call_expression "(uint)(local_4e8 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4e8 == 0)" ( (binary_expression "local_4e8 == 0" identifier == number_literal) ))))) ;) (expression_statement "psVar8 = psVar7 + 2;" (assignment_expression "psVar8 = psVar7 + 2" identifier = (binary_expression "psVar7 + 2" identifier + number_literal)) ;) (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" identifier = number_literal) ;) (expression_statement "*(undefined4 *)psVar8 = DAT_00021390;" (assignment_expression "*(undefined4 *)psVar8 = DAT_00021390" (pointer_expression "*(undefined4 *)psVar8" * (cast_expression "(undefined4 *)psVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (goto_statement "goto LAB_00014ecb;" goto statement_identifier ;) })) (labeled_statement "LAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];" statement_identifier : (expression_statement "uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001b220)[(int)local_500]" (call_expression "(uint)(byte)(&DAT_0001b220)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001b220)" ( (pointer_expression "&DAT_0001b220" & identifier) ))) [ (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;)) (if_statement "if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" { (if_statement "if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" if (parenthesized_expression "(local_4e8 == 0)" ( (binary_expression "local_4e8 == 0" identifier == number_literal) )) (compound_statement "{\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }" { (expression_statement "DAT_00021388 = DAT_00021388 + 1;" (assignment_expression "DAT_00021388 = DAT_00021388 + 1" identifier = (binary_expression "DAT_00021388 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" else (if_statement "if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" if (parenthesized_expression "(local_4e8 == 3)" ( (binary_expression "local_4e8 == 3" identifier == number_literal) )) (compound_statement "{\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" { (if_statement "if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }" if (parenthesized_expression "(DAT_0002138c < 1)" ( (binary_expression "DAT_0002138c < 1" identifier < number_literal) )) (compound_statement "{\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }" { (if_statement "if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }" if (parenthesized_expression "(DAT_0002138c == 0)" ( (binary_expression "DAT_0002138c == 0" identifier == number_literal) )) (compound_statement "{\n            uVar9 = 1;\n            goto LAB_00015015;\n          }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) }) (else_clause "else {\n          DAT_0002138c = -2;\n        }" else (compound_statement "{\n          DAT_0002138c = -2;\n        }" { (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" identifier = number_literal) ;) }))) })))) (while_statement "while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }" while (parenthesized_expression "((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))" ( (parenthesized_expression "(((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1))" ( (binary_expression "((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)" (parenthesized_expression "((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))" ( (binary_expression "(uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01')" (parenthesized_expression "(uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1))" ( (binary_expression "uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)" (binary_expression "uVar10 == 0xfffffff2" identifier == number_literal) || (parenthesized_expression "(0x22 < uVar10 + 1)" ( (binary_expression "0x22 < uVar10 + 1" number_literal < (binary_expression "uVar10 + 1" identifier + number_literal)) ))) )) || (parenthesized_expression "((&DAT_0001b181)[uVar10] != '\x01')" ( (binary_expression "(&DAT_0001b181)[uVar10] != '\x01'" (subscript_expression "(&DAT_0001b181)[uVar10]" (parenthesized_expression "(&DAT_0001b181)" ( (pointer_expression "&DAT_0001b181" & identifier) )) [ identifier ]) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)" ( (comma_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1c1)[uVar10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1c1)[uVar10]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1c1)[uVar10]" (parenthesized_expression "(&DAT_0001b1c1)" ( (pointer_expression "&DAT_0001b1c1" & identifier) )) [ identifier ]))))) , (binary_expression "(int)local_500 < 1" (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) )) (compound_statement "{\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }" { (if_statement "if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }" if (parenthesized_expression "(psVar4 == __src)" ( (binary_expression "psVar4 == __src" identifier == identifier) )) (compound_statement "{\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "psVar5 = psVar4;" (assignment_expression "psVar5 = psVar4" identifier = identifier) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) (expression_statement "psVar4 = psVar4 + -1;" (assignment_expression "psVar4 = psVar4 + -1" identifier = (binary_expression "psVar4 + -1" identifier + number_literal)) ;) (expression_statement "psVar7 = psVar7 + -2;" (assignment_expression "psVar7 = psVar7 + -2" identifier = (binary_expression "psVar7 + -2" identifier + number_literal)) ;) (expression_statement "uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];" (assignment_expression "uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4]" identifier = (subscript_expression "(uint)(char)(&DAT_0001b260)[*psVar4]" (call_expression "(uint)(char)(&DAT_0001b260)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0001b260)" ( (pointer_expression "&DAT_0001b260" & identifier) ))) [ (pointer_expression "*psVar4" * identifier) ])) ;) })) (expression_statement "psVar8 = psVar7 + 2;" (assignment_expression "psVar8 = psVar7 + 2" identifier = (binary_expression "psVar7 + 2" identifier + number_literal)) ;) (expression_statement "local_4e8 = 3;" (assignment_expression "local_4e8 = 3" identifier = number_literal) ;) (expression_statement "*(undefined4 *)psVar8 = DAT_00021390;" (assignment_expression "*(undefined4 *)psVar8 = DAT_00021390" (pointer_expression "*(undefined4 *)psVar8" * (cast_expression "(undefined4 *)psVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (goto_statement "goto LAB_00014ecb;" goto statement_identifier ;) })) (labeled_statement "LAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];" statement_identifier : (expression_statement "uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];" (assignment_expression "uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001b100)[uVar3]" (call_expression "(uint)(byte)(&DAT_0001b100)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001b100)" ( (pointer_expression "&DAT_0001b100" & identifier) ))) [ identifier ])) ;)) (expression_statement "local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);" (assignment_expression "local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2)" identifier = (pointer_expression "*(undefined4 **)(psVar7 + (1 - uVar10) * 2)" * (cast_expression "(undefined4 **)(psVar7 + (1 - uVar10) * 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar7 + (1 - uVar10) * 2)" ( (binary_expression "psVar7 + (1 - uVar10) * 2" identifier + (binary_expression "(1 - uVar10) * 2" (parenthesized_expression "(1 - uVar10)" ( (binary_expression "1 - uVar10" number_literal - identifier) )) * number_literal)) ))))) ;) (switch_statement "switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }" switch (parenthesized_expression "(uVar3)" ( identifier )) (compound_statement "{\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }" { (case_statement "case 2:" case number_literal :) (case_statement "case 6:\n      FUN_000169c0();\n      break;" case number_literal : (expression_statement "FUN_000169c0();" (call_expression "FUN_000169c0()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n      FUN_00017320();\n      return 0;" case number_literal : (expression_statement "FUN_00017320();" (call_expression "FUN_00017320()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 0x15:\n      FUN_00014c20();\n      break;" case number_literal : (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00017360(*(undefined4 *)psVar7);" (call_expression "FUN_00017360(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016ff0(*(undefined4 *)psVar7);" (call_expression "FUN_00016ff0(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x19:\n      FUN_00016db0();\n      break;" case number_literal : (expression_statement "FUN_00016db0();" (call_expression "FUN_00016db0()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016dd0(*(undefined4 *)psVar7);" (call_expression "FUN_00016dd0(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016c90(*(undefined4 *)psVar7);" (call_expression "FUN_00016c90(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1c:\n      FUN_00017240();\n      break;" case number_literal : (expression_statement "FUN_00017240();" (call_expression "FUN_00017240()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1d:\n      FUN_00016f20();\n      break;" case number_literal : (expression_statement "FUN_00016f20();" (call_expression "FUN_00016f20()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;" case number_literal : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (goto_statement "goto code_r0x00014e5b;" goto statement_identifier ;)) (case_statement "case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;" case number_literal : (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (labeled_statement "code_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);" statement_identifier : (expression_statement "FUN_00016a40(*(undefined4 *)psVar7,uVar9);" (call_expression "FUN_00016a40(*(undefined4 *)psVar7,uVar9)" identifier (argument_list "(*(undefined4 *)psVar7,uVar9)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (break_statement "break;" break ;)) (case_statement "case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);" (call_expression "FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)(psVar7 + -2)" * (cast_expression "(undefined4 *)(psVar7 + -2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -2)" ( (binary_expression "psVar7 + -2" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);" (call_expression "FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)(psVar7 + -4)" * (cast_expression "(undefined4 *)(psVar7 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -4)" ( (binary_expression "psVar7 + -4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(psVar7 + -2)" * (cast_expression "(undefined4 *)(psVar7 + -2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -2)" ( (binary_expression "psVar7 + -2" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;" case number_literal : (expression_statement "local_500 = *(undefined4 **)psVar7;" (assignment_expression "local_500 = *(undefined4 **)psVar7" identifier = (pointer_expression "*(undefined4 **)psVar7" * (cast_expression "(undefined4 **)psVar7" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0x23:" case number_literal :) (case_statement "case 0x25:" case number_literal :) (case_statement "case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;" case number_literal : (expression_statement "local_500 = (undefined4 *)0x0;" (assignment_expression "local_500 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;" case number_literal : (expression_statement "local_500 = *(undefined4 **)(psVar7 + -2);" (assignment_expression "local_500 = *(undefined4 **)(psVar7 + -2)" identifier = (pointer_expression "*(undefined4 **)(psVar7 + -2)" * (cast_expression "(undefined4 **)(psVar7 + -2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar7 + -2)" ( (binary_expression "psVar7 + -2" identifier + number_literal) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;" case number_literal : (expression_statement "local_500 = (undefined4 *)malloc(8);" (assignment_expression "local_500 = (undefined4 *)malloc(8)" identifier = (cast_expression "(undefined4 *)malloc(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "local_500[1] = *(undefined4 *)(psVar7 + -4);" (assignment_expression "local_500[1] = *(undefined4 *)(psVar7 + -4)" (subscript_expression "local_500[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(psVar7 + -4)" * (cast_expression "(undefined4 *)(psVar7 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -4)" ( (binary_expression "psVar7 + -4" identifier + number_literal) ))))) ;) (expression_statement "*local_500 = *(undefined4 *)psVar7;" (assignment_expression "*local_500 = *(undefined4 *)psVar7" (pointer_expression "*local_500" * identifier) = (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);" case number_literal : (expression_statement "DAT_0002126c = (uint)(DAT_0002126c == 0);" (assignment_expression "DAT_0002126c = (uint)(DAT_0002126c == 0)" identifier = (call_expression "(uint)(DAT_0002126c == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_0002126c == 0)" ( (binary_expression "DAT_0002126c == 0" identifier == number_literal) )))) ;)) })) (expression_statement "psVar4 = psVar4 + -uVar10;" (assignment_expression "psVar4 = psVar4 + -uVar10" identifier = (binary_expression "psVar4 + -uVar10" identifier + (unary_expression "-uVar10" - identifier))) ;) (expression_statement "psVar8 = psVar7 + uVar10 * -2 + 2;" (assignment_expression "psVar8 = psVar7 + uVar10 * -2 + 2" identifier = (binary_expression "psVar7 + uVar10 * -2 + 2" (binary_expression "psVar7 + uVar10 * -2" identifier + (binary_expression "uVar10 * -2" identifier * number_literal)) + number_literal)) ;) (expression_statement "*(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;" (assignment_expression "*(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500" (pointer_expression "*(undefined4 **)(psVar7 + uVar10 * -2 + 2)" * (cast_expression "(undefined4 **)(psVar7 + uVar10 * -2 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar7 + uVar10 * -2 + 2)" ( (binary_expression "psVar7 + uVar10 * -2 + 2" (binary_expression "psVar7 + uVar10 * -2" identifier + (binary_expression "uVar10 * -2" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;" (assignment_expression "uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4" identifier = (binary_expression "(int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4" (cast_expression "(int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" (parenthesized_expression "(&DAT_0001b1e4)" ( (pointer_expression "&DAT_0001b1e4" & identifier) )) [ (subscript_expression "(byte)(&DAT_0001b140)[uVar3]" (call_expression "(byte)(&DAT_0001b140)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0001b140)" ( (pointer_expression "&DAT_0001b140" & identifier) ))) [ identifier ]) ]))) + (cast_expression "(int)*psVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar4" * identifier)))) ;) (if_statement "if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" if (parenthesized_expression "((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10]))" ( (binary_expression "(uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])" (parenthesized_expression "(uVar10 < 0x23)" ( (binary_expression "uVar10 < 0x23" identifier < number_literal) )) && (parenthesized_expression "((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])" ( (binary_expression "(int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10]" (cast_expression "(int)*psVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar4" * identifier)) == (subscript_expression "(uint)(byte)(&DAT_0001b180)[uVar10]" (call_expression "(uint)(byte)(&DAT_0001b180)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001b180)" ( (pointer_expression "&DAT_0001b180" & identifier) ))) [ identifier ])) ))) )) (compound_statement "{\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }" { (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1c0)[uVar10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1c0)[uVar10]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1c0)[uVar10]" (parenthesized_expression "(&DAT_0001b1c0)" ( (pointer_expression "&DAT_0001b1c0" & identifier) )) [ identifier ]))))) ;) }) (else_clause "else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" else (compound_statement "{\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" { (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" (parenthesized_expression "(&DAT_0001b1cc)" ( (pointer_expression "&DAT_0001b1cc" & identifier) )) [ (subscript_expression "(byte)(&DAT_0001b140)[uVar3]" (call_expression "(byte)(&DAT_0001b140)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0001b140)" ( (pointer_expression "&DAT_0001b140" & identifier) ))) [ identifier ]) ]))))) ;) }))) (labeled_statement "LAB_00014ecb:\n    psVar7 = psVar4 + 1;" statement_identifier : (expression_statement "psVar7 = psVar4 + 1;" (assignment_expression "psVar7 = psVar4 + 1" identifier = (binary_expression "psVar4 + 1" identifier + number_literal)) ;)) (expression_statement "psVar4[1] = (short)local_500;" (assignment_expression "psVar4[1] = (short)local_500" (subscript_expression "psVar4[1]" identifier [ number_literal ]) = (cast_expression "(short)local_500" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar10 = local_4f4 * 2;" (assignment_expression "uVar10 = local_4f4 * 2" identifier = (binary_expression "local_4f4 * 2" identifier * number_literal)) ;) (if_statement "if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }" if (parenthesized_expression "(__src + (local_4f4 - 1) <= psVar7)" ( (binary_expression "__src + (local_4f4 - 1) <= psVar7" (binary_expression "__src + (local_4f4 - 1)" identifier + (parenthesized_expression "(local_4f4 - 1)" ( (binary_expression "local_4f4 - 1" identifier - number_literal) ))) <= identifier) )) (compound_statement "{\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }" { (expression_statement "iVar6 = (int)psVar7 - (int)__src >> 1;" (assignment_expression "iVar6 = (int)psVar7 - (int)__src >> 1" identifier = (binary_expression "(int)psVar7 - (int)__src >> 1" (binary_expression "(int)psVar7 - (int)__src" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar1 = iVar6 + 1;" (assignment_expression "iVar1 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }" if (parenthesized_expression "(local_4f4 < 10000)" ( (binary_expression "local_4f4 < 10000" identifier < number_literal) )) (compound_statement "{\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }" { (expression_statement "local_4f4 = 10000;" (assignment_expression "local_4f4 = 10000" identifier = number_literal) ;) (if_statement "if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }" if (parenthesized_expression "(uVar10 < 0x2711)" ( (binary_expression "uVar10 < 0x2711" identifier < number_literal) )) (compound_statement "{\n          local_4f4 = uVar10;\n        }" { (expression_statement "local_4f4 = uVar10;" (assignment_expression "local_4f4 = uVar10" identifier = identifier) ;) })) (expression_statement "psVar5 = (short *)malloc(local_4f4 * 6 + 3);" (assignment_expression "psVar5 = (short *)malloc(local_4f4 * 6 + 3)" identifier = (cast_expression "(short *)malloc(local_4f4 * 6 + 3)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(local_4f4 * 6 + 3)" identifier (argument_list "(local_4f4 * 6 + 3)" ( (binary_expression "local_4f4 * 6 + 3" (binary_expression "local_4f4 * 6" identifier * number_literal) + number_literal) ))))) ;) (if_statement "if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }" if (parenthesized_expression "(psVar5 != (short *)0x0)" ( (binary_expression "psVar5 != (short *)0x0" identifier != (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }" { (expression_statement "memcpy(psVar5,__src,iVar1 * 2);" (call_expression "memcpy(psVar5,__src,iVar1 * 2)" identifier (argument_list "(psVar5,__src,iVar1 * 2)" ( identifier , identifier , (binary_expression "iVar1 * 2" identifier * number_literal) ))) ;) (expression_statement "psVar4 = psVar5 + local_4f4;" (assignment_expression "psVar4 = psVar5 + local_4f4" identifier = (binary_expression "psVar5 + local_4f4" identifier + identifier)) ;) (expression_statement "memcpy(psVar4,local_4ec,iVar1 * 4);" (call_expression "memcpy(psVar4,local_4ec,iVar1 * 4)" identifier (argument_list "(psVar4,local_4ec,iVar1 * 4)" ( identifier , identifier , (binary_expression "iVar1 * 4" identifier * number_literal) ))) ;) (if_statement "if (__src != psVar2) {\n            free(__src);\n          }" if (parenthesized_expression "(__src != psVar2)" ( (binary_expression "__src != psVar2" identifier != identifier) )) (compound_statement "{\n            free(__src);\n          }" { (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) })) (expression_statement "psVar7 = psVar5 + iVar6;" (assignment_expression "psVar7 = psVar5 + iVar6" identifier = (binary_expression "psVar5 + iVar6" identifier + identifier)) ;) (expression_statement "psVar8 = psVar4 + iVar1 * 2 + -2;" (assignment_expression "psVar8 = psVar4 + iVar1 * 2 + -2" identifier = (binary_expression "psVar4 + iVar1 * 2 + -2" (binary_expression "psVar4 + iVar1 * 2" identifier + (binary_expression "iVar1 * 2" identifier * number_literal)) + number_literal)) ;) (expression_statement "local_4ec = psVar4;" (assignment_expression "local_4ec = psVar4" identifier = identifier) ;) (if_statement "if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;" if (parenthesized_expression "(psVar7 < psVar5 + (local_4f4 - 1))" ( (binary_expression "psVar7 < psVar5 + (local_4f4 - 1)" identifier < (binary_expression "psVar5 + (local_4f4 - 1)" identifier + (parenthesized_expression "(local_4f4 - 1)" ( (binary_expression "local_4f4 - 1" identifier - number_literal) )))) )) (goto_statement "goto LAB_00014fae;" goto statement_identifier ;)) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0001501b;" goto statement_identifier ;) })) })) (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" identifier = number_literal) ;) (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" identifier (argument_list "()" ( ))) ;) (expression_statement "psVar5 = __src;" (assignment_expression "psVar5 = __src" identifier = identifier) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) (labeled_statement "LAB_00014fae:\n    __src = psVar5;" statement_identifier : (expression_statement "__src = psVar5;" (assignment_expression "__src = psVar5" identifier = identifier) ;)) (expression_statement "psVar4 = psVar7;" (assignment_expression "psVar4 = psVar7" identifier = identifier) ;) (expression_statement "psVar7 = psVar8;" (assignment_expression "psVar7 = psVar8" identifier = identifier) ;) }) while (parenthesized_expression "(local_500 != (undefined4 *)0x3)" ( (binary_expression "local_500 != (undefined4 *)0x3" identifier != (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }" statement_identifier : (if_statement "if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }" if (parenthesized_expression "(psVar5 != psVar2)" ( (binary_expression "psVar5 != psVar2" identifier != identifier) )) (compound_statement "{\nLAB_0001501b:\n    free(psVar5);\n  }" { (labeled_statement "LAB_0001501b:\n    free(psVar5);" statement_identifier : (expression_statement "free(psVar5);" (call_expression "free(psVar5)" identifier (argument_list "(psVar5)" ( identifier ))) ;)) }))) (return_statement "return uVar9;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nint yyparse(void)\n\n{\n  uint uVar1;\n  short *psVar2;\n  short *psVar3;\n  short *__src;\n  int iVar4;\n  short *psVar5;\n  YYSTYPE *pYVar6;\n  YYSTYPE *pYVar7;\n  uint uVar8;\n  char *in_stack_fffffaf4;\n  YYSTYPE local_500;\n  uint local_4f4;\n  uint local_4f0;\n  YYSTYPE *local_4ec;\n  int local_4e8;\n  short sStack_4ce;\n  yytype_int16 yyssa [200];\n  YYSTYPE yyvsa [200];\n  \n  local_4ec = yyvsa;\n  local_500 = (YYSTYPE)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  yynerrs = 0;\n  yychar = -2;\n  yyssa[0] = 0;\n  __src = yyssa;\n  psVar2 = yyssa;\n  pYVar6 = local_4ec;\n  do {\n    uVar8 = (uint)yypact[local_500.name];\n    psVar3 = __src;\n    if (uVar8 != 0xfffffff2) {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }\n      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;\n      local_500 = (YYSTYPE)(int)yytable[uVar1];\n      if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      pYVar7 = pYVar6 + 1;\n      yychar = -2;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar1 = (uint)"\x02"[(int)local_500];\n    if (uVar1 == 0) {\n      if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }\n      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }\n      pYVar7 = pYVar6 + 1;\n      local_4e8 = 3;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar8 = (uint)""[uVar1];\n    local_500 = pYVar6[1 - uVar8];\n    switch(uVar1) {\n    case 2:\n    case 6:\n      prompt();\n      break;\n    case 0x13:\n      ar_end();\n      return 0;\n    case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;\n    case 0x17:\n      ar_extract(pYVar6->list);\n      break;\n    case 0x18:\n      ar_replace(pYVar6->list);\n      break;\n    case 0x19:\n      ar_clear();\n      break;\n    case 0x1a:\n      ar_delete(pYVar6->list);\n      break;\n    case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;\n    case 0x1c:\n      ar_list();\n      break;\n    case 0x1d:\n      ar_save();\n      break;\n    case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;\n    case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;\n    case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;\n    case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;\n    case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500.name = (char *)0x0;\n      break;\n    case 0x24:\n      local_500 = pYVar6[-1];\n      break;\n    case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;\n    case 0x2a:\n      verbose = (int)(verbose == 0);\n    }\n    psVar2 = psVar2 + -uVar8;\n    pYVar7 = pYVar6 + (1 - uVar8);\n    pYVar6[1 - uVar8] = local_500;\n    uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2;\n    if ((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])) {\n      local_500 = (YYSTYPE)(int)yytable[uVar8];\n    }\n    else {\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }\nLAB_00014ecb:\n    psVar5 = psVar2 + 1;\n    psVar2[1] = local_500._0_2_;\n    uVar8 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar5) {\n      iVar4 = (int)psVar5 - (int)__src >> 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      iVar4 = 2;\n      yyerror(in_stack_fffffaf4);\n      psVar3 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar3;\n    psVar2 = psVar5;\n    pYVar6 = pYVar7;\n  } while (local_500 != (YYSTYPE)0x3);\n  iVar4 = 0;\nLAB_00015015:\n  if (psVar3 != yyssa) {\nLAB_0001501b:\n    free(psVar3);\n  }\n  return iVar4;\n}\n\n" comment comment (function_definition "int yyparse(void)\n\n{\n  uint uVar1;\n  short *psVar2;\n  short *psVar3;\n  short *__src;\n  int iVar4;\n  short *psVar5;\n  YYSTYPE *pYVar6;\n  YYSTYPE *pYVar7;\n  uint uVar8;\n  char *in_stack_fffffaf4;\n  YYSTYPE local_500;\n  uint local_4f4;\n  uint local_4f0;\n  YYSTYPE *local_4ec;\n  int local_4e8;\n  short sStack_4ce;\n  yytype_int16 yyssa [200];\n  YYSTYPE yyvsa [200];\n  \n  local_4ec = yyvsa;\n  local_500 = (YYSTYPE)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  yynerrs = 0;\n  yychar = -2;\n  yyssa[0] = 0;\n  __src = yyssa;\n  psVar2 = yyssa;\n  pYVar6 = local_4ec;\n  do {\n    uVar8 = (uint)yypact[local_500.name];\n    psVar3 = __src;\n    if (uVar8 != 0xfffffff2) {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }\n      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;\n      local_500 = (YYSTYPE)(int)yytable[uVar1];\n      if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      pYVar7 = pYVar6 + 1;\n      yychar = -2;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar1 = (uint)"\x02"[(int)local_500];\n    if (uVar1 == 0) {\n      if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }\n      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }\n      pYVar7 = pYVar6 + 1;\n      local_4e8 = 3;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar8 = (uint)""[uVar1];\n    local_500 = pYVar6[1 - uVar8];\n    switch(uVar1) {\n    case 2:\n    case 6:\n      prompt();\n      break;\n    case 0x13:\n      ar_end();\n      return 0;\n    case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;\n    case 0x17:\n      ar_extract(pYVar6->list);\n      break;\n    case 0x18:\n      ar_replace(pYVar6->list);\n      break;\n    case 0x19:\n      ar_clear();\n      break;\n    case 0x1a:\n      ar_delete(pYVar6->list);\n      break;\n    case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;\n    case 0x1c:\n      ar_list();\n      break;\n    case 0x1d:\n      ar_save();\n      break;\n    case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;\n    case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;\n    case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;\n    case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;\n    case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500.name = (char *)0x0;\n      break;\n    case 0x24:\n      local_500 = pYVar6[-1];\n      break;\n    case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;\n    case 0x2a:\n      verbose = (int)(verbose == 0);\n    }\n    psVar2 = psVar2 + -uVar8;\n    pYVar7 = pYVar6 + (1 - uVar8);\n    pYVar6[1 - uVar8] = local_500;\n    uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2;\n    if ((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])) {\n      local_500 = (YYSTYPE)(int)yytable[uVar8];\n    }\n    else {\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }\nLAB_00014ecb:\n    psVar5 = psVar2 + 1;\n    psVar2[1] = local_500._0_2_;\n    uVar8 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar5) {\n      iVar4 = (int)psVar5 - (int)__src >> 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      iVar4 = 2;\n      yyerror(in_stack_fffffaf4);\n      psVar3 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar3;\n    psVar2 = psVar5;\n    pYVar6 = pYVar7;\n  } while (local_500 != (YYSTYPE)0x3);\n  iVar4 = 0;\nLAB_00015015:\n  if (psVar3 != yyssa) {\nLAB_0001501b:\n    free(psVar3);\n  }\n  return iVar4;\n}" primitive_type (function_declarator "yyparse(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint uVar1;\n  short *psVar2;\n  short *psVar3;\n  short *__src;\n  int iVar4;\n  short *psVar5;\n  YYSTYPE *pYVar6;\n  YYSTYPE *pYVar7;\n  uint uVar8;\n  char *in_stack_fffffaf4;\n  YYSTYPE local_500;\n  uint local_4f4;\n  uint local_4f0;\n  YYSTYPE *local_4ec;\n  int local_4e8;\n  short sStack_4ce;\n  yytype_int16 yyssa [200];\n  YYSTYPE yyvsa [200];\n  \n  local_4ec = yyvsa;\n  local_500 = (YYSTYPE)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  yynerrs = 0;\n  yychar = -2;\n  yyssa[0] = 0;\n  __src = yyssa;\n  psVar2 = yyssa;\n  pYVar6 = local_4ec;\n  do {\n    uVar8 = (uint)yypact[local_500.name];\n    psVar3 = __src;\n    if (uVar8 != 0xfffffff2) {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }\n      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;\n      local_500 = (YYSTYPE)(int)yytable[uVar1];\n      if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      pYVar7 = pYVar6 + 1;\n      yychar = -2;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar1 = (uint)"\x02"[(int)local_500];\n    if (uVar1 == 0) {\n      if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }\n      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }\n      pYVar7 = pYVar6 + 1;\n      local_4e8 = 3;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar8 = (uint)""[uVar1];\n    local_500 = pYVar6[1 - uVar8];\n    switch(uVar1) {\n    case 2:\n    case 6:\n      prompt();\n      break;\n    case 0x13:\n      ar_end();\n      return 0;\n    case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;\n    case 0x17:\n      ar_extract(pYVar6->list);\n      break;\n    case 0x18:\n      ar_replace(pYVar6->list);\n      break;\n    case 0x19:\n      ar_clear();\n      break;\n    case 0x1a:\n      ar_delete(pYVar6->list);\n      break;\n    case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;\n    case 0x1c:\n      ar_list();\n      break;\n    case 0x1d:\n      ar_save();\n      break;\n    case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;\n    case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;\n    case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;\n    case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;\n    case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500.name = (char *)0x0;\n      break;\n    case 0x24:\n      local_500 = pYVar6[-1];\n      break;\n    case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;\n    case 0x2a:\n      verbose = (int)(verbose == 0);\n    }\n    psVar2 = psVar2 + -uVar8;\n    pYVar7 = pYVar6 + (1 - uVar8);\n    pYVar6[1 - uVar8] = local_500;\n    uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2;\n    if ((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])) {\n      local_500 = (YYSTYPE)(int)yytable[uVar8];\n    }\n    else {\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }\nLAB_00014ecb:\n    psVar5 = psVar2 + 1;\n    psVar2[1] = local_500._0_2_;\n    uVar8 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar5) {\n      iVar4 = (int)psVar5 - (int)__src >> 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      iVar4 = 2;\n      yyerror(in_stack_fffffaf4);\n      psVar3 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar3;\n    psVar2 = psVar5;\n    pYVar6 = pYVar7;\n  } while (local_500 != (YYSTYPE)0x3);\n  iVar4 = 0;\nLAB_00015015:\n  if (psVar3 != yyssa) {\nLAB_0001501b:\n    free(psVar3);\n  }\n  return iVar4;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "short *psVar2;" (sized_type_specifier "short" short) (pointer_declarator "*psVar2" * identifier) ;) (declaration "short *psVar3;" (sized_type_specifier "short" short) (pointer_declarator "*psVar3" * identifier) ;) (declaration "short *__src;" (sized_type_specifier "short" short) (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "short *psVar5;" (sized_type_specifier "short" short) (pointer_declarator "*psVar5" * identifier) ;) (declaration "YYSTYPE *pYVar6;" type_identifier (pointer_declarator "*pYVar6" * identifier) ;) (declaration "YYSTYPE *pYVar7;" type_identifier (pointer_declarator "*pYVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *in_stack_fffffaf4;" primitive_type (pointer_declarator "*in_stack_fffffaf4" * identifier) ;) (declaration "YYSTYPE local_500;" type_identifier identifier ;) (declaration "uint local_4f4;" type_identifier identifier ;) (declaration "uint local_4f0;" type_identifier identifier ;) (declaration "YYSTYPE *local_4ec;" type_identifier (pointer_declarator "*local_4ec" * identifier) ;) (declaration "int local_4e8;" primitive_type identifier ;) (declaration "short sStack_4ce;" (sized_type_specifier "short" short) identifier ;) (declaration "yytype_int16 yyssa [200];" type_identifier (array_declarator "yyssa [200]" identifier [ number_literal ]) ;) (declaration "YYSTYPE yyvsa [200];" type_identifier (array_declarator "yyvsa [200]" identifier [ number_literal ]) ;) (expression_statement "local_4ec = yyvsa;" (assignment_expression "local_4ec = yyvsa" identifier = identifier) ;) (expression_statement "local_500 = (YYSTYPE)0x0;" (assignment_expression "local_500 = (YYSTYPE)0x0" identifier = (cast_expression "(YYSTYPE)0x0" ( (type_descriptor "YYSTYPE" type_identifier) ) number_literal)) ;) (expression_statement "local_4e8 = 0;" (assignment_expression "local_4e8 = 0" identifier = number_literal) ;) (expression_statement "local_4f4 = 200;" (assignment_expression "local_4f4 = 200" identifier = number_literal) ;) (expression_statement "yynerrs = 0;" (assignment_expression "yynerrs = 0" identifier = number_literal) ;) (expression_statement "yychar = -2;" (assignment_expression "yychar = -2" identifier = number_literal) ;) (expression_statement "yyssa[0] = 0;" (assignment_expression "yyssa[0] = 0" (subscript_expression "yyssa[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__src = yyssa;" (assignment_expression "__src = yyssa" identifier = identifier) ;) (expression_statement "psVar2 = yyssa;" (assignment_expression "psVar2 = yyssa" identifier = identifier) ;) (expression_statement "pYVar6 = local_4ec;" (assignment_expression "pYVar6 = local_4ec" identifier = identifier) ;) (do_statement "do {\n    uVar8 = (uint)yypact[local_500.name];\n    psVar3 = __src;\n    if (uVar8 != 0xfffffff2) {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }\n      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;\n      local_500 = (YYSTYPE)(int)yytable[uVar1];\n      if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      pYVar7 = pYVar6 + 1;\n      yychar = -2;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar1 = (uint)"\x02"[(int)local_500];\n    if (uVar1 == 0) {\n      if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }\n      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }\n      pYVar7 = pYVar6 + 1;\n      local_4e8 = 3;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar8 = (uint)""[uVar1];\n    local_500 = pYVar6[1 - uVar8];\n    switch(uVar1) {\n    case 2:\n    case 6:\n      prompt();\n      break;\n    case 0x13:\n      ar_end();\n      return 0;\n    case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;\n    case 0x17:\n      ar_extract(pYVar6->list);\n      break;\n    case 0x18:\n      ar_replace(pYVar6->list);\n      break;\n    case 0x19:\n      ar_clear();\n      break;\n    case 0x1a:\n      ar_delete(pYVar6->list);\n      break;\n    case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;\n    case 0x1c:\n      ar_list();\n      break;\n    case 0x1d:\n      ar_save();\n      break;\n    case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;\n    case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;\n    case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;\n    case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;\n    case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500.name = (char *)0x0;\n      break;\n    case 0x24:\n      local_500 = pYVar6[-1];\n      break;\n    case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;\n    case 0x2a:\n      verbose = (int)(verbose == 0);\n    }\n    psVar2 = psVar2 + -uVar8;\n    pYVar7 = pYVar6 + (1 - uVar8);\n    pYVar6[1 - uVar8] = local_500;\n    uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2;\n    if ((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])) {\n      local_500 = (YYSTYPE)(int)yytable[uVar8];\n    }\n    else {\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }\nLAB_00014ecb:\n    psVar5 = psVar2 + 1;\n    psVar2[1] = local_500._0_2_;\n    uVar8 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar5) {\n      iVar4 = (int)psVar5 - (int)__src >> 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      iVar4 = 2;\n      yyerror(in_stack_fffffaf4);\n      psVar3 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar3;\n    psVar2 = psVar5;\n    pYVar6 = pYVar7;\n  } while (local_500 != (YYSTYPE)0x3);" do (compound_statement "{\n    uVar8 = (uint)yypact[local_500.name];\n    psVar3 = __src;\n    if (uVar8 != 0xfffffff2) {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }\n      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;\n      local_500 = (YYSTYPE)(int)yytable[uVar1];\n      if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      pYVar7 = pYVar6 + 1;\n      yychar = -2;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar1 = (uint)"\x02"[(int)local_500];\n    if (uVar1 == 0) {\n      if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }\n      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }\n      pYVar7 = pYVar6 + 1;\n      local_4e8 = 3;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar8 = (uint)""[uVar1];\n    local_500 = pYVar6[1 - uVar8];\n    switch(uVar1) {\n    case 2:\n    case 6:\n      prompt();\n      break;\n    case 0x13:\n      ar_end();\n      return 0;\n    case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;\n    case 0x17:\n      ar_extract(pYVar6->list);\n      break;\n    case 0x18:\n      ar_replace(pYVar6->list);\n      break;\n    case 0x19:\n      ar_clear();\n      break;\n    case 0x1a:\n      ar_delete(pYVar6->list);\n      break;\n    case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;\n    case 0x1c:\n      ar_list();\n      break;\n    case 0x1d:\n      ar_save();\n      break;\n    case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;\n    case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;\n    case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;\n    case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;\n    case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500.name = (char *)0x0;\n      break;\n    case 0x24:\n      local_500 = pYVar6[-1];\n      break;\n    case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;\n    case 0x2a:\n      verbose = (int)(verbose == 0);\n    }\n    psVar2 = psVar2 + -uVar8;\n    pYVar7 = pYVar6 + (1 - uVar8);\n    pYVar6[1 - uVar8] = local_500;\n    uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2;\n    if ((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])) {\n      local_500 = (YYSTYPE)(int)yytable[uVar8];\n    }\n    else {\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }\nLAB_00014ecb:\n    psVar5 = psVar2 + 1;\n    psVar2[1] = local_500._0_2_;\n    uVar8 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar5) {\n      iVar4 = (int)psVar5 - (int)__src >> 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      iVar4 = 2;\n      yyerror(in_stack_fffffaf4);\n      psVar3 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar3;\n    psVar2 = psVar5;\n    pYVar6 = pYVar7;\n  }" { (expression_statement "uVar8 = (uint)yypact[local_500.name];" (assignment_expression "uVar8 = (uint)yypact[local_500.name]" identifier = (cast_expression "(uint)yypact[local_500.name]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "yypact[local_500.name]" identifier [ (field_expression "local_500.name" identifier . field_identifier) ]))) ;) (expression_statement "psVar3 = __src;" (assignment_expression "psVar3 = __src" identifier = identifier) ;) (if_statement "if (uVar8 != 0xfffffff2) {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }\n      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;\n      local_500 = (YYSTYPE)(int)yytable[uVar1];\n      if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      pYVar7 = pYVar6 + 1;\n      yychar = -2;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }" if (parenthesized_expression "(uVar8 != 0xfffffff2)" ( (binary_expression "uVar8 != 0xfffffff2" identifier != number_literal) )) (compound_statement "{\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }\n      if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;\n      local_500 = (YYSTYPE)(int)yytable[uVar1];\n      if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      pYVar7 = pYVar6 + 1;\n      yychar = -2;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }" { (if_statement "if (yychar == -2) {\n        yychar = yylex();\n      }" if (parenthesized_expression "(yychar == -2)" ( (binary_expression "yychar == -2" identifier == number_literal) )) (compound_statement "{\n        yychar = yylex();\n      }" { (expression_statement "yychar = yylex();" (assignment_expression "yychar = yylex()" identifier = (call_expression "yylex()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (yychar < 1) {\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }\n      else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }" if (parenthesized_expression "(yychar < 1)" ( (binary_expression "yychar < 1" identifier < number_literal) )) (compound_statement "{\n        local_4f0 = 0;\n        yychar = 0;\n        uVar1 = uVar8;\n      }" { (expression_statement "local_4f0 = 0;" (assignment_expression "local_4f0 = 0" identifier = number_literal) ;) (expression_statement "yychar = 0;" (assignment_expression "yychar = 0" identifier = number_literal) ;) (expression_statement "uVar1 = uVar8;" (assignment_expression "uVar1 = uVar8" identifier = identifier) ;) }) (else_clause "else if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }" else (if_statement "if (yychar < 0x114) {\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }" if (parenthesized_expression "(yychar < 0x114)" ( (binary_expression "yychar < 0x114" identifier < number_literal) )) (compound_statement "{\n        local_4f0 = (uint)""[yychar];\n        uVar1 = uVar8 + local_4f0;\n      }" { (expression_statement "local_4f0 = (uint)""[yychar];" (assignment_expression "local_4f0 = (uint)""[yychar]" identifier = (cast_expression "(uint)""[yychar]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[yychar]" (string_literal """" " ") [ identifier ]))) ;) (expression_statement "uVar1 = uVar8 + local_4f0;" (assignment_expression "uVar1 = uVar8 + local_4f0" identifier = (binary_expression "uVar8 + local_4f0" identifier + identifier)) ;) }) (else_clause "else {\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }" else (compound_statement "{\n        local_4f0 = 2;\n        uVar1 = uVar8 + 2;\n      }" { (expression_statement "local_4f0 = 2;" (assignment_expression "local_4f0 = 2" identifier = number_literal) ;) (expression_statement "uVar1 = uVar8 + 2;" (assignment_expression "uVar1 = uVar8 + 2" identifier = (binary_expression "uVar8 + 2" identifier + number_literal)) ;) }))))) (if_statement "if ((0x22 < uVar1) || ("\r"[uVar1] != local_4f0)) goto LAB_00014d80;" if (parenthesized_expression "((0x22 < uVar1) || ("\r"[uVar1] != local_4f0))" ( (binary_expression "(0x22 < uVar1) || ("\r"[uVar1] != local_4f0)" (parenthesized_expression "(0x22 < uVar1)" ( (binary_expression "0x22 < uVar1" number_literal < identifier) )) || (parenthesized_expression "("\r"[uVar1] != local_4f0)" ( (binary_expression ""\r"[uVar1] != local_4f0" (subscript_expression ""\r"[uVar1]" (string_literal ""\r"" " escape_sequence ") [ identifier ]) != identifier) ))) )) (goto_statement "goto LAB_00014d80;" goto statement_identifier ;)) (expression_statement "local_500 = (YYSTYPE)(int)yytable[uVar1];" (assignment_expression "local_500 = (YYSTYPE)(int)yytable[uVar1]" identifier = (cast_expression "(YYSTYPE)(int)yytable[uVar1]" ( (type_descriptor "YYSTYPE" type_identifier) ) (cast_expression "(int)yytable[uVar1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yytable[uVar1]" identifier [ identifier ])))) ;) (if_statement "if ((int)local_500.name < 1) {\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }" if (parenthesized_expression "((int)local_500.name < 1)" ( (binary_expression "(int)local_500.name < 1" (cast_expression "(int)local_500.name" ( (type_descriptor "int" primitive_type) ) (field_expression "local_500.name" identifier . field_identifier)) < number_literal) )) (compound_statement "{\n        uVar1 = -(int)local_500.name;\n        goto LAB_00014e24;\n      }" { (expression_statement "uVar1 = -(int)local_500.name;" (assignment_expression "uVar1 = -(int)local_500.name" identifier = (unary_expression "-(int)local_500.name" - (cast_expression "(int)local_500.name" ( (type_descriptor "int" primitive_type) ) (field_expression "local_500.name" identifier . field_identifier)))) ;) (goto_statement "goto LAB_00014e24;" goto statement_identifier ;) })) (expression_statement "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);" (assignment_expression "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0)" identifier = (binary_expression "local_4e8 + -1 + (uint)(local_4e8 == 0)" (binary_expression "local_4e8 + -1" identifier + number_literal) + (call_expression "(uint)(local_4e8 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4e8 == 0)" ( (binary_expression "local_4e8 == 0" identifier == number_literal) ))))) ;) (expression_statement "pYVar7 = pYVar6 + 1;" (assignment_expression "pYVar7 = pYVar6 + 1" identifier = (binary_expression "pYVar6 + 1" identifier + number_literal)) ;) (expression_statement "yychar = -2;" (assignment_expression "yychar = -2" identifier = number_literal) ;) (expression_statement "*pYVar7 = yylval;" (assignment_expression "*pYVar7 = yylval" (pointer_expression "*pYVar7" * identifier) = identifier) ;) (goto_statement "goto LAB_00014ecb;" goto statement_identifier ;) })) (labeled_statement "LAB_00014d80:\n    uVar1 = (uint)"\x02"[(int)local_500];" statement_identifier : (expression_statement "uVar1 = (uint)"\x02"[(int)local_500];" (assignment_expression "uVar1 = (uint)"\x02"[(int)local_500]" identifier = (cast_expression "(uint)"\x02"[(int)local_500]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression ""\x02"[(int)local_500]" (string_literal ""\x02"" " escape_sequence ") [ (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;)) (if_statement "if (uVar1 == 0) {\n      if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }\n      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }\n      pYVar7 = pYVar6 + 1;\n      local_4e8 = 3;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }" if (parenthesized_expression "(uVar1 == 0)" ( (binary_expression "uVar1 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }\n      while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }\n      pYVar7 = pYVar6 + 1;\n      local_4e8 = 3;\n      *pYVar7 = yylval;\n      goto LAB_00014ecb;\n    }" { (if_statement "if (local_4e8 == 0) {\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }\n      else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }" if (parenthesized_expression "(local_4e8 == 0)" ( (binary_expression "local_4e8 == 0" identifier == number_literal) )) (compound_statement "{\n        yynerrs = yynerrs + 1;\n        yyerror(in_stack_fffffaf4);\n      }" { (expression_statement "yynerrs = yynerrs + 1;" (assignment_expression "yynerrs = yynerrs + 1" identifier = (binary_expression "yynerrs + 1" identifier + number_literal)) ;) (expression_statement "yyerror(in_stack_fffffaf4);" (call_expression "yyerror(in_stack_fffffaf4)" identifier (argument_list "(in_stack_fffffaf4)" ( identifier ))) ;) }) (else_clause "else if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }" else (if_statement "if (local_4e8 == 3) {\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }" if (parenthesized_expression "(local_4e8 == 3)" ( (binary_expression "local_4e8 == 3" identifier == number_literal) )) (compound_statement "{\n        if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }\n      }" { (if_statement "if (yychar < 1) {\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          yychar = -2;\n        }" if (parenthesized_expression "(yychar < 1)" ( (binary_expression "yychar < 1" identifier < number_literal) )) (compound_statement "{\n          if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }\n        }" { (if_statement "if (yychar == 0) {\n            iVar4 = 1;\n            goto LAB_00015015;\n          }" if (parenthesized_expression "(yychar == 0)" ( (binary_expression "yychar == 0" identifier == number_literal) )) (compound_statement "{\n            iVar4 = 1;\n            goto LAB_00015015;\n          }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) }) (else_clause "else {\n          yychar = -2;\n        }" else (compound_statement "{\n          yychar = -2;\n        }" { (expression_statement "yychar = -2;" (assignment_expression "yychar = -2" identifier = number_literal) ;) }))) })))) (while_statement "while ((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))) {\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }" while (parenthesized_expression "((((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1)))" ( (parenthesized_expression "(((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1))" ( (binary_expression "((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')) ||\n             (local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1)" (parenthesized_expression "((uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01'))" ( (binary_expression "(uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)) || ("\r"[uVar8 + 1] != '\x01')" (parenthesized_expression "(uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1))" ( (binary_expression "uVar8 == 0xfffffff2 || (0x22 < uVar8 + 1)" (binary_expression "uVar8 == 0xfffffff2" identifier == number_literal) || (parenthesized_expression "(0x22 < uVar8 + 1)" ( (binary_expression "0x22 < uVar8 + 1" number_literal < (binary_expression "uVar8 + 1" identifier + number_literal)) ))) )) || (parenthesized_expression "("\r"[uVar8 + 1] != '\x01')" ( (binary_expression ""\r"[uVar8 + 1] != '\x01'" (subscript_expression ""\r"[uVar8 + 1]" (string_literal ""\r"" " escape_sequence ") [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1)" ( (comma_expression "local_500 = (YYSTYPE)(int)yytable[uVar8 + 1], (int)local_500.name < 1" (assignment_expression "local_500 = (YYSTYPE)(int)yytable[uVar8 + 1]" identifier = (cast_expression "(YYSTYPE)(int)yytable[uVar8 + 1]" ( (type_descriptor "YYSTYPE" type_identifier) ) (cast_expression "(int)yytable[uVar8 + 1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yytable[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ])))) , (binary_expression "(int)local_500.name < 1" (cast_expression "(int)local_500.name" ( (type_descriptor "int" primitive_type) ) (field_expression "local_500.name" identifier . field_identifier)) < number_literal)) ))) )) )) (compound_statement "{\n        if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }\n        psVar2 = psVar2 + -1;\n        pYVar6 = pYVar6 + -1;\n        uVar8 = (uint)yypact[*psVar2];\n      }" { (if_statement "if (psVar2 == __src) {\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }" if (parenthesized_expression "(psVar2 == __src)" ( (binary_expression "psVar2 == __src" identifier == identifier) )) (compound_statement "{\n          iVar4 = 1;\n          psVar3 = psVar2;\n          goto LAB_00015015;\n        }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "psVar3 = psVar2;" (assignment_expression "psVar3 = psVar2" identifier = identifier) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) (expression_statement "psVar2 = psVar2 + -1;" (assignment_expression "psVar2 = psVar2 + -1" identifier = (binary_expression "psVar2 + -1" identifier + number_literal)) ;) (expression_statement "pYVar6 = pYVar6 + -1;" (assignment_expression "pYVar6 = pYVar6 + -1" identifier = (binary_expression "pYVar6 + -1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)yypact[*psVar2];" (assignment_expression "uVar8 = (uint)yypact[*psVar2]" identifier = (cast_expression "(uint)yypact[*psVar2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "yypact[*psVar2]" identifier [ (pointer_expression "*psVar2" * identifier) ]))) ;) })) (expression_statement "pYVar7 = pYVar6 + 1;" (assignment_expression "pYVar7 = pYVar6 + 1" identifier = (binary_expression "pYVar6 + 1" identifier + number_literal)) ;) (expression_statement "local_4e8 = 3;" (assignment_expression "local_4e8 = 3" identifier = number_literal) ;) (expression_statement "*pYVar7 = yylval;" (assignment_expression "*pYVar7 = yylval" (pointer_expression "*pYVar7" * identifier) = identifier) ;) (goto_statement "goto LAB_00014ecb;" goto statement_identifier ;) })) (labeled_statement "LAB_00014e24:\n    uVar8 = (uint)""[uVar1];" statement_identifier : (expression_statement "uVar8 = (uint)""[uVar1];" (assignment_expression "uVar8 = (uint)""[uVar1]" identifier = (cast_expression "(uint)""[uVar1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[uVar1]" (string_literal """" " ") [ identifier ]))) ;)) (expression_statement "local_500 = pYVar6[1 - uVar8];" (assignment_expression "local_500 = pYVar6[1 - uVar8]" identifier = (subscript_expression "pYVar6[1 - uVar8]" identifier [ (binary_expression "1 - uVar8" number_literal - identifier) ])) ;) (switch_statement "switch(uVar1) {\n    case 2:\n    case 6:\n      prompt();\n      break;\n    case 0x13:\n      ar_end();\n      return 0;\n    case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;\n    case 0x17:\n      ar_extract(pYVar6->list);\n      break;\n    case 0x18:\n      ar_replace(pYVar6->list);\n      break;\n    case 0x19:\n      ar_clear();\n      break;\n    case 0x1a:\n      ar_delete(pYVar6->list);\n      break;\n    case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;\n    case 0x1c:\n      ar_list();\n      break;\n    case 0x1d:\n      ar_save();\n      break;\n    case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;\n    case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;\n    case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;\n    case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;\n    case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500.name = (char *)0x0;\n      break;\n    case 0x24:\n      local_500 = pYVar6[-1];\n      break;\n    case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;\n    case 0x2a:\n      verbose = (int)(verbose == 0);\n    }" switch (parenthesized_expression "(uVar1)" ( identifier )) (compound_statement "{\n    case 2:\n    case 6:\n      prompt();\n      break;\n    case 0x13:\n      ar_end();\n      return 0;\n    case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;\n    case 0x17:\n      ar_extract(pYVar6->list);\n      break;\n    case 0x18:\n      ar_replace(pYVar6->list);\n      break;\n    case 0x19:\n      ar_clear();\n      break;\n    case 0x1a:\n      ar_delete(pYVar6->list);\n      break;\n    case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;\n    case 0x1c:\n      ar_list();\n      break;\n    case 0x1d:\n      ar_save();\n      break;\n    case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;\n    case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;\n    case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;\n    case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;\n    case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500.name = (char *)0x0;\n      break;\n    case 0x24:\n      local_500 = pYVar6[-1];\n      break;\n    case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;\n    case 0x2a:\n      verbose = (int)(verbose == 0);\n    }" { (case_statement "case 2:" case number_literal :) (case_statement "case 6:\n      prompt();\n      break;" case number_literal : (expression_statement "prompt();" (call_expression "prompt()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n      ar_end();\n      return 0;" case number_literal : (expression_statement "ar_end();" (call_expression "ar_end()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 0x15:\n      yyerror(in_stack_fffffaf4);\n      break;" case number_literal : (expression_statement "yyerror(in_stack_fffffaf4);" (call_expression "yyerror(in_stack_fffffaf4)" identifier (argument_list "(in_stack_fffffaf4)" ( identifier ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n      ar_extract(pYVar6->list);\n      break;" case number_literal : (expression_statement "ar_extract(pYVar6->list);" (call_expression "ar_extract(pYVar6->list)" identifier (argument_list "(pYVar6->list)" ( (field_expression "pYVar6->list" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n      ar_replace(pYVar6->list);\n      break;" case number_literal : (expression_statement "ar_replace(pYVar6->list);" (call_expression "ar_replace(pYVar6->list)" identifier (argument_list "(pYVar6->list)" ( (field_expression "pYVar6->list" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x19:\n      ar_clear();\n      break;" case number_literal : (expression_statement "ar_clear();" (call_expression "ar_clear()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1a:\n      ar_delete(pYVar6->list);\n      break;" case number_literal : (expression_statement "ar_delete(pYVar6->list);" (call_expression "ar_delete(pYVar6->list)" identifier (argument_list "(pYVar6->list)" ( (field_expression "pYVar6->list" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1b:\n      ar_addmod(pYVar6->list);\n      break;" case number_literal : (expression_statement "ar_addmod(pYVar6->list);" (call_expression "ar_addmod(pYVar6->list)" identifier (argument_list "(pYVar6->list)" ( (field_expression "pYVar6->list" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1c:\n      ar_list();\n      break;" case number_literal : (expression_statement "ar_list();" (call_expression "ar_list()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1d:\n      ar_save();\n      break;" case number_literal : (expression_statement "ar_save();" (call_expression "ar_save()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1e:\n      iVar4 = 0;\n      goto LAB_00014e5b;" case number_literal : (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00014e5b;" goto statement_identifier ;)) (case_statement "case 0x1f:\n      iVar4 = 1;\nLAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);\n      break;" case number_literal : (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00014e5b:\n      ar_open(pYVar6->name,iVar4);" statement_identifier : (expression_statement "ar_open(pYVar6->name,iVar4);" (call_expression "ar_open(pYVar6->name,iVar4)" identifier (argument_list "(pYVar6->name,iVar4)" ( (field_expression "pYVar6->name" identifier -> field_identifier) , identifier ))) ;)) (break_statement "break;" break ;)) (case_statement "case 0x20:\n      ar_addlib(pYVar6[-1].name,pYVar6->list);\n      break;" case number_literal : (expression_statement "ar_addlib(pYVar6[-1].name,pYVar6->list);" (call_expression "ar_addlib(pYVar6[-1].name,pYVar6->list)" identifier (argument_list "(pYVar6[-1].name,pYVar6->list)" ( (field_expression "pYVar6[-1].name" (subscript_expression "pYVar6[-1]" identifier [ number_literal ]) . field_identifier) , (field_expression "pYVar6->list" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x21:\n      ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);\n      break;" case number_literal : (expression_statement "ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name);" (call_expression "ar_directory(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name)" identifier (argument_list "(pYVar6[-2].name,pYVar6[-1].list,pYVar6->name)" ( (field_expression "pYVar6[-2].name" (subscript_expression "pYVar6[-2]" identifier [ number_literal ]) . field_identifier) , (field_expression "pYVar6[-1].list" (subscript_expression "pYVar6[-1]" identifier [ number_literal ]) . field_identifier) , (field_expression "pYVar6->name" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x22:\n      local_500.list = *(list **)pYVar6;\n      break;" case number_literal : (expression_statement "local_500.list = *(list **)pYVar6;" (assignment_expression "local_500.list = *(list **)pYVar6" (field_expression "local_500.list" identifier . field_identifier) = (pointer_expression "*(list **)pYVar6" * (cast_expression "(list **)pYVar6" ( (type_descriptor "list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0x23:" case number_literal :) (case_statement "case 0x25:" case number_literal :) (case_statement "case 0x27:\n      local_500.name = (char *)0x0;\n      break;" case number_literal : (expression_statement "local_500.name = (char *)0x0;" (assignment_expression "local_500.name = (char *)0x0" (field_expression "local_500.name" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x24:\n      local_500 = pYVar6[-1];\n      break;" case number_literal : (expression_statement "local_500 = pYVar6[-1];" (assignment_expression "local_500 = pYVar6[-1]" identifier = (subscript_expression "pYVar6[-1]" identifier [ number_literal ])) ;) (break_statement "break;" break ;)) (case_statement "case 0x26:\n      local_500.name = (char *)malloc(8);\n      (local_500.list)->next = (list *)pYVar6[-2];\n      (local_500.list)->name = (char *)*(list **)pYVar6;\n      break;" case number_literal : (expression_statement "local_500.name = (char *)malloc(8);" (assignment_expression "local_500.name = (char *)malloc(8)" (field_expression "local_500.name" identifier . field_identifier) = (cast_expression "(char *)malloc(8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "(local_500.list)->next = (list *)pYVar6[-2];" (assignment_expression "(local_500.list)->next = (list *)pYVar6[-2]" (field_expression "(local_500.list)->next" (parenthesized_expression "(local_500.list)" ( (field_expression "local_500.list" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(list *)pYVar6[-2]" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pYVar6[-2]" identifier [ number_literal ]))) ;) (expression_statement "(local_500.list)->name = (char *)*(list **)pYVar6;" (assignment_expression "(local_500.list)->name = (char *)*(list **)pYVar6" (field_expression "(local_500.list)->name" (parenthesized_expression "(local_500.list)" ( (field_expression "local_500.list" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(char *)*(list **)pYVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(list **)pYVar6" * (cast_expression "(list **)pYVar6" ( (type_descriptor "list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)))) ;) (break_statement "break;" break ;)) (case_statement "case 0x2a:\n      verbose = (int)(verbose == 0);" case number_literal : (expression_statement "verbose = (int)(verbose == 0);" (assignment_expression "verbose = (int)(verbose == 0)" identifier = (cast_expression "(int)(verbose == 0)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(verbose == 0)" ( (binary_expression "verbose == 0" identifier == number_literal) )))) ;)) })) (expression_statement "psVar2 = psVar2 + -uVar8;" (assignment_expression "psVar2 = psVar2 + -uVar8" identifier = (binary_expression "psVar2 + -uVar8" identifier + (unary_expression "-uVar8" - identifier))) ;) (expression_statement "pYVar7 = pYVar6 + (1 - uVar8);" (assignment_expression "pYVar7 = pYVar6 + (1 - uVar8)" identifier = (binary_expression "pYVar6 + (1 - uVar8)" identifier + (parenthesized_expression "(1 - uVar8)" ( (binary_expression "1 - uVar8" number_literal - identifier) )))) ;) (expression_statement "pYVar6[1 - uVar8] = local_500;" (assignment_expression "pYVar6[1 - uVar8] = local_500" (subscript_expression "pYVar6[1 - uVar8]" identifier [ (binary_expression "1 - uVar8" number_literal - identifier) ]) = identifier) ;) (expression_statement "uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2;" (assignment_expression "uVar8 = (int)yydefgoto[""[uVar1]] + (int)*psVar2" identifier = (binary_expression "(int)yydefgoto[""[uVar1]] + (int)*psVar2" (cast_expression "(int)yydefgoto[""[uVar1]]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yydefgoto[""[uVar1]]" identifier [ (subscript_expression """[uVar1]" (string_literal """" " ") [ identifier ]) ])) + (cast_expression "(int)*psVar2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar2" * identifier)))) ;) (if_statement "if ((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])) {\n      local_500 = (YYSTYPE)(int)yytable[uVar8];\n    }\n    else {\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }" if (parenthesized_expression "((uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8]))" ( (binary_expression "(uVar8 < 0x23) && ((int)*psVar2 == (uint)"\r"[uVar8])" (parenthesized_expression "(uVar8 < 0x23)" ( (binary_expression "uVar8 < 0x23" identifier < number_literal) )) && (parenthesized_expression "((int)*psVar2 == (uint)"\r"[uVar8])" ( (binary_expression "(int)*psVar2 == (uint)"\r"[uVar8]" (cast_expression "(int)*psVar2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar2" * identifier)) == (cast_expression "(uint)"\r"[uVar8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression ""\r"[uVar8]" (string_literal ""\r"" " escape_sequence ") [ identifier ]))) ))) )) (compound_statement "{\n      local_500 = (YYSTYPE)(int)yytable[uVar8];\n    }" { (expression_statement "local_500 = (YYSTYPE)(int)yytable[uVar8];" (assignment_expression "local_500 = (YYSTYPE)(int)yytable[uVar8]" identifier = (cast_expression "(YYSTYPE)(int)yytable[uVar8]" ( (type_descriptor "YYSTYPE" type_identifier) ) (cast_expression "(int)yytable[uVar8]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yytable[uVar8]" identifier [ identifier ])))) ;) }) (else_clause "else {\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }" else (compound_statement "{\n      local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];\n    }" { (expression_statement "local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc];" (assignment_expression "local_500 = (YYSTYPE)(int)yytable[""[uVar1] + 0xc]" identifier = (cast_expression "(YYSTYPE)(int)yytable[""[uVar1] + 0xc]" ( (type_descriptor "YYSTYPE" type_identifier) ) (cast_expression "(int)yytable[""[uVar1] + 0xc]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yytable[""[uVar1] + 0xc]" identifier [ (binary_expression """[uVar1] + 0xc" (subscript_expression """[uVar1]" (string_literal """" " ") [ identifier ]) + number_literal) ])))) ;) }))) (labeled_statement "LAB_00014ecb:\n    psVar5 = psVar2 + 1;" statement_identifier : (expression_statement "psVar5 = psVar2 + 1;" (assignment_expression "psVar5 = psVar2 + 1" identifier = (binary_expression "psVar2 + 1" identifier + number_literal)) ;)) (expression_statement "psVar2[1] = local_500._0_2_;" (assignment_expression "psVar2[1] = local_500._0_2_" (subscript_expression "psVar2[1]" identifier [ number_literal ]) = (field_expression "local_500._0_2_" identifier . field_identifier)) ;) (expression_statement "uVar8 = local_4f4 * 2;" (assignment_expression "uVar8 = local_4f4 * 2" identifier = (binary_expression "local_4f4 * 2" identifier * number_literal)) ;) (if_statement "if (__src + (local_4f4 - 1) <= psVar5) {\n      iVar4 = (int)psVar5 - (int)__src >> 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      iVar4 = 2;\n      yyerror(in_stack_fffffaf4);\n      psVar3 = __src;\n      goto LAB_00015015;\n    }" if (parenthesized_expression "(__src + (local_4f4 - 1) <= psVar5)" ( (binary_expression "__src + (local_4f4 - 1) <= psVar5" (binary_expression "__src + (local_4f4 - 1)" identifier + (parenthesized_expression "(local_4f4 - 1)" ( (binary_expression "local_4f4 - 1" identifier - number_literal) ))) <= identifier) )) (compound_statement "{\n      iVar4 = (int)psVar5 - (int)__src >> 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      iVar4 = 2;\n      yyerror(in_stack_fffffaf4);\n      psVar3 = __src;\n      goto LAB_00015015;\n    }" { (expression_statement "iVar4 = (int)psVar5 - (int)__src >> 1;" (assignment_expression "iVar4 = (int)psVar5 - (int)__src >> 1" identifier = (binary_expression "(int)psVar5 - (int)__src >> 1" (binary_expression "(int)psVar5 - (int)__src" (cast_expression "(int)psVar5" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (if_statement "if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }" if (parenthesized_expression "(local_4f4 < 10000)" ( (binary_expression "local_4f4 < 10000" identifier < number_literal) )) (compound_statement "{\n        local_4f4 = 10000;\n        if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }\n        psVar3 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }\n      }" { (expression_statement "local_4f4 = 10000;" (assignment_expression "local_4f4 = 10000" identifier = number_literal) ;) (if_statement "if (uVar8 < 0x2711) {\n          local_4f4 = uVar8;\n        }" if (parenthesized_expression "(uVar8 < 0x2711)" ( (binary_expression "uVar8 < 0x2711" identifier < number_literal) )) (compound_statement "{\n          local_4f4 = uVar8;\n        }" { (expression_statement "local_4f4 = uVar8;" (assignment_expression "local_4f4 = uVar8" identifier = identifier) ;) })) (expression_statement "psVar3 = (short *)malloc(local_4f4 * 6 + 3);" (assignment_expression "psVar3 = (short *)malloc(local_4f4 * 6 + 3)" identifier = (cast_expression "(short *)malloc(local_4f4 * 6 + 3)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(local_4f4 * 6 + 3)" identifier (argument_list "(local_4f4 * 6 + 3)" ( (binary_expression "local_4f4 * 6 + 3" (binary_expression "local_4f4 * 6" identifier * number_literal) + number_literal) ))))) ;) (if_statement "if (psVar3 != (short *)0x0) {\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }" if (parenthesized_expression "(psVar3 != (short *)0x0)" ( (binary_expression "psVar3 != (short *)0x0" identifier != (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(psVar3,__src,(iVar4 + 1) * 2);\n          pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);\n          memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);\n          if (__src != yyssa) {\n            free(__src);\n          }\n          psVar5 = psVar3 + iVar4;\n          pYVar7 = pYVar6 + iVar4;\n          local_4ec = pYVar6;\n          if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;\n          iVar4 = 1;\n          goto LAB_0001501b;\n        }" { (expression_statement "memcpy(psVar3,__src,(iVar4 + 1) * 2);" (call_expression "memcpy(psVar3,__src,(iVar4 + 1) * 2)" identifier (argument_list "(psVar3,__src,(iVar4 + 1) * 2)" ( identifier , identifier , (binary_expression "(iVar4 + 1) * 2" (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )) * number_literal) ))) ;) (expression_statement "pYVar6 = (YYSTYPE *)(psVar3 + local_4f4);" (assignment_expression "pYVar6 = (YYSTYPE *)(psVar3 + local_4f4)" identifier = (cast_expression "(YYSTYPE *)(psVar3 + local_4f4)" ( (type_descriptor "YYSTYPE *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar3 + local_4f4)" ( (binary_expression "psVar3 + local_4f4" identifier + identifier) )))) ;) (expression_statement "memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4);" (call_expression "memcpy(pYVar6,local_4ec,(iVar4 + 1) * 4)" identifier (argument_list "(pYVar6,local_4ec,(iVar4 + 1) * 4)" ( identifier , identifier , (binary_expression "(iVar4 + 1) * 4" (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) )) * number_literal) ))) ;) (if_statement "if (__src != yyssa) {\n            free(__src);\n          }" if (parenthesized_expression "(__src != yyssa)" ( (binary_expression "__src != yyssa" identifier != identifier) )) (compound_statement "{\n            free(__src);\n          }" { (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) })) (expression_statement "psVar5 = psVar3 + iVar4;" (assignment_expression "psVar5 = psVar3 + iVar4" identifier = (binary_expression "psVar3 + iVar4" identifier + identifier)) ;) (expression_statement "pYVar7 = pYVar6 + iVar4;" (assignment_expression "pYVar7 = pYVar6 + iVar4" identifier = (binary_expression "pYVar6 + iVar4" identifier + identifier)) ;) (expression_statement "local_4ec = pYVar6;" (assignment_expression "local_4ec = pYVar6" identifier = identifier) ;) (if_statement "if (psVar5 < psVar3 + (local_4f4 - 1)) goto LAB_00014fae;" if (parenthesized_expression "(psVar5 < psVar3 + (local_4f4 - 1))" ( (binary_expression "psVar5 < psVar3 + (local_4f4 - 1)" identifier < (binary_expression "psVar3 + (local_4f4 - 1)" identifier + (parenthesized_expression "(local_4f4 - 1)" ( (binary_expression "local_4f4 - 1" identifier - number_literal) )))) )) (goto_statement "goto LAB_00014fae;" goto statement_identifier ;)) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0001501b;" goto statement_identifier ;) })) })) (expression_statement "iVar4 = 2;" (assignment_expression "iVar4 = 2" identifier = number_literal) ;) (expression_statement "yyerror(in_stack_fffffaf4);" (call_expression "yyerror(in_stack_fffffaf4)" identifier (argument_list "(in_stack_fffffaf4)" ( identifier ))) ;) (expression_statement "psVar3 = __src;" (assignment_expression "psVar3 = __src" identifier = identifier) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) (labeled_statement "LAB_00014fae:\n    __src = psVar3;" statement_identifier : (expression_statement "__src = psVar3;" (assignment_expression "__src = psVar3" identifier = identifier) ;)) (expression_statement "psVar2 = psVar5;" (assignment_expression "psVar2 = psVar5" identifier = identifier) ;) (expression_statement "pYVar6 = pYVar7;" (assignment_expression "pYVar6 = pYVar7" identifier = identifier) ;) }) while (parenthesized_expression "(local_500 != (YYSTYPE)0x3)" ( (binary_expression "local_500 != (YYSTYPE)0x3" identifier != (cast_expression "(YYSTYPE)0x3" ( (type_descriptor "YYSTYPE" type_identifier) ) number_literal)) )) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015015:\n  if (psVar3 != yyssa) {\nLAB_0001501b:\n    free(psVar3);\n  }" statement_identifier : (if_statement "if (psVar3 != yyssa) {\nLAB_0001501b:\n    free(psVar3);\n  }" if (parenthesized_expression "(psVar3 != yyssa)" ( (binary_expression "psVar3 != yyssa" identifier != identifier) )) (compound_statement "{\nLAB_0001501b:\n    free(psVar3);\n  }" { (labeled_statement "LAB_0001501b:\n    free(psVar3);" statement_identifier : (expression_statement "free(psVar3);" (call_expression "free(psVar3)" identifier (argument_list "(psVar3)" ( identifier ))) ;)) }))) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "undefined4 FUN_00014c60(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}\n\n" (function_definition "undefined4 FUN_00014c60(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}" type_identifier (function_declarator "FUN_00014c60(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "short *psVar2;" (sized_type_specifier "short" short) (pointer_declarator "*psVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "short *psVar4;" (sized_type_specifier "short" short) (pointer_declarator "*psVar4" * identifier) ;) (declaration "short *psVar5;" (sized_type_specifier "short" short) (pointer_declarator "*psVar5" * identifier) ;) (declaration "short *__src;" (sized_type_specifier "short" short) (pointer_declarator "*__src" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "short *psVar7;" (sized_type_specifier "short" short) (pointer_declarator "*psVar7" * identifier) ;) (declaration "short *psVar8;" (sized_type_specifier "short" short) (pointer_declarator "*psVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "undefined4 *local_500;" type_identifier (pointer_declarator "*local_500" * identifier) ;) (declaration "uint local_4f4;" type_identifier identifier ;) (declaration "uint local_4f0;" type_identifier identifier ;) (declaration "short *local_4ec;" (sized_type_specifier "short" short) (pointer_declarator "*local_4ec" * identifier) ;) (declaration "int local_4e8;" primitive_type identifier ;) (declaration "short local_4ce [201];" (sized_type_specifier "short" short) (array_declarator "local_4ce [201]" identifier [ number_literal ]) ;) (declaration "short local_33c [404];" (sized_type_specifier "short" short) (array_declarator "local_33c [404]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x14c69;" (assignment_expression "uStack_14 = 0x14c69" identifier = number_literal) ;) (expression_statement "psVar2 = local_4ce + 1;" (assignment_expression "psVar2 = local_4ce + 1" identifier = (binary_expression "local_4ce + 1" identifier + number_literal)) ;) (expression_statement "local_4ec = local_33c;" (assignment_expression "local_4ec = local_33c" identifier = identifier) ;) (expression_statement "local_500 = (undefined4 *)0x0;" (assignment_expression "local_500 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_4e8 = 0;" (assignment_expression "local_4e8 = 0" identifier = number_literal) ;) (expression_statement "local_4f4 = 200;" (assignment_expression "local_4f4 = 200" identifier = number_literal) ;) (expression_statement "DAT_00021388 = 0;" (assignment_expression "DAT_00021388 = 0" identifier = number_literal) ;) (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" identifier = number_literal) ;) (expression_statement "local_4ce[1] = 0;" (assignment_expression "local_4ce[1] = 0" (subscript_expression "local_4ce[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "__src = psVar2;" (assignment_expression "__src = psVar2" identifier = identifier) ;) (expression_statement "psVar4 = psVar2;" (assignment_expression "psVar4 = psVar2" identifier = identifier) ;) (expression_statement "psVar7 = local_4ec;" (assignment_expression "psVar7 = local_4ec" identifier = identifier) ;) (do_statement "do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);" do (compound_statement "{\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  }" { (expression_statement "uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];" (assignment_expression "uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500]" identifier = (subscript_expression "(uint)(char)(&DAT_0001b260)[(int)local_500]" (call_expression "(uint)(char)(&DAT_0001b260)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0001b260)" ( (pointer_expression "&DAT_0001b260" & identifier) ))) [ (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "psVar5 = __src;" (assignment_expression "psVar5 = __src" identifier = identifier) ;) (if_statement "if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" if (parenthesized_expression "(uVar10 != 0xfffffff2)" ( (binary_expression "uVar10 != 0xfffffff2" identifier != number_literal) )) (compound_statement "{\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" { (if_statement "if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }" if (parenthesized_expression "(DAT_0002138c == -2)" ( (binary_expression "DAT_0002138c == -2" identifier == number_literal) )) (compound_statement "{\n        DAT_0002138c = FUN_00015810();\n      }" { (expression_statement "DAT_0002138c = FUN_00015810();" (assignment_expression "DAT_0002138c = FUN_00015810()" identifier = (call_expression "FUN_00015810()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" if (parenthesized_expression "(DAT_0002138c < 1)" ( (binary_expression "DAT_0002138c < 1" identifier < number_literal) )) (compound_statement "{\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }" { (expression_statement "local_4f0 = 0;" (assignment_expression "local_4f0 = 0" identifier = number_literal) ;) (expression_statement "DAT_0002138c = 0;" (assignment_expression "DAT_0002138c = 0" identifier = number_literal) ;) (expression_statement "uVar3 = uVar10;" (assignment_expression "uVar3 = uVar10" identifier = identifier) ;) }) (else_clause "else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" else (if_statement "if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" if (parenthesized_expression "(DAT_0002138c < 0x114)" ( (binary_expression "DAT_0002138c < 0x114" identifier < number_literal) )) (compound_statement "{\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }" { (expression_statement "local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];" (assignment_expression "local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c]" identifier = (subscript_expression "(uint)(byte)(&UNK_0001b2a0)[DAT_0002138c]" (call_expression "(uint)(byte)(&UNK_0001b2a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&UNK_0001b2a0)" ( (pointer_expression "&UNK_0001b2a0" & identifier) ))) [ identifier ])) ;) (expression_statement "uVar3 = uVar10 + local_4f0;" (assignment_expression "uVar3 = uVar10 + local_4f0" identifier = (binary_expression "uVar10 + local_4f0" identifier + identifier)) ;) }) (else_clause "else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" else (compound_statement "{\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" { (expression_statement "local_4f0 = 2;" (assignment_expression "local_4f0 = 2" identifier = number_literal) ;) (expression_statement "uVar3 = uVar10 + 2;" (assignment_expression "uVar3 = uVar10 + 2" identifier = (binary_expression "uVar10 + 2" identifier + number_literal)) ;) }))))) (if_statement "if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;" if (parenthesized_expression "((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0))" ( (binary_expression "(0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)" (parenthesized_expression "(0x22 < uVar3)" ( (binary_expression "0x22 < uVar3" number_literal < identifier) )) || (parenthesized_expression "((byte)(&DAT_0001b180)[uVar3] != local_4f0)" ( (binary_expression "(byte)(&DAT_0001b180)[uVar3] != local_4f0" (subscript_expression "(byte)(&DAT_0001b180)[uVar3]" (call_expression "(byte)(&DAT_0001b180)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0001b180)" ( (pointer_expression "&DAT_0001b180" & identifier) ))) [ identifier ]) != identifier) ))) )) (goto_statement "goto LAB_00014d80;" goto statement_identifier ;)) (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1c0)[uVar3]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1c0)[uVar3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1c0)[uVar3]" (parenthesized_expression "(&DAT_0001b1c0)" ( (pointer_expression "&DAT_0001b1c0" & identifier) )) [ identifier ]))))) ;) (if_statement "if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }" if (parenthesized_expression "((int)local_500 < 1)" ( (binary_expression "(int)local_500 < 1" (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }" { (expression_statement "uVar3 = -(int)local_500;" (assignment_expression "uVar3 = -(int)local_500" identifier = (unary_expression "-(int)local_500" - (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00014e24;" goto statement_identifier ;) })) (expression_statement "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);" (assignment_expression "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0)" identifier = (binary_expression "local_4e8 + -1 + (uint)(local_4e8 == 0)" (binary_expression "local_4e8 + -1" identifier + number_literal) + (call_expression "(uint)(local_4e8 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_4e8 == 0)" ( (binary_expression "local_4e8 == 0" identifier == number_literal) ))))) ;) (expression_statement "psVar8 = psVar7 + 2;" (assignment_expression "psVar8 = psVar7 + 2" identifier = (binary_expression "psVar7 + 2" identifier + number_literal)) ;) (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" identifier = number_literal) ;) (expression_statement "*(undefined4 *)psVar8 = DAT_00021390;" (assignment_expression "*(undefined4 *)psVar8 = DAT_00021390" (pointer_expression "*(undefined4 *)psVar8" * (cast_expression "(undefined4 *)psVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (goto_statement "goto LAB_00014ecb;" goto statement_identifier ;) })) (labeled_statement "LAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];" statement_identifier : (expression_statement "uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001b220)[(int)local_500]" (call_expression "(uint)(byte)(&DAT_0001b220)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001b220)" ( (pointer_expression "&DAT_0001b220" & identifier) ))) [ (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;)) (if_statement "if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" { (if_statement "if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" if (parenthesized_expression "(local_4e8 == 0)" ( (binary_expression "local_4e8 == 0" identifier == number_literal) )) (compound_statement "{\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }" { (expression_statement "DAT_00021388 = DAT_00021388 + 1;" (assignment_expression "DAT_00021388 = DAT_00021388 + 1" identifier = (binary_expression "DAT_00021388 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" else (if_statement "if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" if (parenthesized_expression "(local_4e8 == 3)" ( (binary_expression "local_4e8 == 3" identifier == number_literal) )) (compound_statement "{\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" { (if_statement "if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }" if (parenthesized_expression "(DAT_0002138c < 1)" ( (binary_expression "DAT_0002138c < 1" identifier < number_literal) )) (compound_statement "{\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }" { (if_statement "if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }" if (parenthesized_expression "(DAT_0002138c == 0)" ( (binary_expression "DAT_0002138c == 0" identifier == number_literal) )) (compound_statement "{\n            uVar9 = 1;\n            goto LAB_00015015;\n          }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) }) (else_clause "else {\n          DAT_0002138c = -2;\n        }" else (compound_statement "{\n          DAT_0002138c = -2;\n        }" { (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" identifier = number_literal) ;) }))) })))) (while_statement "while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }" while (parenthesized_expression "((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))" ( (parenthesized_expression "(((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1))" ( (binary_expression "((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)" (parenthesized_expression "((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))" ( (binary_expression "(uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01')" (parenthesized_expression "(uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1))" ( (binary_expression "uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)" (binary_expression "uVar10 == 0xfffffff2" identifier == number_literal) || (parenthesized_expression "(0x22 < uVar10 + 1)" ( (binary_expression "0x22 < uVar10 + 1" number_literal < (binary_expression "uVar10 + 1" identifier + number_literal)) ))) )) || (parenthesized_expression "((&DAT_0001b181)[uVar10] != '\x01')" ( (binary_expression "(&DAT_0001b181)[uVar10] != '\x01'" (subscript_expression "(&DAT_0001b181)[uVar10]" (parenthesized_expression "(&DAT_0001b181)" ( (pointer_expression "&DAT_0001b181" & identifier) )) [ identifier ]) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)" ( (comma_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1c1)[uVar10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1c1)[uVar10]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1c1)[uVar10]" (parenthesized_expression "(&DAT_0001b1c1)" ( (pointer_expression "&DAT_0001b1c1" & identifier) )) [ identifier ]))))) , (binary_expression "(int)local_500 < 1" (cast_expression "(int)local_500" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal)) ))) )) )) (compound_statement "{\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }" { (if_statement "if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }" if (parenthesized_expression "(psVar4 == __src)" ( (binary_expression "psVar4 == __src" identifier == identifier) )) (compound_statement "{\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "psVar5 = psVar4;" (assignment_expression "psVar5 = psVar4" identifier = identifier) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) (expression_statement "psVar4 = psVar4 + -1;" (assignment_expression "psVar4 = psVar4 + -1" identifier = (binary_expression "psVar4 + -1" identifier + number_literal)) ;) (expression_statement "psVar7 = psVar7 + -2;" (assignment_expression "psVar7 = psVar7 + -2" identifier = (binary_expression "psVar7 + -2" identifier + number_literal)) ;) (expression_statement "uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];" (assignment_expression "uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4]" identifier = (subscript_expression "(uint)(char)(&DAT_0001b260)[*psVar4]" (call_expression "(uint)(char)(&DAT_0001b260)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0001b260)" ( (pointer_expression "&DAT_0001b260" & identifier) ))) [ (pointer_expression "*psVar4" * identifier) ])) ;) })) (expression_statement "psVar8 = psVar7 + 2;" (assignment_expression "psVar8 = psVar7 + 2" identifier = (binary_expression "psVar7 + 2" identifier + number_literal)) ;) (expression_statement "local_4e8 = 3;" (assignment_expression "local_4e8 = 3" identifier = number_literal) ;) (expression_statement "*(undefined4 *)psVar8 = DAT_00021390;" (assignment_expression "*(undefined4 *)psVar8 = DAT_00021390" (pointer_expression "*(undefined4 *)psVar8" * (cast_expression "(undefined4 *)psVar8" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (goto_statement "goto LAB_00014ecb;" goto statement_identifier ;) })) (labeled_statement "LAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];" statement_identifier : (expression_statement "uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];" (assignment_expression "uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3]" identifier = (subscript_expression "(uint)(byte)(&DAT_0001b100)[uVar3]" (call_expression "(uint)(byte)(&DAT_0001b100)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001b100)" ( (pointer_expression "&DAT_0001b100" & identifier) ))) [ identifier ])) ;)) (expression_statement "local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);" (assignment_expression "local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2)" identifier = (pointer_expression "*(undefined4 **)(psVar7 + (1 - uVar10) * 2)" * (cast_expression "(undefined4 **)(psVar7 + (1 - uVar10) * 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar7 + (1 - uVar10) * 2)" ( (binary_expression "psVar7 + (1 - uVar10) * 2" identifier + (binary_expression "(1 - uVar10) * 2" (parenthesized_expression "(1 - uVar10)" ( (binary_expression "1 - uVar10" number_literal - identifier) )) * number_literal)) ))))) ;) (switch_statement "switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }" switch (parenthesized_expression "(uVar3)" ( identifier )) (compound_statement "{\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }" { (case_statement "case 2:" case number_literal :) (case_statement "case 6:\n      FUN_000169c0();\n      break;" case number_literal : (expression_statement "FUN_000169c0();" (call_expression "FUN_000169c0()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n      FUN_00017320();\n      return 0;" case number_literal : (expression_statement "FUN_00017320();" (call_expression "FUN_00017320()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 0x15:\n      FUN_00014c20();\n      break;" case number_literal : (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00017360(*(undefined4 *)psVar7);" (call_expression "FUN_00017360(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016ff0(*(undefined4 *)psVar7);" (call_expression "FUN_00016ff0(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x19:\n      FUN_00016db0();\n      break;" case number_literal : (expression_statement "FUN_00016db0();" (call_expression "FUN_00016db0()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016dd0(*(undefined4 *)psVar7);" (call_expression "FUN_00016dd0(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016c90(*(undefined4 *)psVar7);" (call_expression "FUN_00016c90(*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1c:\n      FUN_00017240();\n      break;" case number_literal : (expression_statement "FUN_00017240();" (call_expression "FUN_00017240()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1d:\n      FUN_00016f20();\n      break;" case number_literal : (expression_statement "FUN_00016f20();" (call_expression "FUN_00016f20()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;" case number_literal : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (goto_statement "goto code_r0x00014e5b;" goto statement_identifier ;)) (case_statement "case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;" case number_literal : (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (labeled_statement "code_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);" statement_identifier : (expression_statement "FUN_00016a40(*(undefined4 *)psVar7,uVar9);" (call_expression "FUN_00016a40(*(undefined4 *)psVar7,uVar9)" identifier (argument_list "(*(undefined4 *)psVar7,uVar9)" ( (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , identifier ))) ;)) (break_statement "break;" break ;)) (case_statement "case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);" (call_expression "FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)(psVar7 + -2)" * (cast_expression "(undefined4 *)(psVar7 + -2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -2)" ( (binary_expression "psVar7 + -2" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;" case number_literal : (expression_statement "FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);" (call_expression "FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" identifier (argument_list "(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" ( (pointer_expression "*(undefined4 *)(psVar7 + -4)" * (cast_expression "(undefined4 *)(psVar7 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -4)" ( (binary_expression "psVar7 + -4" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(psVar7 + -2)" * (cast_expression "(undefined4 *)(psVar7 + -2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -2)" ( (binary_expression "psVar7 + -2" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;" case number_literal : (expression_statement "local_500 = *(undefined4 **)psVar7;" (assignment_expression "local_500 = *(undefined4 **)psVar7" identifier = (pointer_expression "*(undefined4 **)psVar7" * (cast_expression "(undefined4 **)psVar7" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0x23:" case number_literal :) (case_statement "case 0x25:" case number_literal :) (case_statement "case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;" case number_literal : (expression_statement "local_500 = (undefined4 *)0x0;" (assignment_expression "local_500 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;" case number_literal : (expression_statement "local_500 = *(undefined4 **)(psVar7 + -2);" (assignment_expression "local_500 = *(undefined4 **)(psVar7 + -2)" identifier = (pointer_expression "*(undefined4 **)(psVar7 + -2)" * (cast_expression "(undefined4 **)(psVar7 + -2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar7 + -2)" ( (binary_expression "psVar7 + -2" identifier + number_literal) ))))) ;) (break_statement "break;" break ;)) (case_statement "case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;" case number_literal : (expression_statement "local_500 = (undefined4 *)malloc(8);" (assignment_expression "local_500 = (undefined4 *)malloc(8)" identifier = (cast_expression "(undefined4 *)malloc(8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "local_500[1] = *(undefined4 *)(psVar7 + -4);" (assignment_expression "local_500[1] = *(undefined4 *)(psVar7 + -4)" (subscript_expression "local_500[1]" identifier [ number_literal ]) = (pointer_expression "*(undefined4 *)(psVar7 + -4)" * (cast_expression "(undefined4 *)(psVar7 + -4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(psVar7 + -4)" ( (binary_expression "psVar7 + -4" identifier + number_literal) ))))) ;) (expression_statement "*local_500 = *(undefined4 *)psVar7;" (assignment_expression "*local_500 = *(undefined4 *)psVar7" (pointer_expression "*local_500" * identifier) = (pointer_expression "*(undefined4 *)psVar7" * (cast_expression "(undefined4 *)psVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);" case number_literal : (expression_statement "DAT_0002126c = (uint)(DAT_0002126c == 0);" (assignment_expression "DAT_0002126c = (uint)(DAT_0002126c == 0)" identifier = (call_expression "(uint)(DAT_0002126c == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_0002126c == 0)" ( (binary_expression "DAT_0002126c == 0" identifier == number_literal) )))) ;)) })) (expression_statement "psVar4 = psVar4 + -uVar10;" (assignment_expression "psVar4 = psVar4 + -uVar10" identifier = (binary_expression "psVar4 + -uVar10" identifier + (unary_expression "-uVar10" - identifier))) ;) (expression_statement "psVar8 = psVar7 + uVar10 * -2 + 2;" (assignment_expression "psVar8 = psVar7 + uVar10 * -2 + 2" identifier = (binary_expression "psVar7 + uVar10 * -2 + 2" (binary_expression "psVar7 + uVar10 * -2" identifier + (binary_expression "uVar10 * -2" identifier * number_literal)) + number_literal)) ;) (expression_statement "*(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;" (assignment_expression "*(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500" (pointer_expression "*(undefined4 **)(psVar7 + uVar10 * -2 + 2)" * (cast_expression "(undefined4 **)(psVar7 + uVar10 * -2 + 2)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(psVar7 + uVar10 * -2 + 2)" ( (binary_expression "psVar7 + uVar10 * -2 + 2" (binary_expression "psVar7 + uVar10 * -2" identifier + (binary_expression "uVar10 * -2" identifier * number_literal)) + number_literal) )))) = identifier) ;) (expression_statement "uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;" (assignment_expression "uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4" identifier = (binary_expression "(int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4" (cast_expression "(int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" (parenthesized_expression "(&DAT_0001b1e4)" ( (pointer_expression "&DAT_0001b1e4" & identifier) )) [ (subscript_expression "(byte)(&DAT_0001b140)[uVar3]" (call_expression "(byte)(&DAT_0001b140)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0001b140)" ( (pointer_expression "&DAT_0001b140" & identifier) ))) [ identifier ]) ]))) + (cast_expression "(int)*psVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar4" * identifier)))) ;) (if_statement "if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" if (parenthesized_expression "((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10]))" ( (binary_expression "(uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])" (parenthesized_expression "(uVar10 < 0x23)" ( (binary_expression "uVar10 < 0x23" identifier < number_literal) )) && (parenthesized_expression "((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])" ( (binary_expression "(int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10]" (cast_expression "(int)*psVar4" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*psVar4" * identifier)) == (subscript_expression "(uint)(byte)(&DAT_0001b180)[uVar10]" (call_expression "(uint)(byte)(&DAT_0001b180)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0001b180)" ( (pointer_expression "&DAT_0001b180" & identifier) ))) [ identifier ])) ))) )) (compound_statement "{\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }" { (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1c0)[uVar10]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1c0)[uVar10]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1c0)[uVar10]" (parenthesized_expression "(&DAT_0001b1c0)" ( (pointer_expression "&DAT_0001b1c0" & identifier) )) [ identifier ]))))) ;) }) (else_clause "else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" else (compound_statement "{\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" { (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" identifier = (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" (parenthesized_expression "(&DAT_0001b1cc)" ( (pointer_expression "&DAT_0001b1cc" & identifier) )) [ (subscript_expression "(byte)(&DAT_0001b140)[uVar3]" (call_expression "(byte)(&DAT_0001b140)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0001b140)" ( (pointer_expression "&DAT_0001b140" & identifier) ))) [ identifier ]) ]))))) ;) }))) (labeled_statement "LAB_00014ecb:\n    psVar7 = psVar4 + 1;" statement_identifier : (expression_statement "psVar7 = psVar4 + 1;" (assignment_expression "psVar7 = psVar4 + 1" identifier = (binary_expression "psVar4 + 1" identifier + number_literal)) ;)) (expression_statement "psVar4[1] = (short)local_500;" (assignment_expression "psVar4[1] = (short)local_500" (subscript_expression "psVar4[1]" identifier [ number_literal ]) = (cast_expression "(short)local_500" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (expression_statement "uVar10 = local_4f4 * 2;" (assignment_expression "uVar10 = local_4f4 * 2" identifier = (binary_expression "local_4f4 * 2" identifier * number_literal)) ;) (if_statement "if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }" if (parenthesized_expression "(__src + (local_4f4 - 1) <= psVar7)" ( (binary_expression "__src + (local_4f4 - 1) <= psVar7" (binary_expression "__src + (local_4f4 - 1)" identifier + (parenthesized_expression "(local_4f4 - 1)" ( (binary_expression "local_4f4 - 1" identifier - number_literal) ))) <= identifier) )) (compound_statement "{\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }" { (expression_statement "iVar6 = (int)psVar7 - (int)__src >> 1;" (assignment_expression "iVar6 = (int)psVar7 - (int)__src >> 1" identifier = (binary_expression "(int)psVar7 - (int)__src >> 1" (binary_expression "(int)psVar7 - (int)__src" (cast_expression "(int)psVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)__src" ( (type_descriptor "int" primitive_type) ) identifier)) >> number_literal)) ;) (expression_statement "iVar1 = iVar6 + 1;" (assignment_expression "iVar1 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }" if (parenthesized_expression "(local_4f4 < 10000)" ( (binary_expression "local_4f4 < 10000" identifier < number_literal) )) (compound_statement "{\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }" { (expression_statement "local_4f4 = 10000;" (assignment_expression "local_4f4 = 10000" identifier = number_literal) ;) (if_statement "if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }" if (parenthesized_expression "(uVar10 < 0x2711)" ( (binary_expression "uVar10 < 0x2711" identifier < number_literal) )) (compound_statement "{\n          local_4f4 = uVar10;\n        }" { (expression_statement "local_4f4 = uVar10;" (assignment_expression "local_4f4 = uVar10" identifier = identifier) ;) })) (expression_statement "psVar5 = (short *)malloc(local_4f4 * 6 + 3);" (assignment_expression "psVar5 = (short *)malloc(local_4f4 * 6 + 3)" identifier = (cast_expression "(short *)malloc(local_4f4 * 6 + 3)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(local_4f4 * 6 + 3)" identifier (argument_list "(local_4f4 * 6 + 3)" ( (binary_expression "local_4f4 * 6 + 3" (binary_expression "local_4f4 * 6" identifier * number_literal) + number_literal) ))))) ;) (if_statement "if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }" if (parenthesized_expression "(psVar5 != (short *)0x0)" ( (binary_expression "psVar5 != (short *)0x0" identifier != (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }" { (expression_statement "memcpy(psVar5,__src,iVar1 * 2);" (call_expression "memcpy(psVar5,__src,iVar1 * 2)" identifier (argument_list "(psVar5,__src,iVar1 * 2)" ( identifier , identifier , (binary_expression "iVar1 * 2" identifier * number_literal) ))) ;) (expression_statement "psVar4 = psVar5 + local_4f4;" (assignment_expression "psVar4 = psVar5 + local_4f4" identifier = (binary_expression "psVar5 + local_4f4" identifier + identifier)) ;) (expression_statement "memcpy(psVar4,local_4ec,iVar1 * 4);" (call_expression "memcpy(psVar4,local_4ec,iVar1 * 4)" identifier (argument_list "(psVar4,local_4ec,iVar1 * 4)" ( identifier , identifier , (binary_expression "iVar1 * 4" identifier * number_literal) ))) ;) (if_statement "if (__src != psVar2) {\n            free(__src);\n          }" if (parenthesized_expression "(__src != psVar2)" ( (binary_expression "__src != psVar2" identifier != identifier) )) (compound_statement "{\n            free(__src);\n          }" { (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) })) (expression_statement "psVar7 = psVar5 + iVar6;" (assignment_expression "psVar7 = psVar5 + iVar6" identifier = (binary_expression "psVar5 + iVar6" identifier + identifier)) ;) (expression_statement "psVar8 = psVar4 + iVar1 * 2 + -2;" (assignment_expression "psVar8 = psVar4 + iVar1 * 2 + -2" identifier = (binary_expression "psVar4 + iVar1 * 2 + -2" (binary_expression "psVar4 + iVar1 * 2" identifier + (binary_expression "iVar1 * 2" identifier * number_literal)) + number_literal)) ;) (expression_statement "local_4ec = psVar4;" (assignment_expression "local_4ec = psVar4" identifier = identifier) ;) (if_statement "if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;" if (parenthesized_expression "(psVar7 < psVar5 + (local_4f4 - 1))" ( (binary_expression "psVar7 < psVar5 + (local_4f4 - 1)" identifier < (binary_expression "psVar5 + (local_4f4 - 1)" identifier + (parenthesized_expression "(local_4f4 - 1)" ( (binary_expression "local_4f4 - 1" identifier - number_literal) )))) )) (goto_statement "goto LAB_00014fae;" goto statement_identifier ;)) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_0001501b;" goto statement_identifier ;) })) })) (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" identifier = number_literal) ;) (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" identifier (argument_list "()" ( ))) ;) (expression_statement "psVar5 = __src;" (assignment_expression "psVar5 = __src" identifier = identifier) ;) (goto_statement "goto LAB_00015015;" goto statement_identifier ;) })) (labeled_statement "LAB_00014fae:\n    __src = psVar5;" statement_identifier : (expression_statement "__src = psVar5;" (assignment_expression "__src = psVar5" identifier = identifier) ;)) (expression_statement "psVar4 = psVar7;" (assignment_expression "psVar4 = psVar7" identifier = identifier) ;) (expression_statement "psVar7 = psVar8;" (assignment_expression "psVar7 = psVar8" identifier = identifier) ;) }) while (parenthesized_expression "(local_500 != (undefined4 *)0x3)" ( (binary_expression "local_500 != (undefined4 *)0x3" identifier != (cast_expression "(undefined4 *)0x3" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }" statement_identifier : (if_statement "if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }" if (parenthesized_expression "(psVar5 != psVar2)" ( (binary_expression "psVar5 != psVar2" identifier != identifier) )) (compound_statement "{\nLAB_0001501b:\n    free(psVar5);\n  }" { (labeled_statement "LAB_0001501b:\n    free(psVar5);" statement_identifier : (expression_statement "free(psVar5);" (call_expression "free(psVar5)" identifier (argument_list "(psVar5)" ( identifier ))) ;)) }))) (return_statement "return uVar9;" return identifier ;) })))
(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 (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (array_declarator IDENT [ LIT ]) ;) (declaration (sized_type_specifier short) (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ IDENT ]) != IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })))) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT + LIT)) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) != (char_literal ' escape_sequence ')) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]))))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT)) ))) )) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (pointer_expression * IDENT) ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ IDENT ])) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * LIT)) ))))) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT :) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return LIT ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) , IDENT ))) ;)) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( 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 (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ IDENT ]) ]))) + (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) == (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ IDENT ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ IDENT ]) ]))))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier short)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (binary_expression IDENT * LIT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT * LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT + (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) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_00014c60(void)\n\n{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}" (type_identifier "undefined4") (function_declarator "FUN_00014c60(void)" (identifier "FUN_00014c60") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  int iVar1;\n  short *psVar2;\n  uint uVar3;\n  short *psVar4;\n  short *psVar5;\n  short *__src;\n  int iVar6;\n  short *psVar7;\n  short *psVar8;\n  undefined4 uVar9;\n  uint uVar10;\n  undefined4 *local_500;\n  uint local_4f4;\n  uint local_4f0;\n  short *local_4ec;\n  int local_4e8;\n  short local_4ce [201];\n  short local_33c [404];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x14c69;\n  psVar2 = local_4ce + 1;\n  local_4ec = local_33c;\n  local_500 = (undefined4 *)0x0;\n  local_4e8 = 0;\n  local_4f4 = 200;\n  DAT_00021388 = 0;\n  DAT_0002138c = -2;\n  local_4ce[1] = 0;\n  __src = psVar2;\n  psVar4 = psVar2;\n  psVar7 = local_4ec;\n  do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);\n  uVar9 = 0;\nLAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }\n  return uVar9;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "short *psVar2;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar2" (* "*") (identifier "psVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "short *psVar4;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar4" (* "*") (identifier "psVar4")) (; ";")) (declaration "short *psVar5;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar5" (* "*") (identifier "psVar5")) (; ";")) (declaration "short *__src;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "short *psVar7;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar7" (* "*") (identifier "psVar7")) (; ";")) (declaration "short *psVar8;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar8" (* "*") (identifier "psVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "undefined4 *local_500;" (type_identifier "undefined4") (pointer_declarator "*local_500" (* "*") (identifier "local_500")) (; ";")) (declaration "uint local_4f4;" (type_identifier "uint") (identifier "local_4f4") (; ";")) (declaration "uint local_4f0;" (type_identifier "uint") (identifier "local_4f0") (; ";")) (declaration "short *local_4ec;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*local_4ec" (* "*") (identifier "local_4ec")) (; ";")) (declaration "int local_4e8;" (primitive_type "int") (identifier "local_4e8") (; ";")) (declaration "short local_4ce [201];" (sized_type_specifier "short" (short "short")) (array_declarator "local_4ce [201]" (identifier "local_4ce") ([ "[") (number_literal "201") (] "]")) (; ";")) (declaration "short local_33c [404];" (sized_type_specifier "short" (short "short")) (array_declarator "local_33c [404]" (identifier "local_33c") ([ "[") (number_literal "404") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x14c69;" (assignment_expression "uStack_14 = 0x14c69" (identifier "uStack_14") (= "=") (number_literal "0x14c69")) (; ";")) (expression_statement "psVar2 = local_4ce + 1;" (assignment_expression "psVar2 = local_4ce + 1" (identifier "psVar2") (= "=") (binary_expression "local_4ce + 1" (identifier "local_4ce") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_4ec = local_33c;" (assignment_expression "local_4ec = local_33c" (identifier "local_4ec") (= "=") (identifier "local_33c")) (; ";")) (expression_statement "local_500 = (undefined4 *)0x0;" (assignment_expression "local_500 = (undefined4 *)0x0" (identifier "local_500") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_4e8 = 0;" (assignment_expression "local_4e8 = 0" (identifier "local_4e8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4f4 = 200;" (assignment_expression "local_4f4 = 200" (identifier "local_4f4") (= "=") (number_literal "200")) (; ";")) (expression_statement "DAT_00021388 = 0;" (assignment_expression "DAT_00021388 = 0" (identifier "DAT_00021388") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" (identifier "DAT_0002138c") (= "=") (number_literal "-2")) (; ";")) (expression_statement "local_4ce[1] = 0;" (assignment_expression "local_4ce[1] = 0" (subscript_expression "local_4ce[1]" (identifier "local_4ce") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "__src = psVar2;" (assignment_expression "__src = psVar2" (identifier "__src") (= "=") (identifier "psVar2")) (; ";")) (expression_statement "psVar4 = psVar2;" (assignment_expression "psVar4 = psVar2" (identifier "psVar4") (= "=") (identifier "psVar2")) (; ";")) (expression_statement "psVar7 = local_4ec;" (assignment_expression "psVar7 = local_4ec" (identifier "psVar7") (= "=") (identifier "local_4ec")) (; ";")) (do_statement "do {\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  } while (local_500 != (undefined4 *)0x3);" (do "do") (compound_statement "{\n    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];\n    psVar5 = __src;\n    if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];\n    if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }\nLAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];\n    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);\n    switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }\n    psVar4 = psVar4 + -uVar10;\n    psVar8 = psVar7 + uVar10 * -2 + 2;\n    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;\n    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;\n    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }\nLAB_00014ecb:\n    psVar7 = psVar4 + 1;\n    psVar4[1] = (short)local_500;\n    uVar10 = local_4f4 * 2;\n    if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }\nLAB_00014fae:\n    __src = psVar5;\n    psVar4 = psVar7;\n    psVar7 = psVar8;\n  }" ({ "{") (expression_statement "uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];" (assignment_expression "uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500]" (identifier "uVar10") (= "=") (subscript_expression "(uint)(char)(&DAT_0001b260)[(int)local_500]" (call_expression "(uint)(char)(&DAT_0001b260)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (argument_list "(&DAT_0001b260)" (( "(") (pointer_expression "&DAT_0001b260" (& "&") (identifier "DAT_0001b260")) () ")"))) ([ "[") (cast_expression "(int)local_500" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_500")) (] "]"))) (; ";")) (expression_statement "psVar5 = __src;" (assignment_expression "psVar5 = __src" (identifier "psVar5") (= "=") (identifier "__src")) (; ";")) (if_statement "if (uVar10 != 0xfffffff2) {\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" (if "if") (parenthesized_expression "(uVar10 != 0xfffffff2)" (( "(") (binary_expression "uVar10 != 0xfffffff2" (identifier "uVar10") (!= "!=") (number_literal "0xfffffff2")) () ")")) (compound_statement "{\n      if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }\n      if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }\n      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];\n      if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }\n      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);\n      psVar8 = psVar7 + 2;\n      DAT_0002138c = -2;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" ({ "{") (if_statement "if (DAT_0002138c == -2) {\n        DAT_0002138c = FUN_00015810();\n      }" (if "if") (parenthesized_expression "(DAT_0002138c == -2)" (( "(") (binary_expression "DAT_0002138c == -2" (identifier "DAT_0002138c") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n        DAT_0002138c = FUN_00015810();\n      }" ({ "{") (expression_statement "DAT_0002138c = FUN_00015810();" (assignment_expression "DAT_0002138c = FUN_00015810()" (identifier "DAT_0002138c") (= "=") (call_expression "FUN_00015810()" (identifier "FUN_00015810") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (if_statement "if (DAT_0002138c < 1) {\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }\n      else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" (if "if") (parenthesized_expression "(DAT_0002138c < 1)" (( "(") (binary_expression "DAT_0002138c < 1" (identifier "DAT_0002138c") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        local_4f0 = 0;\n        DAT_0002138c = 0;\n        uVar3 = uVar10;\n      }" ({ "{") (expression_statement "local_4f0 = 0;" (assignment_expression "local_4f0 = 0" (identifier "local_4f0") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_0002138c = 0;" (assignment_expression "DAT_0002138c = 0" (identifier "DAT_0002138c") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = uVar10;" (assignment_expression "uVar3 = uVar10" (identifier "uVar3") (= "=") (identifier "uVar10")) (; ";")) (} "}")) (else_clause "else if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" (else "else") (if_statement "if (DAT_0002138c < 0x114) {\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }\n      else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" (if "if") (parenthesized_expression "(DAT_0002138c < 0x114)" (( "(") (binary_expression "DAT_0002138c < 0x114" (identifier "DAT_0002138c") (< "<") (number_literal "0x114")) () ")")) (compound_statement "{\n        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];\n        uVar3 = uVar10 + local_4f0;\n      }" ({ "{") (expression_statement "local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];" (assignment_expression "local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c]" (identifier "local_4f0") (= "=") (subscript_expression "(uint)(byte)(&UNK_0001b2a0)[DAT_0002138c]" (call_expression "(uint)(byte)(&UNK_0001b2a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&UNK_0001b2a0)" (( "(") (pointer_expression "&UNK_0001b2a0" (& "&") (identifier "UNK_0001b2a0")) () ")"))) ([ "[") (identifier "DAT_0002138c") (] "]"))) (; ";")) (expression_statement "uVar3 = uVar10 + local_4f0;" (assignment_expression "uVar3 = uVar10 + local_4f0" (identifier "uVar3") (= "=") (binary_expression "uVar10 + local_4f0" (identifier "uVar10") (+ "+") (identifier "local_4f0"))) (; ";")) (} "}")) (else_clause "else {\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" (else "else") (compound_statement "{\n        local_4f0 = 2;\n        uVar3 = uVar10 + 2;\n      }" ({ "{") (expression_statement "local_4f0 = 2;" (assignment_expression "local_4f0 = 2" (identifier "local_4f0") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar3 = uVar10 + 2;" (assignment_expression "uVar3 = uVar10 + 2" (identifier "uVar3") (= "=") (binary_expression "uVar10 + 2" (identifier "uVar10") (+ "+") (number_literal "2"))) (; ";")) (} "}")))))) (if_statement "if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;" (if "if") (parenthesized_expression "((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0))" (( "(") (binary_expression "(0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)" (parenthesized_expression "(0x22 < uVar3)" (( "(") (binary_expression "0x22 < uVar3" (number_literal "0x22") (< "<") (identifier "uVar3")) () ")")) (|| "||") (parenthesized_expression "((byte)(&DAT_0001b180)[uVar3] != local_4f0)" (( "(") (binary_expression "(byte)(&DAT_0001b180)[uVar3] != local_4f0" (subscript_expression "(byte)(&DAT_0001b180)[uVar3]" (call_expression "(byte)(&DAT_0001b180)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(&DAT_0001b180)" (( "(") (pointer_expression "&DAT_0001b180" (& "&") (identifier "DAT_0001b180")) () ")"))) ([ "[") (identifier "uVar3") (] "]")) (!= "!=") (identifier "local_4f0")) () ")"))) () ")")) (goto_statement "goto LAB_00014d80;" (goto "goto") (statement_identifier "LAB_00014d80") (; ";"))) (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3]" (identifier "local_500") (= "=") (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)(&DAT_0001b1c0)[uVar3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0001b1c0)[uVar3]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0001b1c0)[uVar3]" (parenthesized_expression "(&DAT_0001b1c0)" (( "(") (pointer_expression "&DAT_0001b1c0" (& "&") (identifier "DAT_0001b1c0")) () ")")) ([ "[") (identifier "uVar3") (] "]")))))) (; ";")) (if_statement "if ((int)local_500 < 1) {\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }" (if "if") (parenthesized_expression "((int)local_500 < 1)" (( "(") (binary_expression "(int)local_500 < 1" (cast_expression "(int)local_500" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_500")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        uVar3 = -(int)local_500;\n        goto LAB_00014e24;\n      }" ({ "{") (expression_statement "uVar3 = -(int)local_500;" (assignment_expression "uVar3 = -(int)local_500" (identifier "uVar3") (= "=") (unary_expression "-(int)local_500" (- "-") (cast_expression "(int)local_500" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_500")))) (; ";")) (goto_statement "goto LAB_00014e24;" (goto "goto") (statement_identifier "LAB_00014e24") (; ";")) (} "}"))) (expression_statement "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);" (assignment_expression "local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0)" (identifier "local_4e8") (= "=") (binary_expression "local_4e8 + -1 + (uint)(local_4e8 == 0)" (binary_expression "local_4e8 + -1" (identifier "local_4e8") (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)(local_4e8 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_4e8 == 0)" (( "(") (binary_expression "local_4e8 == 0" (identifier "local_4e8") (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "psVar8 = psVar7 + 2;" (assignment_expression "psVar8 = psVar7 + 2" (identifier "psVar8") (= "=") (binary_expression "psVar7 + 2" (identifier "psVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" (identifier "DAT_0002138c") (= "=") (number_literal "-2")) (; ";")) (expression_statement "*(undefined4 *)psVar8 = DAT_00021390;" (assignment_expression "*(undefined4 *)psVar8 = DAT_00021390" (pointer_expression "*(undefined4 *)psVar8" (* "*") (cast_expression "(undefined4 *)psVar8" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar8"))) (= "=") (identifier "DAT_00021390")) (; ";")) (goto_statement "goto LAB_00014ecb;" (goto "goto") (statement_identifier "LAB_00014ecb") (; ";")) (} "}"))) (labeled_statement "LAB_00014d80:\n    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];" (statement_identifier "LAB_00014d80") (: ":") (expression_statement "uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];" (assignment_expression "uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500]" (identifier "uVar3") (= "=") (subscript_expression "(uint)(byte)(&DAT_0001b220)[(int)local_500]" (call_expression "(uint)(byte)(&DAT_0001b220)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0001b220)" (( "(") (pointer_expression "&DAT_0001b220" (& "&") (identifier "DAT_0001b220")) () ")"))) ([ "[") (cast_expression "(int)local_500" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_500")) (] "]"))) (; ";"))) (if_statement "if (uVar3 == 0) {\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }\n      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }\n      psVar8 = psVar7 + 2;\n      local_4e8 = 3;\n      *(undefined4 *)psVar8 = DAT_00021390;\n      goto LAB_00014ecb;\n    }" ({ "{") (if_statement "if (local_4e8 == 0) {\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }\n      else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" (if "if") (parenthesized_expression "(local_4e8 == 0)" (( "(") (binary_expression "local_4e8 == 0" (identifier "local_4e8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        DAT_00021388 = DAT_00021388 + 1;\n        FUN_00014c20();\n      }" ({ "{") (expression_statement "DAT_00021388 = DAT_00021388 + 1;" (assignment_expression "DAT_00021388 = DAT_00021388 + 1" (identifier "DAT_00021388") (= "=") (binary_expression "DAT_00021388 + 1" (identifier "DAT_00021388") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" (identifier "FUN_00014c20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" (else "else") (if_statement "if (local_4e8 == 3) {\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" (if "if") (parenthesized_expression "(local_4e8 == 3)" (( "(") (binary_expression "local_4e8 == 3" (identifier "local_4e8") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n        if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }\n      }" ({ "{") (if_statement "if (DAT_0002138c < 1) {\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }\n        else {\n          DAT_0002138c = -2;\n        }" (if "if") (parenthesized_expression "(DAT_0002138c < 1)" (( "(") (binary_expression "DAT_0002138c < 1" (identifier "DAT_0002138c") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }\n        }" ({ "{") (if_statement "if (DAT_0002138c == 0) {\n            uVar9 = 1;\n            goto LAB_00015015;\n          }" (if "if") (parenthesized_expression "(DAT_0002138c == 0)" (( "(") (binary_expression "DAT_0002138c == 0" (identifier "DAT_0002138c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar9 = 1;\n            goto LAB_00015015;\n          }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00015015;" (goto "goto") (statement_identifier "LAB_00015015") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          DAT_0002138c = -2;\n        }" (else "else") (compound_statement "{\n          DAT_0002138c = -2;\n        }" ({ "{") (expression_statement "DAT_0002138c = -2;" (assignment_expression "DAT_0002138c = -2" (identifier "DAT_0002138c") (= "=") (number_literal "-2")) (; ";")) (} "}")))) (} "}"))))) (while_statement "while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))\n      {\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }" (while "while") (parenthesized_expression "((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))" (( "(") (parenthesized_expression "(((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1))" (( "(") (binary_expression "((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))\n             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)" (parenthesized_expression "((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))" (( "(") (binary_expression "(uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01')" (parenthesized_expression "(uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1))" (( "(") (binary_expression "uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)" (binary_expression "uVar10 == 0xfffffff2" (identifier "uVar10") (== "==") (number_literal "0xfffffff2")) (|| "||") (parenthesized_expression "(0x22 < uVar10 + 1)" (( "(") (binary_expression "0x22 < uVar10 + 1" (number_literal "0x22") (< "<") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((&DAT_0001b181)[uVar10] != '\x01')" (( "(") (binary_expression "(&DAT_0001b181)[uVar10] != '\x01'" (subscript_expression "(&DAT_0001b181)[uVar10]" (parenthesized_expression "(&DAT_0001b181)" (( "(") (pointer_expression "&DAT_0001b181" (& "&") (identifier "DAT_0001b181")) () ")")) ([ "[") (identifier "uVar10") (] "]")) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)" (( "(") (comma_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10]" (identifier "local_500") (= "=") (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)(&DAT_0001b1c1)[uVar10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0001b1c1)[uVar10]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0001b1c1)[uVar10]" (parenthesized_expression "(&DAT_0001b1c1)" (( "(") (pointer_expression "&DAT_0001b1c1" (& "&") (identifier "DAT_0001b1c1")) () ")")) ([ "[") (identifier "uVar10") (] "]")))))) (, ",") (binary_expression "(int)local_500 < 1" (cast_expression "(int)local_500" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_500")) (< "<") (number_literal "1"))) () ")"))) () ")")) () ")")) (compound_statement "{\n        if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }\n        psVar4 = psVar4 + -1;\n        psVar7 = psVar7 + -2;\n        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];\n      }" ({ "{") (if_statement "if (psVar4 == __src) {\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }" (if "if") (parenthesized_expression "(psVar4 == __src)" (( "(") (binary_expression "psVar4 == __src" (identifier "psVar4") (== "==") (identifier "__src")) () ")")) (compound_statement "{\n          uVar9 = 1;\n          psVar5 = psVar4;\n          goto LAB_00015015;\n        }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "psVar5 = psVar4;" (assignment_expression "psVar5 = psVar4" (identifier "psVar5") (= "=") (identifier "psVar4")) (; ";")) (goto_statement "goto LAB_00015015;" (goto "goto") (statement_identifier "LAB_00015015") (; ";")) (} "}"))) (expression_statement "psVar4 = psVar4 + -1;" (assignment_expression "psVar4 = psVar4 + -1" (identifier "psVar4") (= "=") (binary_expression "psVar4 + -1" (identifier "psVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "psVar7 = psVar7 + -2;" (assignment_expression "psVar7 = psVar7 + -2" (identifier "psVar7") (= "=") (binary_expression "psVar7 + -2" (identifier "psVar7") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];" (assignment_expression "uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4]" (identifier "uVar10") (= "=") (subscript_expression "(uint)(char)(&DAT_0001b260)[*psVar4]" (call_expression "(uint)(char)(&DAT_0001b260)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (argument_list "(&DAT_0001b260)" (( "(") (pointer_expression "&DAT_0001b260" (& "&") (identifier "DAT_0001b260")) () ")"))) ([ "[") (pointer_expression "*psVar4" (* "*") (identifier "psVar4")) (] "]"))) (; ";")) (} "}"))) (expression_statement "psVar8 = psVar7 + 2;" (assignment_expression "psVar8 = psVar7 + 2" (identifier "psVar8") (= "=") (binary_expression "psVar7 + 2" (identifier "psVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_4e8 = 3;" (assignment_expression "local_4e8 = 3" (identifier "local_4e8") (= "=") (number_literal "3")) (; ";")) (expression_statement "*(undefined4 *)psVar8 = DAT_00021390;" (assignment_expression "*(undefined4 *)psVar8 = DAT_00021390" (pointer_expression "*(undefined4 *)psVar8" (* "*") (cast_expression "(undefined4 *)psVar8" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar8"))) (= "=") (identifier "DAT_00021390")) (; ";")) (goto_statement "goto LAB_00014ecb;" (goto "goto") (statement_identifier "LAB_00014ecb") (; ";")) (} "}"))) (labeled_statement "LAB_00014e24:\n    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];" (statement_identifier "LAB_00014e24") (: ":") (expression_statement "uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];" (assignment_expression "uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3]" (identifier "uVar10") (= "=") (subscript_expression "(uint)(byte)(&DAT_0001b100)[uVar3]" (call_expression "(uint)(byte)(&DAT_0001b100)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0001b100)" (( "(") (pointer_expression "&DAT_0001b100" (& "&") (identifier "DAT_0001b100")) () ")"))) ([ "[") (identifier "uVar3") (] "]"))) (; ";"))) (expression_statement "local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);" (assignment_expression "local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2)" (identifier "local_500") (= "=") (pointer_expression "*(undefined4 **)(psVar7 + (1 - uVar10) * 2)" (* "*") (cast_expression "(undefined4 **)(psVar7 + (1 - uVar10) * 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar7 + (1 - uVar10) * 2)" (( "(") (binary_expression "psVar7 + (1 - uVar10) * 2" (identifier "psVar7") (+ "+") (binary_expression "(1 - uVar10) * 2" (parenthesized_expression "(1 - uVar10)" (( "(") (binary_expression "1 - uVar10" (number_literal "1") (- "-") (identifier "uVar10")) () ")")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (switch_statement "switch(uVar3) {\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }" (switch "switch") (parenthesized_expression "(uVar3)" (( "(") (identifier "uVar3") () ")")) (compound_statement "{\n    case 2:\n    case 6:\n      FUN_000169c0();\n      break;\n    case 0x13:\n      FUN_00017320();\n      return 0;\n    case 0x15:\n      FUN_00014c20();\n      break;\n    case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;\n    case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;\n    case 0x19:\n      FUN_00016db0();\n      break;\n    case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;\n    case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;\n    case 0x1c:\n      FUN_00017240();\n      break;\n    case 0x1d:\n      FUN_00016f20();\n      break;\n    case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;\n    case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;\n    case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;\n    case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;\n    case 0x23:\n    case 0x25:\n    case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;\n    case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;\n    case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;\n    case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);\n    }" ({ "{") (case_statement "case 2:" (case "case") (number_literal "2") (: ":")) (case_statement "case 6:\n      FUN_000169c0();\n      break;" (case "case") (number_literal "6") (: ":") (expression_statement "FUN_000169c0();" (call_expression "FUN_000169c0()" (identifier "FUN_000169c0") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x13:\n      FUN_00017320();\n      return 0;" (case "case") (number_literal "0x13") (: ":") (expression_statement "FUN_00017320();" (call_expression "FUN_00017320()" (identifier "FUN_00017320") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";"))) (case_statement "case 0x15:\n      FUN_00014c20();\n      break;" (case "case") (number_literal "0x15") (: ":") (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" (identifier "FUN_00014c20") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x17:\n      FUN_00017360(*(undefined4 *)psVar7);\n      break;" (case "case") (number_literal "0x17") (: ":") (expression_statement "FUN_00017360(*(undefined4 *)psVar7);" (call_expression "FUN_00017360(*(undefined4 *)psVar7)" (identifier "FUN_00017360") (argument_list "(*(undefined4 *)psVar7)" (( "(") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7"))) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x18:\n      FUN_00016ff0(*(undefined4 *)psVar7);\n      break;" (case "case") (number_literal "0x18") (: ":") (expression_statement "FUN_00016ff0(*(undefined4 *)psVar7);" (call_expression "FUN_00016ff0(*(undefined4 *)psVar7)" (identifier "FUN_00016ff0") (argument_list "(*(undefined4 *)psVar7)" (( "(") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7"))) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x19:\n      FUN_00016db0();\n      break;" (case "case") (number_literal "0x19") (: ":") (expression_statement "FUN_00016db0();" (call_expression "FUN_00016db0()" (identifier "FUN_00016db0") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1a:\n      FUN_00016dd0(*(undefined4 *)psVar7);\n      break;" (case "case") (number_literal "0x1a") (: ":") (expression_statement "FUN_00016dd0(*(undefined4 *)psVar7);" (call_expression "FUN_00016dd0(*(undefined4 *)psVar7)" (identifier "FUN_00016dd0") (argument_list "(*(undefined4 *)psVar7)" (( "(") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7"))) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1b:\n      FUN_00016c90(*(undefined4 *)psVar7);\n      break;" (case "case") (number_literal "0x1b") (: ":") (expression_statement "FUN_00016c90(*(undefined4 *)psVar7);" (call_expression "FUN_00016c90(*(undefined4 *)psVar7)" (identifier "FUN_00016c90") (argument_list "(*(undefined4 *)psVar7)" (( "(") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7"))) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1c:\n      FUN_00017240();\n      break;" (case "case") (number_literal "0x1c") (: ":") (expression_statement "FUN_00017240();" (call_expression "FUN_00017240()" (identifier "FUN_00017240") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1d:\n      FUN_00016f20();\n      break;" (case "case") (number_literal "0x1d") (: ":") (expression_statement "FUN_00016f20();" (call_expression "FUN_00016f20()" (identifier "FUN_00016f20") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1e:\n      uVar9 = 0;\n      goto code_r0x00014e5b;" (case "case") (number_literal "0x1e") (: ":") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto code_r0x00014e5b;" (goto "goto") (statement_identifier "code_r0x00014e5b") (; ";"))) (case_statement "case 0x1f:\n      uVar9 = 1;\ncode_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);\n      break;" (case "case") (number_literal "0x1f") (: ":") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (labeled_statement "code_r0x00014e5b:\n      FUN_00016a40(*(undefined4 *)psVar7,uVar9);" (statement_identifier "code_r0x00014e5b") (: ":") (expression_statement "FUN_00016a40(*(undefined4 *)psVar7,uVar9);" (call_expression "FUN_00016a40(*(undefined4 *)psVar7,uVar9)" (identifier "FUN_00016a40") (argument_list "(*(undefined4 *)psVar7,uVar9)" (( "(") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7"))) (, ",") (identifier "uVar9") () ")"))) (; ";"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x20:\n      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;" (case "case") (number_literal "0x20") (: ":") (expression_statement "FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);" (call_expression "FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" (identifier "FUN_00016bc0") (argument_list "(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" (( "(") (pointer_expression "*(undefined4 *)(psVar7 + -2)" (* "*") (cast_expression "(undefined4 *)(psVar7 + -2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar7 + -2)" (( "(") (binary_expression "psVar7 + -2" (identifier "psVar7") (+ "+") (number_literal "-2")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7"))) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x21:\n      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);\n      break;" (case "case") (number_literal "0x21") (: ":") (expression_statement "FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);" (call_expression "FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" (identifier "FUN_000168b0") (argument_list "(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7)" (( "(") (pointer_expression "*(undefined4 *)(psVar7 + -4)" (* "*") (cast_expression "(undefined4 *)(psVar7 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar7 + -4)" (( "(") (binary_expression "psVar7 + -4" (identifier "psVar7") (+ "+") (number_literal "-4")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(psVar7 + -2)" (* "*") (cast_expression "(undefined4 *)(psVar7 + -2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar7 + -2)" (( "(") (binary_expression "psVar7 + -2" (identifier "psVar7") (+ "+") (number_literal "-2")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7"))) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x22:\n      local_500 = *(undefined4 **)psVar7;\n      break;" (case "case") (number_literal "0x22") (: ":") (expression_statement "local_500 = *(undefined4 **)psVar7;" (assignment_expression "local_500 = *(undefined4 **)psVar7" (identifier "local_500") (= "=") (pointer_expression "*(undefined4 **)psVar7" (* "*") (cast_expression "(undefined4 **)psVar7" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "psVar7")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x23:" (case "case") (number_literal "0x23") (: ":")) (case_statement "case 0x25:" (case "case") (number_literal "0x25") (: ":")) (case_statement "case 0x27:\n      local_500 = (undefined4 *)0x0;\n      break;" (case "case") (number_literal "0x27") (: ":") (expression_statement "local_500 = (undefined4 *)0x0;" (assignment_expression "local_500 = (undefined4 *)0x0" (identifier "local_500") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x24:\n      local_500 = *(undefined4 **)(psVar7 + -2);\n      break;" (case "case") (number_literal "0x24") (: ":") (expression_statement "local_500 = *(undefined4 **)(psVar7 + -2);" (assignment_expression "local_500 = *(undefined4 **)(psVar7 + -2)" (identifier "local_500") (= "=") (pointer_expression "*(undefined4 **)(psVar7 + -2)" (* "*") (cast_expression "(undefined4 **)(psVar7 + -2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar7 + -2)" (( "(") (binary_expression "psVar7 + -2" (identifier "psVar7") (+ "+") (number_literal "-2")) () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x26:\n      local_500 = (undefined4 *)malloc(8);\n      local_500[1] = *(undefined4 *)(psVar7 + -4);\n      *local_500 = *(undefined4 *)psVar7;\n      break;" (case "case") (number_literal "0x26") (: ":") (expression_statement "local_500 = (undefined4 *)malloc(8);" (assignment_expression "local_500 = (undefined4 *)malloc(8)" (identifier "local_500") (= "=") (cast_expression "(undefined4 *)malloc(8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(8)" (identifier "malloc") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (expression_statement "local_500[1] = *(undefined4 *)(psVar7 + -4);" (assignment_expression "local_500[1] = *(undefined4 *)(psVar7 + -4)" (subscript_expression "local_500[1]" (identifier "local_500") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(undefined4 *)(psVar7 + -4)" (* "*") (cast_expression "(undefined4 *)(psVar7 + -4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(psVar7 + -4)" (( "(") (binary_expression "psVar7 + -4" (identifier "psVar7") (+ "+") (number_literal "-4")) () ")"))))) (; ";")) (expression_statement "*local_500 = *(undefined4 *)psVar7;" (assignment_expression "*local_500 = *(undefined4 *)psVar7" (pointer_expression "*local_500" (* "*") (identifier "local_500")) (= "=") (pointer_expression "*(undefined4 *)psVar7" (* "*") (cast_expression "(undefined4 *)psVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "psVar7")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x2a:\n      DAT_0002126c = (uint)(DAT_0002126c == 0);" (case "case") (number_literal "0x2a") (: ":") (expression_statement "DAT_0002126c = (uint)(DAT_0002126c == 0);" (assignment_expression "DAT_0002126c = (uint)(DAT_0002126c == 0)" (identifier "DAT_0002126c") (= "=") (call_expression "(uint)(DAT_0002126c == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_0002126c == 0)" (( "(") (binary_expression "DAT_0002126c == 0" (identifier "DAT_0002126c") (== "==") (number_literal "0")) () ")")))) (; ";"))) (} "}"))) (expression_statement "psVar4 = psVar4 + -uVar10;" (assignment_expression "psVar4 = psVar4 + -uVar10" (identifier "psVar4") (= "=") (binary_expression "psVar4 + -uVar10" (identifier "psVar4") (+ "+") (unary_expression "-uVar10" (- "-") (identifier "uVar10")))) (; ";")) (expression_statement "psVar8 = psVar7 + uVar10 * -2 + 2;" (assignment_expression "psVar8 = psVar7 + uVar10 * -2 + 2" (identifier "psVar8") (= "=") (binary_expression "psVar7 + uVar10 * -2 + 2" (binary_expression "psVar7 + uVar10 * -2" (identifier "psVar7") (+ "+") (binary_expression "uVar10 * -2" (identifier "uVar10") (* "*") (number_literal "-2"))) (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;" (assignment_expression "*(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500" (pointer_expression "*(undefined4 **)(psVar7 + uVar10 * -2 + 2)" (* "*") (cast_expression "(undefined4 **)(psVar7 + uVar10 * -2 + 2)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(psVar7 + uVar10 * -2 + 2)" (( "(") (binary_expression "psVar7 + uVar10 * -2 + 2" (binary_expression "psVar7 + uVar10 * -2" (identifier "psVar7") (+ "+") (binary_expression "uVar10 * -2" (identifier "uVar10") (* "*") (number_literal "-2"))) (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "local_500")) (; ";")) (expression_statement "uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;" (assignment_expression "uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4" (identifier "uVar10") (= "=") (binary_expression "(int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4" (cast_expression "(int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]]" (parenthesized_expression "(&DAT_0001b1e4)" (( "(") (pointer_expression "&DAT_0001b1e4" (& "&") (identifier "DAT_0001b1e4")) () ")")) ([ "[") (subscript_expression "(byte)(&DAT_0001b140)[uVar3]" (call_expression "(byte)(&DAT_0001b140)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(&DAT_0001b140)" (( "(") (pointer_expression "&DAT_0001b140" (& "&") (identifier "DAT_0001b140")) () ")"))) ([ "[") (identifier "uVar3") (] "]")) (] "]")))) (+ "+") (cast_expression "(int)*psVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*psVar4" (* "*") (identifier "psVar4"))))) (; ";")) (if_statement "if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }\n    else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" (if "if") (parenthesized_expression "((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10]))" (( "(") (binary_expression "(uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])" (parenthesized_expression "(uVar10 < 0x23)" (( "(") (binary_expression "uVar10 < 0x23" (identifier "uVar10") (< "<") (number_literal "0x23")) () ")")) (&& "&&") (parenthesized_expression "((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])" (( "(") (binary_expression "(int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10]" (cast_expression "(int)*psVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*psVar4" (* "*") (identifier "psVar4"))) (== "==") (subscript_expression "(uint)(byte)(&DAT_0001b180)[uVar10]" (call_expression "(uint)(byte)(&DAT_0001b180)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0001b180)" (( "(") (pointer_expression "&DAT_0001b180" (& "&") (identifier "DAT_0001b180")) () ")"))) ([ "[") (identifier "uVar10") (] "]"))) () ")"))) () ")")) (compound_statement "{\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];\n    }" ({ "{") (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10]" (identifier "local_500") (= "=") (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)(&DAT_0001b1c0)[uVar10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0001b1c0)[uVar10]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0001b1c0)[uVar10]" (parenthesized_expression "(&DAT_0001b1c0)" (( "(") (pointer_expression "&DAT_0001b1c0" (& "&") (identifier "DAT_0001b1c0")) () ")")) ([ "[") (identifier "uVar10") (] "]")))))) (; ";")) (} "}")) (else_clause "else {\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" (else "else") (compound_statement "{\n      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];\n    }" ({ "{") (expression_statement "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];" (assignment_expression "local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" (identifier "local_500") (= "=") (cast_expression "(undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]]" (parenthesized_expression "(&DAT_0001b1cc)" (( "(") (pointer_expression "&DAT_0001b1cc" (& "&") (identifier "DAT_0001b1cc")) () ")")) ([ "[") (subscript_expression "(byte)(&DAT_0001b140)[uVar3]" (call_expression "(byte)(&DAT_0001b140)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(&DAT_0001b140)" (( "(") (pointer_expression "&DAT_0001b140" (& "&") (identifier "DAT_0001b140")) () ")"))) ([ "[") (identifier "uVar3") (] "]")) (] "]")))))) (; ";")) (} "}")))) (labeled_statement "LAB_00014ecb:\n    psVar7 = psVar4 + 1;" (statement_identifier "LAB_00014ecb") (: ":") (expression_statement "psVar7 = psVar4 + 1;" (assignment_expression "psVar7 = psVar4 + 1" (identifier "psVar7") (= "=") (binary_expression "psVar4 + 1" (identifier "psVar4") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "psVar4[1] = (short)local_500;" (assignment_expression "psVar4[1] = (short)local_500" (subscript_expression "psVar4[1]" (identifier "psVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(short)local_500" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "local_500"))) (; ";")) (expression_statement "uVar10 = local_4f4 * 2;" (assignment_expression "uVar10 = local_4f4 * 2" (identifier "uVar10") (= "=") (binary_expression "local_4f4 * 2" (identifier "local_4f4") (* "*") (number_literal "2"))) (; ";")) (if_statement "if (__src + (local_4f4 - 1) <= psVar7) {\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }" (if "if") (parenthesized_expression "(__src + (local_4f4 - 1) <= psVar7)" (( "(") (binary_expression "__src + (local_4f4 - 1) <= psVar7" (binary_expression "__src + (local_4f4 - 1)" (identifier "__src") (+ "+") (parenthesized_expression "(local_4f4 - 1)" (( "(") (binary_expression "local_4f4 - 1" (identifier "local_4f4") (- "-") (number_literal "1")) () ")"))) (<= "<=") (identifier "psVar7")) () ")")) (compound_statement "{\n      iVar6 = (int)psVar7 - (int)__src >> 1;\n      iVar1 = iVar6 + 1;\n      if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }\n      uVar9 = 2;\n      FUN_00014c20();\n      psVar5 = __src;\n      goto LAB_00015015;\n    }" ({ "{") (expression_statement "iVar6 = (int)psVar7 - (int)__src >> 1;" (assignment_expression "iVar6 = (int)psVar7 - (int)__src >> 1" (identifier "iVar6") (= "=") (binary_expression "(int)psVar7 - (int)__src >> 1" (binary_expression "(int)psVar7 - (int)__src" (cast_expression "(int)psVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "psVar7")) (- "-") (cast_expression "(int)__src" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__src"))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "iVar1 = iVar6 + 1;" (assignment_expression "iVar1 = iVar6 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_4f4 < 10000) {\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }" (if "if") (parenthesized_expression "(local_4f4 < 10000)" (( "(") (binary_expression "local_4f4 < 10000" (identifier "local_4f4") (< "<") (number_literal "10000")) () ")")) (compound_statement "{\n        local_4f4 = 10000;\n        if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }\n        psVar5 = (short *)malloc(local_4f4 * 6 + 3);\n        if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }\n      }" ({ "{") (expression_statement "local_4f4 = 10000;" (assignment_expression "local_4f4 = 10000" (identifier "local_4f4") (= "=") (number_literal "10000")) (; ";")) (if_statement "if (uVar10 < 0x2711) {\n          local_4f4 = uVar10;\n        }" (if "if") (parenthesized_expression "(uVar10 < 0x2711)" (( "(") (binary_expression "uVar10 < 0x2711" (identifier "uVar10") (< "<") (number_literal "0x2711")) () ")")) (compound_statement "{\n          local_4f4 = uVar10;\n        }" ({ "{") (expression_statement "local_4f4 = uVar10;" (assignment_expression "local_4f4 = uVar10" (identifier "local_4f4") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "psVar5 = (short *)malloc(local_4f4 * 6 + 3);" (assignment_expression "psVar5 = (short *)malloc(local_4f4 * 6 + 3)" (identifier "psVar5") (= "=") (cast_expression "(short *)malloc(local_4f4 * 6 + 3)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(local_4f4 * 6 + 3)" (identifier "malloc") (argument_list "(local_4f4 * 6 + 3)" (( "(") (binary_expression "local_4f4 * 6 + 3" (binary_expression "local_4f4 * 6" (identifier "local_4f4") (* "*") (number_literal "6")) (+ "+") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (psVar5 != (short *)0x0) {\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }" (if "if") (parenthesized_expression "(psVar5 != (short *)0x0)" (( "(") (binary_expression "psVar5 != (short *)0x0" (identifier "psVar5") (!= "!=") (cast_expression "(short *)0x0" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          memcpy(psVar5,__src,iVar1 * 2);\n          psVar4 = psVar5 + local_4f4;\n          memcpy(psVar4,local_4ec,iVar1 * 4);\n          if (__src != psVar2) {\n            free(__src);\n          }\n          psVar7 = psVar5 + iVar6;\n          psVar8 = psVar4 + iVar1 * 2 + -2;\n          local_4ec = psVar4;\n          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;\n          uVar9 = 1;\n          goto LAB_0001501b;\n        }" ({ "{") (expression_statement "memcpy(psVar5,__src,iVar1 * 2);" (call_expression "memcpy(psVar5,__src,iVar1 * 2)" (identifier "memcpy") (argument_list "(psVar5,__src,iVar1 * 2)" (( "(") (identifier "psVar5") (, ",") (identifier "__src") (, ",") (binary_expression "iVar1 * 2" (identifier "iVar1") (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "psVar4 = psVar5 + local_4f4;" (assignment_expression "psVar4 = psVar5 + local_4f4" (identifier "psVar4") (= "=") (binary_expression "psVar5 + local_4f4" (identifier "psVar5") (+ "+") (identifier "local_4f4"))) (; ";")) (expression_statement "memcpy(psVar4,local_4ec,iVar1 * 4);" (call_expression "memcpy(psVar4,local_4ec,iVar1 * 4)" (identifier "memcpy") (argument_list "(psVar4,local_4ec,iVar1 * 4)" (( "(") (identifier "psVar4") (, ",") (identifier "local_4ec") (, ",") (binary_expression "iVar1 * 4" (identifier "iVar1") (* "*") (number_literal "4")) () ")"))) (; ";")) (if_statement "if (__src != psVar2) {\n            free(__src);\n          }" (if "if") (parenthesized_expression "(__src != psVar2)" (( "(") (binary_expression "__src != psVar2" (identifier "__src") (!= "!=") (identifier "psVar2")) () ")")) (compound_statement "{\n            free(__src);\n          }" ({ "{") (expression_statement "free(__src);" (call_expression "free(__src)" (identifier "free") (argument_list "(__src)" (( "(") (identifier "__src") () ")"))) (; ";")) (} "}"))) (expression_statement "psVar7 = psVar5 + iVar6;" (assignment_expression "psVar7 = psVar5 + iVar6" (identifier "psVar7") (= "=") (binary_expression "psVar5 + iVar6" (identifier "psVar5") (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "psVar8 = psVar4 + iVar1 * 2 + -2;" (assignment_expression "psVar8 = psVar4 + iVar1 * 2 + -2" (identifier "psVar8") (= "=") (binary_expression "psVar4 + iVar1 * 2 + -2" (binary_expression "psVar4 + iVar1 * 2" (identifier "psVar4") (+ "+") (binary_expression "iVar1 * 2" (identifier "iVar1") (* "*") (number_literal "2"))) (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "local_4ec = psVar4;" (assignment_expression "local_4ec = psVar4" (identifier "local_4ec") (= "=") (identifier "psVar4")) (; ";")) (if_statement "if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;" (if "if") (parenthesized_expression "(psVar7 < psVar5 + (local_4f4 - 1))" (( "(") (binary_expression "psVar7 < psVar5 + (local_4f4 - 1)" (identifier "psVar7") (< "<") (binary_expression "psVar5 + (local_4f4 - 1)" (identifier "psVar5") (+ "+") (parenthesized_expression "(local_4f4 - 1)" (( "(") (binary_expression "local_4f4 - 1" (identifier "local_4f4") (- "-") (number_literal "1")) () ")")))) () ")")) (goto_statement "goto LAB_00014fae;" (goto "goto") (statement_identifier "LAB_00014fae") (; ";"))) (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_0001501b;" (goto "goto") (statement_identifier "LAB_0001501b") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar9 = 2;" (assignment_expression "uVar9 = 2" (identifier "uVar9") (= "=") (number_literal "2")) (; ";")) (expression_statement "FUN_00014c20();" (call_expression "FUN_00014c20()" (identifier "FUN_00014c20") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "psVar5 = __src;" (assignment_expression "psVar5 = __src" (identifier "psVar5") (= "=") (identifier "__src")) (; ";")) (goto_statement "goto LAB_00015015;" (goto "goto") (statement_identifier "LAB_00015015") (; ";")) (} "}"))) (labeled_statement "LAB_00014fae:\n    __src = psVar5;" (statement_identifier "LAB_00014fae") (: ":") (expression_statement "__src = psVar5;" (assignment_expression "__src = psVar5" (identifier "__src") (= "=") (identifier "psVar5")) (; ";"))) (expression_statement "psVar4 = psVar7;" (assignment_expression "psVar4 = psVar7" (identifier "psVar4") (= "=") (identifier "psVar7")) (; ";")) (expression_statement "psVar7 = psVar8;" (assignment_expression "psVar7 = psVar8" (identifier "psVar7") (= "=") (identifier "psVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_500 != (undefined4 *)0x3)" (( "(") (binary_expression "local_500 != (undefined4 *)0x3" (identifier "local_500") (!= "!=") (cast_expression "(undefined4 *)0x3" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x3"))) () ")")) (; ";")) (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00015015:\n  if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }" (statement_identifier "LAB_00015015") (: ":") (if_statement "if (psVar5 != psVar2) {\nLAB_0001501b:\n    free(psVar5);\n  }" (if "if") (parenthesized_expression "(psVar5 != psVar2)" (( "(") (binary_expression "psVar5 != psVar2" (identifier "psVar5") (!= "!=") (identifier "psVar2")) () ")")) (compound_statement "{\nLAB_0001501b:\n    free(psVar5);\n  }" ({ "{") (labeled_statement "LAB_0001501b:\n    free(psVar5);" (statement_identifier "LAB_0001501b") (: ":") (expression_statement "free(psVar5);" (call_expression "free(psVar5)" (identifier "free") (argument_list "(psVar5)" (( "(") (identifier "psVar5") () ")"))) (; ";"))) (} "}")))) (return_statement "return uVar9;" (return "return") (identifier "uVar9") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

int function_1(void)

{
  type_1 var_5;
  short *var_10;
  short *var_28;
  short *var_11;
  int var_30;
  short *var_27;
  type_2 *var_7;
  type_2 *pYVar7;
  type_1 var_1;
  char *in_stack_fffffaf4;
  type_2 var_33;
  type_1 var_26;
  type_1 var_4;
  type_2 *local_4ec;
  int var_6;
  short sStack_4ce;
  type_3 var_31 [200];
  type_2 yyvsa [200];
  
  local_4ec = yyvsa;
  var_33 = (type_2)0x0;
  var_6 = 0;
  var_26 = 200;
  var_8 = 0;
  var_2 = -2;
  var_31[0] = 0;
  var_11 = var_31;
  var_10 = var_31;
  var_7 = local_4ec;
  do {
    var_1 = (type_1)yypact[var_33.name];
    var_28 = var_11;
    if (var_1 != 0xfffffff2) {
      if (var_2 == -2) {
        var_2 = var_3();
      }
      if (var_2 < 1) {
        var_4 = 0;
        var_2 = 0;
        var_5 = var_1;
      }
      else if (var_2 < 0x114) {
        var_4 = (type_1)""[var_2];
        var_5 = var_1 + var_4;
      }
      else {
        var_4 = 2;
        var_5 = var_1 + 2;
      }
      if ((0x22 < var_5) || ("\r"[var_5] != var_4)) goto LAB_00014d80;
      var_33 = (type_2)(int)yytable[var_5];
      if ((int)var_33.name < 1) {
        var_5 = -(int)var_33.name;
        goto LAB_00014e24;
      }
      var_6 = var_6 + -1 + (type_1)(var_6 == 0);
      pYVar7 = var_7 + 1;
      var_2 = -2;
      *pYVar7 = yylval;
      goto LAB_00014ecb;
    }
LAB_00014d80:
    var_5 = (type_1)"\x02"[(int)var_33];
    if (var_5 == 0) {
      if (var_6 == 0) {
        var_8 = var_8 + 1;
        var_9(in_stack_fffffaf4);
      }
      else if (var_6 == 3) {
        if (var_2 < 1) {
          if (var_2 == 0) {
            var_30 = 1;
            goto LAB_00015015;
          }
        }
        else {
          var_2 = -2;
        }
      }
      while ((((var_1 == 0xfffffff2 || (0x22 < var_1 + 1)) || ("\r"[var_1 + 1] != '\x01')) ||
             (var_33 = (type_2)(int)yytable[var_1 + 1], (int)var_33.name < 1))) {
        if (var_10 == var_11) {
          var_30 = 1;
          var_28 = var_10;
          goto LAB_00015015;
        }
        var_10 = var_10 + -1;
        var_7 = var_7 + -1;
        var_1 = (type_1)yypact[*var_10];
      }
      pYVar7 = var_7 + 1;
      var_6 = 3;
      *pYVar7 = yylval;
      goto LAB_00014ecb;
    }
LAB_00014e24:
    var_1 = (type_1)""[var_5];
    var_33 = var_7[1 - var_1];
    switch(var_5) {
    case 2:
    case 6:
      var_12();
      break;
    case 0x13:
      var_13();
      return 0;
    case 0x15:
      var_9(in_stack_fffffaf4);
      break;
    case 0x17:
      var_14(var_7->type_4);
      break;
    case 0x18:
      var_15(var_7->type_4);
      break;
    case 0x19:
      var_16();
      break;
    case 0x1a:
      var_17(var_7->type_4);
      break;
    case 0x1b:
      var_18(var_7->type_4);
      break;
    case 0x1c:
      var_19();
      break;
    case 0x1d:
      var_20();
      break;
    case 0x1e:
      var_30 = 0;
      goto LAB_00014e5b;
    case 0x1f:
      var_30 = 1;
LAB_00014e5b:
      var_21(var_7->name,var_30);
      break;
    case 0x20:
      var_22(var_7[-1].name,var_7->type_4);
      break;
    case 0x21:
      var_23(var_7[-2].name,var_7[-1].type_4,var_7->name);
      break;
    case 0x22:
      var_33.type_4 = *(type_4 **)var_7;
      break;
    case 0x23:
    case 0x25:
    case 0x27:
      var_33.name = (char *)0x0;
      break;
    case 0x24:
      var_33 = var_7[-1];
      break;
    case 0x26:
      var_33.name = (char *)var_24(8);
      (var_33.type_4)->next = (type_4 *)var_7[-2];
      (var_33.type_4)->name = (char *)*(type_4 **)var_7;
      break;
    case 0x2a:
      var_25 = (int)(var_25 == 0);
    }
    var_10 = var_10 + -var_1;
    pYVar7 = var_7 + (1 - var_1);
    var_7[1 - var_1] = var_33;
    var_1 = (int)yydefgoto[""[var_5]] + (int)*var_10;
    if ((var_1 < 0x23) && ((int)*var_10 == (type_1)"\r"[var_1])) {
      var_33 = (type_2)(int)yytable[var_1];
    }
    else {
      var_33 = (type_2)(int)yytable[""[var_5] + 0xc];
    }
LAB_00014ecb:
    var_27 = var_10 + 1;
    var_10[1] = var_33._0_2_;
    var_1 = var_26 * 2;
    if (var_11 + (var_26 - 1) <= var_27) {
      var_30 = (int)var_27 - (int)var_11 >> 1;
      if (var_26 < 10000) {
        var_26 = 10000;
        if (var_1 < 0x2711) {
          var_26 = var_1;
        }
        var_28 = (short *)var_24(var_26 * 6 + 3);
        if (var_28 != (short *)0x0) {
          var_29(var_28,var_11,(var_30 + 1) * 2);
          var_7 = (type_2 *)(var_28 + var_26);
          var_29(var_7,local_4ec,(var_30 + 1) * 4);
          if (var_11 != var_31) {
            var_32(var_11);
          }
          var_27 = var_28 + var_30;
          pYVar7 = var_7 + var_30;
          local_4ec = var_7;
          if (var_27 < var_28 + (var_26 - 1)) goto LAB_00014fae;
          var_30 = 1;
          goto LAB_0001501b;
        }
      }
      var_30 = 2;
      var_9(in_stack_fffffaf4);
      var_28 = var_11;
      goto LAB_00015015;
    }
LAB_00014fae:
    var_11 = var_28;
    var_10 = var_27;
    var_7 = pYVar7;
  } while (var_33 != (type_2)0x3);
  var_30 = 0;
LAB_00015015:
  if (var_28 != var_31) {
LAB_0001501b:
    var_32(var_28);
  }
  return var_30;
}


(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: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (sized_type_specifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_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: (identifier))) (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: (number_literal))) (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: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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 (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (identifier)) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (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 (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)) right: (char_literal (escape_sequence)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_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: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (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: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (number_literal)))))))) (switch_statement condition: (parenthesized_expression (identifier)) body: (compound_statement (case_statement value: (number_literal)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (number_literal))) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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))))) (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))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) (break_statement)) (case_statement value: (number_literal)) (case_statement value: (number_literal)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (break_statement)) (case_statement value: (number_literal) (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 (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (subscript_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (identifier))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (subscript_expression argument: (call_expression function: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (subscript_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (identifier))))))))))) (labeled_statement label: (statement_identifier) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (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))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_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: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (return_statement (identifier)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 MASKED(void)

{
  int iVar1;
  short *psVar2;
  uint uVar3;
  short *psVar4;
  short *psVar5;
  short *__src;
  int iVar6;
  short *psVar7;
  short *psVar8;
  undefined4 uVar9;
  uint uVar10;
  undefined4 *local_500;
  uint local_4f4;
  uint local_4f0;
  short *local_4ec;
  int local_4e8;
  short local_4ce [201];
  short local_33c [404];
  undefined4 uStack_14;
  
  uStack_14 = 0x14c69;
  psVar2 = local_4ce + 1;
  local_4ec = local_33c;
  local_500 = (undefined4 *)0x0;
  local_4e8 = 0;
  local_4f4 = 200;
  DAT_00021388 = 0;
  DAT_0002138c = -2;
  local_4ce[1] = 0;
  __src = psVar2;
  psVar4 = psVar2;
  psVar7 = local_4ec;
  do {
    uVar10 = (uint)(char)(&DAT_0001b260)[(int)local_500];
    psVar5 = __src;
    if (uVar10 != 0xfffffff2) {
      if (DAT_0002138c == -2) {
        DAT_0002138c = FUN_00015810();
      }
      if (DAT_0002138c < 1) {
        local_4f0 = 0;
        DAT_0002138c = 0;
        uVar3 = uVar10;
      }
      else if (DAT_0002138c < 0x114) {
        local_4f0 = (uint)(byte)(&UNK_0001b2a0)[DAT_0002138c];
        uVar3 = uVar10 + local_4f0;
      }
      else {
        local_4f0 = 2;
        uVar3 = uVar10 + 2;
      }
      if ((0x22 < uVar3) || ((byte)(&DAT_0001b180)[uVar3] != local_4f0)) goto LAB_00014d80;
      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar3];
      if ((int)local_500 < 1) {
        uVar3 = -(int)local_500;
        goto LAB_00014e24;
      }
      local_4e8 = local_4e8 + -1 + (uint)(local_4e8 == 0);
      psVar8 = psVar7 + 2;
      DAT_0002138c = -2;
      *(undefined4 *)psVar8 = DAT_00021390;
      goto LAB_00014ecb;
    }
LAB_00014d80:
    uVar3 = (uint)(byte)(&DAT_0001b220)[(int)local_500];
    if (uVar3 == 0) {
      if (local_4e8 == 0) {
        DAT_00021388 = DAT_00021388 + 1;
        FUN_00014c20();
      }
      else if (local_4e8 == 3) {
        if (DAT_0002138c < 1) {
          if (DAT_0002138c == 0) {
            uVar9 = 1;
            goto LAB_00015015;
          }
        }
        else {
          DAT_0002138c = -2;
        }
      }
      while ((((uVar10 == 0xfffffff2 || (0x22 < uVar10 + 1)) || ((&DAT_0001b181)[uVar10] != '\x01'))
             || (local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c1)[uVar10], (int)local_500 < 1)))
      {
        if (psVar4 == __src) {
          uVar9 = 1;
          psVar5 = psVar4;
          goto LAB_00015015;
        }
        psVar4 = psVar4 + -1;
        psVar7 = psVar7 + -2;
        uVar10 = (uint)(char)(&DAT_0001b260)[*psVar4];
      }
      psVar8 = psVar7 + 2;
      local_4e8 = 3;
      *(undefined4 *)psVar8 = DAT_00021390;
      goto LAB_00014ecb;
    }
LAB_00014e24:
    uVar10 = (uint)(byte)(&DAT_0001b100)[uVar3];
    local_500 = *(undefined4 **)(psVar7 + (1 - uVar10) * 2);
    switch(uVar3) {
    case 2:
    case 6:
      FUN_000169c0();
      break;
    case 0x13:
      FUN_00017320();
      return 0;
    case 0x15:
      FUN_00014c20();
      break;
    case 0x17:
      FUN_00017360(*(undefined4 *)psVar7);
      break;
    case 0x18:
      FUN_00016ff0(*(undefined4 *)psVar7);
      break;
    case 0x19:
      FUN_00016db0();
      break;
    case 0x1a:
      FUN_00016dd0(*(undefined4 *)psVar7);
      break;
    case 0x1b:
      FUN_00016c90(*(undefined4 *)psVar7);
      break;
    case 0x1c:
      FUN_00017240();
      break;
    case 0x1d:
      FUN_00016f20();
      break;
    case 0x1e:
      uVar9 = 0;
      goto code_r0x00014e5b;
    case 0x1f:
      uVar9 = 1;
code_r0x00014e5b:
      FUN_00016a40(*(undefined4 *)psVar7,uVar9);
      break;
    case 0x20:
      FUN_00016bc0(*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);
      break;
    case 0x21:
      FUN_000168b0(*(undefined4 *)(psVar7 + -4),*(undefined4 *)(psVar7 + -2),*(undefined4 *)psVar7);
      break;
    case 0x22:
      local_500 = *(undefined4 **)psVar7;
      break;
    case 0x23:
    case 0x25:
    case 0x27:
      local_500 = (undefined4 *)0x0;
      break;
    case 0x24:
      local_500 = *(undefined4 **)(psVar7 + -2);
      break;
    case 0x26:
      local_500 = (undefined4 *)malloc(8);
      local_500[1] = *(undefined4 *)(psVar7 + -4);
      *local_500 = *(undefined4 *)psVar7;
      break;
    case 0x2a:
      DAT_0002126c = (uint)(DAT_0002126c == 0);
    }
    psVar4 = psVar4 + -uVar10;
    psVar8 = psVar7 + uVar10 * -2 + 2;
    *(undefined4 **)(psVar7 + uVar10 * -2 + 2) = local_500;
    uVar10 = (int)(char)(&DAT_0001b1e4)[(byte)(&DAT_0001b140)[uVar3]] + (int)*psVar4;
    if ((uVar10 < 0x23) && ((int)*psVar4 == (uint)(byte)(&DAT_0001b180)[uVar10])) {
      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1c0)[uVar10];
    }
    else {
      local_500 = (undefined4 *)(int)(char)(&DAT_0001b1cc)[(byte)(&DAT_0001b140)[uVar3]];
    }
LAB_00014ecb:
    psVar7 = psVar4 + 1;
    psVar4[1] = (short)local_500;
    uVar10 = local_4f4 * 2;
    if (__src + (local_4f4 - 1) <= psVar7) {
      iVar6 = (int)psVar7 - (int)__src >> 1;
      iVar1 = iVar6 + 1;
      if (local_4f4 < 10000) {
        local_4f4 = 10000;
        if (uVar10 < 0x2711) {
          local_4f4 = uVar10;
        }
        psVar5 = (short *)malloc(local_4f4 * 6 + 3);
        if (psVar5 != (short *)0x0) {
          memcpy(psVar5,__src,iVar1 * 2);
          psVar4 = psVar5 + local_4f4;
          memcpy(psVar4,local_4ec,iVar1 * 4);
          if (__src != psVar2) {
            free(__src);
          }
          psVar7 = psVar5 + iVar6;
          psVar8 = psVar4 + iVar1 * 2 + -2;
          local_4ec = psVar4;
          if (psVar7 < psVar5 + (local_4f4 - 1)) goto LAB_00014fae;
          uVar9 = 1;
          goto LAB_0001501b;
        }
      }
      uVar9 = 2;
      FUN_00014c20();
      psVar5 = __src;
      goto LAB_00015015;
    }
LAB_00014fae:
    __src = psVar5;
    psVar4 = psVar7;
    psVar7 = psVar8;
  } while (local_500 != (undefined4 *)0x3);
  uVar9 = 0;
LAB_00015015:
  if (psVar5 != psVar2) {
LAB_0001501b:
    free(psVar5);
  }
  return uVar9;
}

