
/* WARNING: Unknown calling convention */

int yyparse(void)

{
  char cVar1;
  short sVar2;
  int iVar3;
  uint uVar4;
  list *plVar5;
  uint uVar6;
  ulong uVar7;
  YYSTYPE *pYVar8;
  YYSTYPE *pYVar9;
  ulong uVar10;
  list *plVar11;
  yytype_uint8 *in_RDI;
  list *__src;
  YYSTYPE YVar12;
  uint uVar13;
  long lVar14;
  list *plVar15;
  long lVar16;
  YYSTYPE *local_830;
  yytype_int16 yStack_80a;
  yytype_int16 yyssa [200];
  YYSTYPE yyvsa [200];
  
  lVar16 = 0;
  uVar10 = 200;
  yynerrs = 0;
  local_830 = yyvsa;
  yychar = -2;
  yyssa[0] = 0;
  iVar3 = 0;
  pYVar9 = local_830;
  __src = (list *)yyssa;
  plVar11 = (list *)yyssa;
  do {
    uVar13 = (uint)yypact[lVar16];
    plVar5 = __src;
    if (uVar13 == 0xfffffff2) {
LAB_00104bf8:
      uVar6 = (uint)"\x02"[lVar16];
      if ("\x02"[lVar16] == 0) {
        if (iVar3 == 0) {
          yynerrs = yynerrs + 1;
          yyerror((char *)in_RDI);
        }
        else if (iVar3 == 3) {
          if (yychar < 1) {
            if (yychar == 0) {
              iVar3 = 1;
              goto LAB_00104ca5;
            }
          }
          else {
            yychar = -2;
          }
        }
        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||
                ("\r"[(int)uVar13] != '\x01')) ||
               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {
          if (plVar11 == __src) {
            iVar3 = 1;
            plVar5 = plVar11;
            goto LAB_00104ca5;
          }
          plVar11 = (list *)((long)&plVar11[-1].next + 6);
          pYVar9 = pYVar9 + -1;
          uVar13 = (uint)yypact[*(short *)&plVar11->name];
        }
        pYVar8 = pYVar9 + 1;
        iVar3 = 3;
        *pYVar8 = yylval;
      }
      else {
LAB_00104a58:
        uVar7 = (ulong)""[(int)uVar6];
        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];
        switch(uVar6) {
        case 2:
        case 6:
          prompt();
          break;
        case 0x13:
          ar_end();
          return 0;
        case 0x15:
          yyerror((char *)in_RDI);
          break;
        case 0x17:
          in_RDI = (yytype_uint8 *)pYVar9->list;
          ar_extract((list *)in_RDI);
          break;
        case 0x18:
          in_RDI = (yytype_uint8 *)pYVar9->list;
          ar_replace((list *)in_RDI);
          break;
        case 0x19:
          ar_clear();
          break;
        case 0x1a:
          in_RDI = (yytype_uint8 *)pYVar9->list;
          ar_delete((list *)in_RDI);
          break;
        case 0x1b:
          in_RDI = (yytype_uint8 *)pYVar9->list;
          ar_addmod((list *)in_RDI);
          break;
        case 0x1c:
          ar_list();
          break;
        case 0x1d:
          ar_save();
          break;
        case 0x1e:
          in_RDI = (yytype_uint8 *)pYVar9->name;
          ar_open((char *)in_RDI,0);
          break;
        case 0x1f:
          in_RDI = (yytype_uint8 *)pYVar9->name;
          ar_open((char *)in_RDI,1);
          break;
        case 0x20:
          in_RDI = (yytype_uint8 *)pYVar9[-1].name;
          ar_addlib((char *)in_RDI,pYVar9->list);
          break;
        case 0x21:
          in_RDI = (yytype_uint8 *)pYVar9[-2].name;
          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);
          break;
        case 0x22:
          YVar12.list = *(list **)pYVar9;
          break;
        case 0x23:
        case 0x25:
        case 0x27:
          YVar12.name = (char *)0x0;
          break;
        case 0x24:
          YVar12 = pYVar9[-1];
          break;
        case 0x26:
          in_RDI = (yytype_uint8 *)0x10;
          YVar12.name = (char *)malloc(0x10);
          (YVar12.list)->next = (list *)pYVar9[-2];
          (YVar12.list)->name = (char *)*(list **)pYVar9;
          break;
        case 0x2a:
          verbose = (int)(verbose == 0);
        }
        plVar11 = (list *)((long)plVar11 + uVar7 * -2);
        sVar2 = *(short *)&plVar11->name;
        pYVar8 = pYVar9 + (1 - uVar7);
        pYVar9[1 - uVar7] = YVar12;
        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;
        if (uVar13 < 0x23) {
          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];
          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {
            lVar16 = (long)yytable[(int)uVar13];
            goto LAB_00104aff;
          }
        }
        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];
      }
    }
    else {
      if (yychar == -2) {
        yychar = yylex();
      }
      if (yychar < 1) {
        yychar = 0;
        uVar4 = 0;
        uVar6 = uVar13;
      }
      else if (yychar < 0x114) {
        uVar4 = (uint)""[yychar];
        uVar6 = uVar13 + uVar4;
      }
      else {
        uVar4 = 2;
        uVar6 = uVar13 + 2;
      }
      if (0x22 < uVar6) goto LAB_00104bf8;
      in_RDI = "\r";
      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;
      cVar1 = yytable[(int)uVar6];
      lVar16 = (long)cVar1;
      uVar6 = -(int)cVar1;
      if (cVar1 < '\x01') goto LAB_00104a58;
      yychar = -2;
      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);
      pYVar8 = pYVar9 + 1;
      *pYVar8 = yylval;
    }
LAB_00104aff:
    uVar7 = uVar10 * 2;
    plVar15 = (list *)((long)&plVar11->name + 2);
    *(short *)((long)&plVar11->name + 2) = (short)lVar16;
    if ((list *)((long)__src + (uVar7 - 2)) <= plVar15) {
      lVar14 = (long)plVar15 - (long)__src >> 1;
      if (uVar10 < 10000) {
        uVar10 = 10000;
        if (uVar7 < 0x2711) {
          uVar10 = uVar7;
        }
        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);
        plVar5 = (list *)malloc((size_t)in_RDI);
        if (plVar5 != (list *)0x0) {
          memcpy(plVar5,__src,lVar14 * 2 + 2);
          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);
          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);
          if (__src != (list *)yyssa) {
            free(__src);
            in_RDI = (yytype_uint8 *)__src;
          }
          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);
          pYVar8 = local_830 + lVar14;
          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;
          iVar3 = 1;
          goto LAB_00104cac;
        }
      }
      iVar3 = 2;
      yyerror((char *)in_RDI);
      plVar5 = __src;
      goto LAB_00104ca5;
    }
LAB_00104be1:
    pYVar9 = pYVar8;
    __src = plVar5;
    plVar11 = plVar15;
  } while ((int)lVar16 != 3);
  iVar3 = 0;
LAB_00104ca5:
  if (plVar5 != (list *)yyssa) {
LAB_00104cac:
    free(plVar5);
  }
  return iVar3;
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_00104950(void)

{
  short *psVar1;
  char cVar2;
  short sVar3;
  int iVar4;
  uint uVar5;
  short *psVar6;
  uint uVar7;
  ulong uVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  ulong uVar12;
  short *psVar13;
  short *__src;
  undefined8 *puVar14;
  uint uVar15;
  long lVar16;
  short *psVar17;
  long lVar18;
  undefined8 *local_830;
  short asStack_80a [201];
  undefined8 local_678 [201];
  
  lVar18 = 0;
  uVar12 = 200;
  _DAT_00110690 = 0;
  psVar1 = asStack_80a + 1;
  local_830 = local_678;
  DAT_00110694 = -2;
  asStack_80a[1] = 0;
  iVar4 = 0;
  puVar10 = local_830;
  __src = psVar1;
  psVar13 = psVar1;
  do {
    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];
    psVar6 = __src;
    if (uVar15 == 0xfffffff2) {
LAB_00104bf8:
      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];
      if ((&DAT_0010b2a0)[lVar18] == 0) {
        if (iVar4 == 0) {
          _DAT_00110690 = _DAT_00110690 + 1;
          FUN_00104920();
        }
        else if (iVar4 == 3) {
          if (DAT_00110694 < 1) {
            if (DAT_00110694 == 0) {
              uVar11 = 1;
              goto LAB_00104ca5;
            }
          }
          else {
            DAT_00110694 = -2;
          }
        }
        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||
                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||
               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],
               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {
          if (psVar13 == __src) {
            uVar11 = 1;
            psVar6 = psVar13;
            goto LAB_00104ca5;
          }
          psVar13 = psVar13 + -1;
          puVar10 = puVar10 + -1;
          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];
        }
        puVar9 = puVar10 + 1;
        iVar4 = 3;
        *puVar9 = DAT_00110698;
      }
      else {
LAB_00104a58:
        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];
        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];
        switch(uVar7) {
        case 2:
        case 6:
          FUN_00106540();
          break;
        case 0x13:
          FUN_00106df0();
          return 0;
        case 0x15:
          FUN_00104920();
          break;
        case 0x17:
          FUN_00106e30(*puVar10);
          break;
        case 0x18:
          FUN_00106b00(*puVar10);
          break;
        case 0x19:
          FUN_001068f0();
          break;
        case 0x1a:
          FUN_00106910(*puVar10);
          break;
        case 0x1b:
          FUN_001067f0(*puVar10);
          break;
        case 0x1c:
          FUN_00106d20();
          break;
        case 0x1d:
          FUN_00106a50();
          break;
        case 0x1e:
          FUN_001065a0(*puVar10,0);
          break;
        case 0x1f:
          FUN_001065a0(*puVar10,1);
          break;
        case 0x20:
          FUN_00106740(puVar10[-1],*puVar10);
          break;
        case 0x21:
          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);
          break;
        case 0x22:
          puVar14 = (undefined8 *)*puVar10;
          break;
        case 0x23:
        case 0x25:
        case 0x27:
          puVar14 = (undefined8 *)0x0;
          break;
        case 0x24:
          puVar14 = (undefined8 *)puVar10[-1];
          break;
        case 0x26:
          puVar14 = (undefined8 *)malloc(0x10);
          puVar14[1] = puVar10[-2];
          *puVar14 = *puVar10;
          break;
        case 0x2a:
          DAT_00110498 = (uint)(DAT_00110498 == 0);
        }
        psVar13 = psVar13 + -uVar8;
        sVar3 = *psVar13;
        puVar9 = puVar10 + (1 - uVar8);
        puVar10[1 - uVar8] = puVar14;
        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +
                 (int)sVar3;
        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {
          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];
        }
        else {
          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];
        }
      }
    }
    else {
      if (DAT_00110694 == -2) {
        DAT_00110694 = FUN_001054d0();
      }
      if (DAT_00110694 < 1) {
        DAT_00110694 = 0;
        uVar5 = 0;
        uVar7 = uVar15;
      }
      else if (DAT_00110694 < 0x114) {
        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];
        uVar7 = uVar15 + uVar5;
      }
      else {
        uVar5 = 2;
        uVar7 = uVar15 + 2;
      }
      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;
      cVar2 = (&DAT_0010b220)[(int)uVar7];
      lVar18 = (long)cVar2;
      uVar7 = -(int)cVar2;
      if (cVar2 < '\x01') goto LAB_00104a58;
      DAT_00110694 = -2;
      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);
      puVar9 = puVar10 + 1;
      *puVar9 = DAT_00110698;
    }
    uVar8 = uVar12 * 2;
    psVar17 = psVar13 + 1;
    psVar13[1] = (short)lVar18;
    if (__src + (uVar12 - 1) <= psVar17) {
      lVar16 = (long)psVar17 - (long)__src >> 1;
      if (uVar12 < 10000) {
        uVar12 = 10000;
        if (uVar8 < 0x2711) {
          uVar12 = uVar8;
        }
        psVar6 = (short *)malloc(uVar12 * 10 + 7);
        if (psVar6 != (short *)0x0) {
          memcpy(psVar6,__src,(lVar16 + 1) * 2);
          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);
          if (__src != psVar1) {
            free(__src);
          }
          psVar17 = psVar6 + lVar16;
          puVar9 = local_830 + lVar16;
          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;
          uVar11 = 1;
          goto LAB_00104cac;
        }
      }
      uVar11 = 2;
      FUN_00104920();
      psVar6 = __src;
      goto LAB_00104ca5;
    }
LAB_00104be1:
    puVar10 = puVar9;
    __src = psVar6;
    psVar13 = psVar17;
  } while ((int)lVar18 != 3);
  uVar11 = 0;
LAB_00104ca5:
  if (psVar6 != psVar1) {
LAB_00104cac:
    free(psVar6);
  }
  return uVar11;
}


PUSH R15
XOR ESI,ESI
XOR ECX,ECX
PUSH R14
MOVSXD R15,ECX
PUSH R13
PUSH R12
LEA R12,[0x10b2e0]
PUSH RBP
MOV EBP,0xc8
PUSH RBX
SUB RSP,0x808
MOV dword ptr [0x00110690],0x0
LEA R13,[RSP + 0x30]
LEA RBX,[RSP + 0x1c0]
MOV dword ptr [0x00110694],0xfffffffe
MOV word ptr [RSP + 0x30],SI
MOV R14,R13
MOV R8,R13
MOV dword ptr [RSP + 0x10],0x0
MOV qword ptr [RSP + 0x8],RBX
MOV qword ptr [RSP + 0x18],R13
MOVSX R13D,byte ptr [R12 + R15*0x1]
MOV EDX,R13D
CMP R13D,-0xe
JZ 0x00104bf8
MOV EAX,dword ptr [0x00110694]
CMP EAX,-0x2
JZ 0x00104d10
TEST EAX,EAX
JLE 0x00104cd0
CMP EAX,0x113
JLE 0x00104ce8
LEA EDX,[R13 + 0x2]
MOV EAX,0x2
CMP EDX,0x22
JA 0x00104bf8
MOVSXD RDX,EDX
LEA RDI,[0x10b1e0]
MOVZX ESI,byte ptr [RDI + RDX*0x1]
CMP ESI,EAX
JNZ 0x00104bf8
LEA RAX,[0x10b220]
MOVSX R15,byte ptr [RAX + RDX*0x1]
MOV ECX,R15D
NEG ECX
TEST R15D,R15D
JLE 0x00104a58
MOV EAX,dword ptr [RSP + 0x10]
MOV RSI,R14
MOV dword ptr [0x00110694],0xfffffffe
CMP EAX,0x1
ADC EAX,-0x1
ADD RBX,0x8
MOV dword ptr [RSP + 0x10],EAX
MOV RAX,qword ptr [0x00110698]
MOV qword ptr [RBX],RAX
JMP 0x00104aff
LEA RAX,[0x10b160]
MOVSXD R15,ECX
MOVZX EDX,byte ptr [RAX + R15*0x1]
MOV EAX,0x1
SUB EAX,EDX
MOV R13,RDX
CDQE
MOV R10,qword ptr [RBX + RAX*0x8]
CMP ECX,0x2a
JA 0x00104a98
LEA RDX,[0x10b0a0]
MOV ECX,ECX
MOVSXD RAX,dword ptr [RDX + RCX*0x4]
ADD RAX,RDX
JMP RAX
XOR R10D,R10D
NOP dword ptr [RAX + RAX*0x1]
LEA RAX,[R13*0x8]
MOV RSI,R14
ADD R13,R13
SUB RBX,RAX
SUB RSI,R13
LEA RDX,[0x10b270]
MOV RAX,RBX
MOVSX ECX,word ptr [RSI]
LEA RBX,[RBX + 0x8]
MOV qword ptr [RAX + 0x8],R10
LEA RAX,[0x10b1a0]
MOVZX EAX,byte ptr [RAX + R15*0x1]
SUB EAX,0x18
CDQE
MOVSX EDX,byte ptr [RDX + RAX*0x1]
ADD EDX,ECX
CMP EDX,0x22
JA 0x00104af3
MOVSXD RDX,EDX
LEA RDI,[0x10b1e0]
MOVZX EDI,byte ptr [RDI + RDX*0x1]
CMP ECX,EDI
JZ 0x00104d58
LEA RDX,[0x10b250]
MOVSX R15,byte ptr [RDX + RAX*0x1]
LEA RAX,[RBP + RBP*0x1]
LEA R14,[RSI + 0x2]
MOV word ptr [RSI + 0x2],R15W
LEA RDX,[R8 + RAX*0x1 + -0x2]
CMP R14,RDX
JC 0x00104be1
SUB R14,R8
SAR R14,0x1
LEA RBX,[R14 + 0x1]
CMP RBP,0x270f
JA 0x00104f79
CMP RAX,0x2710
MOV EBP,0x2710
MOV qword ptr [RSP + 0x20],R8
CMOVBE RBP,RAX
LEA RAX,[RBP + RBP*0x4]
LEA RDI,[RAX + RAX*0x1 + 0x7]
CALL 0x001023f0
MOV R8,qword ptr [RSP + 0x20]
TEST RAX,RAX
MOV R13,RAX
JZ 0x00104f79
LEA R14,[RBX + RBX*0x1]
MOV RSI,R8
MOV RDI,RAX
SHL RBX,0x3
MOV RDX,R14
CALL 0x00102390
LEA R10,[R13 + RBP*0x2]
MOV RSI,qword ptr [RSP + 0x8]
MOV RDX,RBX
LEA RAX,[RBP + RBP*0x1]
MOV RDI,R10
MOV qword ptr [RSP + 0x28],RAX
CALL 0x00102390
MOV R8,qword ptr [RSP + 0x20]
MOV R10,RAX
CMP R8,qword ptr [RSP + 0x18]
JZ 0x00104bbc
MOV RDI,R8
MOV qword ptr [RSP + 0x8],RAX
CALL 0x00102060
MOV R10,qword ptr [RSP + 0x8]
LEA RAX,[RBP + RBP*0x1]
LEA R14,[R13 + R14*0x1 + -0x2]
LEA RAX,[R13 + RAX*0x1 + -0x2]
LEA RBX,[R10 + RBX*0x1 + -0x8]
CMP R14,RAX
JNC 0x00104f9b
MOV qword ptr [RSP + 0x8],R10
MOV R8,R13
CMP R15D,0x3
JNZ 0x001049b2
MOV R14,R8
XOR EBX,EBX
JMP 0x00104ca5
LEA RAX,[0x10b2a0]
MOVZX ECX,byte ptr [RAX + R15*0x1]
TEST ECX,ECX
JNZ 0x00104a58
MOV ECX,dword ptr [RSP + 0x10]
TEST ECX,ECX
JZ 0x00104d38
CMP dword ptr [RSP + 0x10],0x3
JNZ 0x00104c33
MOV EAX,dword ptr [0x00110694]
TEST EAX,EAX
JG 0x00104d00
JZ 0x00104f8e
LEA RDX,[0x10b220]
JMP 0x00104c56
CMP R14,R8
JZ 0x00104ca0
SUB R14,0x2
MOVSX RAX,word ptr [R14]
SUB RBX,0x8
MOVSX R13D,byte ptr [R12 + RAX*0x1]
CMP R13D,-0xe
JZ 0x00104c40
ADD R13D,0x1
CMP R13D,0x22
JA 0x00104c40
MOVSXD R13,R13D
LEA RAX,[0x10b1e0]
CMP byte ptr [RAX + R13*0x1],0x1
JNZ 0x00104c40
MOVSX R15,byte ptr [RDX + R13*0x1]
TEST R15D,R15D
JLE 0x00104c40
MOV RAX,qword ptr [0x00110698]
ADD RBX,0x8
MOV RSI,R14
MOV dword ptr [RSP + 0x10],0x3
MOV qword ptr [RBX],RAX
JMP 0x00104aff
MOV EBX,0x1
CMP R14,qword ptr [RSP + 0x18]
JZ 0x00104cb4
MOV RDI,R14
CALL 0x00102060
ADD RSP,0x808
MOV EAX,EBX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV dword ptr [0x00110694],0x0
XOR EAX,EAX
JMP 0x001049ef
LEA RDX,[0x10b320]
CDQE
MOVZX EAX,byte ptr [RDX + RAX*0x1]
LEA EDX,[R13 + RAX*0x1]
JMP 0x001049ef
MOV dword ptr [0x00110694],0xfffffffe
JMP 0x00104c33
MOV qword ptr [RSP + 0x28],R8
MOV dword ptr [RSP + 0x20],R13D
CALL 0x001054d0
MOV R8,qword ptr [RSP + 0x28]
MOV EDX,dword ptr [RSP + 0x20]
MOV dword ptr [0x00110694],EAX
JMP 0x001049d3
MOV qword ptr [RSP + 0x10],R8
ADD dword ptr [0x00110690],0x1
CALL 0x00104920
MOV R8,qword ptr [RSP + 0x10]
JMP 0x00104c33
LEA RAX,[0x10b220]
MOVSX R15,byte ptr [RAX + RDX*0x1]
JMP 0x00104aff
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106540
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00104920
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV EDX,dword ptr [0x00110498]
XOR EAX,EAX
TEST EDX,EDX
SETZ AL
MOV dword ptr [0x00110498],EAX
JMP 0x00104a98
MOV EDI,0x10
MOV qword ptr [RSP + 0x20],R8
CALL 0x001023f0
MOV R8,qword ptr [RSP + 0x20]
MOV R10,RAX
MOV RAX,qword ptr [RBX + -0x10]
MOV qword ptr [R10 + 0x8],RAX
MOV RAX,qword ptr [RBX]
MOV qword ptr [R10],RAX
JMP 0x00104a98
CALL 0x00106df0
XOR EBX,EBX
JMP 0x00104cb4
MOV RDI,qword ptr [RBX]
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106e30
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV RDI,qword ptr [RBX]
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106b00
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x001068f0
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV RDI,qword ptr [RBX]
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106910
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV RDI,qword ptr [RBX]
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x001067f0
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106d20
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106a50
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV RDI,qword ptr [RBX]
XOR ESI,ESI
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x001065a0
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV RDI,qword ptr [RBX]
MOV ESI,0x1
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x001065a0
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV RDI,qword ptr [RBX + -0x8]
MOV RSI,qword ptr [RBX]
MOV qword ptr [RSP + 0x28],R8
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106740
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV RSI,qword ptr [RBX + -0x8]
MOV RDI,qword ptr [RBX + -0x10]
MOV qword ptr [RSP + 0x28],R8
MOV RDX,qword ptr [RBX]
MOV qword ptr [RSP + 0x20],R10
CALL 0x00106440
MOV R10,qword ptr [RSP + 0x20]
MOV R8,qword ptr [RSP + 0x28]
JMP 0x00104a98
MOV R10,qword ptr [RBX]
JMP 0x00104a98
MOV R10,qword ptr [RBX + -0x8]
JMP 0x00104a98
MOV R13,R8
MOV EBX,0x2
CALL 0x00104920
MOV R14,R13
JMP 0x00104ca5
MOV R14,R8
MOV EBX,0x1
JMP 0x00104ca5
MOV R14,R13
MOV EBX,0x1
JMP 0x00104cac
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined8 FUN_00104950(void)\n\n{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}\n\n" comment (function_definition "undefined8 FUN_00104950(void)\n\n{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}" type_identifier (function_declarator "FUN_00104950(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}" { (declaration "short *psVar1;" (sized_type_specifier "short" short) (pointer_declarator "*psVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "short *psVar6;" (sized_type_specifier "short" short) (pointer_declarator "*psVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined8 uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "short *psVar13;" (sized_type_specifier "short" short) (pointer_declarator "*psVar13" * identifier) ;) (declaration "short *__src;" (sized_type_specifier "short" short) (pointer_declarator "*__src" * identifier) ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "short *psVar17;" (sized_type_specifier "short" short) (pointer_declarator "*psVar17" * identifier) ;) (declaration "long lVar18;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_830;" type_identifier (pointer_declarator "*local_830" * identifier) ;) (declaration "short asStack_80a [201];" (sized_type_specifier "short" short) (array_declarator "asStack_80a [201]" identifier [ number_literal ]) ;) (declaration "undefined8 local_678 [201];" type_identifier (array_declarator "local_678 [201]" identifier [ number_literal ]) ;) (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = 200;" (assignment_expression "uVar12 = 200" identifier = number_literal) ;) (expression_statement "_DAT_00110690 = 0;" (assignment_expression "_DAT_00110690 = 0" identifier = number_literal) ;) (expression_statement "psVar1 = asStack_80a + 1;" (assignment_expression "psVar1 = asStack_80a + 1" identifier = (binary_expression "asStack_80a + 1" identifier + number_literal)) ;) (expression_statement "local_830 = local_678;" (assignment_expression "local_830 = local_678" identifier = identifier) ;) (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" identifier = number_literal) ;) (expression_statement "asStack_80a[1] = 0;" (assignment_expression "asStack_80a[1] = 0" (subscript_expression "asStack_80a[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = local_830;" (assignment_expression "puVar10 = local_830" identifier = identifier) ;) (expression_statement "__src = psVar1;" (assignment_expression "__src = psVar1" identifier = identifier) ;) (expression_statement "psVar13 = psVar1;" (assignment_expression "psVar13 = psVar1" identifier = identifier) ;) (do_statement "do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);" do (compound_statement "{\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  }" { (expression_statement "uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];" (assignment_expression "uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18]" identifier = (subscript_expression "(uint)(char)(&DAT_0010b2e0)[lVar18]" (call_expression "(uint)(char)(&DAT_0010b2e0)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0010b2e0)" ( (pointer_expression "&DAT_0010b2e0" & identifier) ))) [ identifier ])) ;) (expression_statement "psVar6 = __src;" (assignment_expression "psVar6 = __src" identifier = identifier) ;) (if_statement "if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" if (parenthesized_expression "(uVar15 == 0xfffffff2)" ( (binary_expression "uVar15 == 0xfffffff2" identifier == number_literal) )) (compound_statement "{\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }" { (labeled_statement "LAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];" statement_identifier : (expression_statement "uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];" (assignment_expression "uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18]" identifier = (subscript_expression "(uint)(byte)(&DAT_0010b2a0)[lVar18]" (call_expression "(uint)(byte)(&DAT_0010b2a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b2a0)" ( (pointer_expression "&DAT_0010b2a0" & identifier) ))) [ identifier ])) ;)) (if_statement "if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" if (parenthesized_expression "((&DAT_0010b2a0)[lVar18] == 0)" ( (binary_expression "(&DAT_0010b2a0)[lVar18] == 0" (subscript_expression "(&DAT_0010b2a0)[lVar18]" (parenthesized_expression "(&DAT_0010b2a0)" ( (pointer_expression "&DAT_0010b2a0" & identifier) )) [ identifier ]) == number_literal) )) (compound_statement "{\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }" { (if_statement "if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }" { (expression_statement "_DAT_00110690 = _DAT_00110690 + 1;" (assignment_expression "_DAT_00110690 = _DAT_00110690 + 1" identifier = (binary_expression "_DAT_00110690 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" else (if_statement "if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" if (parenthesized_expression "(iVar4 == 3)" ( (binary_expression "iVar4 == 3" identifier == number_literal) )) (compound_statement "{\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" { (if_statement "if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }" if (parenthesized_expression "(DAT_00110694 < 1)" ( (binary_expression "DAT_00110694 < 1" identifier < number_literal) )) (compound_statement "{\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }" { (if_statement "if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }" if (parenthesized_expression "(DAT_00110694 == 0)" ( (binary_expression "DAT_00110694 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) }) (else_clause "else {\n            DAT_00110694 = -2;\n          }" else (compound_statement "{\n            DAT_00110694 = -2;\n          }" { (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" identifier = number_literal) ;) }))) })))) (while_statement "while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }" while (parenthesized_expression "((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')))" ( (parenthesized_expression "(((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))" ( (binary_expression "((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')" (parenthesized_expression "((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01'))" ( (binary_expression "(uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')" (parenthesized_expression "(uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15))" ( (binary_expression "uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)" (binary_expression "uVar15 == 0xfffffff2" identifier == number_literal) || (parenthesized_expression "(uVar15 = uVar15 + 1, 0x22 < uVar15)" ( (comma_expression "uVar15 = uVar15 + 1, 0x22 < uVar15" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) , (binary_expression "0x22 < uVar15" number_literal < identifier)) ))) )) || (parenthesized_expression "((&DAT_0010b1e0)[(int)uVar15] != '\x01')" ( (binary_expression "(&DAT_0010b1e0)[(int)uVar15] != '\x01'" (subscript_expression "(&DAT_0010b1e0)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b1e0)" ( (pointer_expression "&DAT_0010b1e0" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')" ( (comma_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15]" identifier = (cast_expression "(long)(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])))) , (binary_expression "(char)(&DAT_0010b220)[(int)uVar15] < '\x01'" (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])) < (char_literal "'\x01'" ' escape_sequence '))) ))) )) )) (compound_statement "{\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }" { (if_statement "if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }" if (parenthesized_expression "(psVar13 == __src)" ( (binary_expression "psVar13 == __src" identifier == identifier) )) (compound_statement "{\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "psVar6 = psVar13;" (assignment_expression "psVar6 = psVar13" identifier = identifier) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) (expression_statement "psVar13 = psVar13 + -1;" (assignment_expression "psVar13 = psVar13 + -1" identifier = (binary_expression "psVar13 + -1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];" (assignment_expression "uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13]" identifier = (subscript_expression "(uint)(char)(&DAT_0010b2e0)[*psVar13]" (call_expression "(uint)(char)(&DAT_0010b2e0)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0010b2e0)" ( (pointer_expression "&DAT_0010b2e0" & identifier) ))) [ (pointer_expression "*psVar13" * identifier) ])) ;) })) (expression_statement "puVar9 = puVar10 + 1;" (assignment_expression "puVar9 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) (expression_statement "*puVar9 = DAT_00110698;" (assignment_expression "*puVar9 = DAT_00110698" (pointer_expression "*puVar9" * identifier) = identifier) ;) }) (else_clause "else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" else (compound_statement "{\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" { (labeled_statement "LAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];" statement_identifier : (expression_statement "uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];" (assignment_expression "uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7]" identifier = (subscript_expression "(ulong)(byte)(&DAT_0010b160)[(int)uVar7]" (call_expression "(ulong)(byte)(&DAT_0010b160)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b160)" ( (pointer_expression "&DAT_0010b160" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;)) (expression_statement "puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];" (assignment_expression "puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" identifier = (cast_expression "(undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" identifier [ (cast_expression "(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])" ( (binary_expression "1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7]" number_literal - (subscript_expression "(uint)(byte)(&DAT_0010b160)[(int)uVar7]" (call_expression "(uint)(byte)(&DAT_0010b160)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b160)" ( (pointer_expression "&DAT_0010b160" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ))) ]))) ;) (switch_statement "switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }" switch (parenthesized_expression "(uVar7)" ( identifier )) (compound_statement "{\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }" { (case_statement "case 2:" case number_literal :) (case_statement "case 6:\n          FUN_00106540();\n          break;" case number_literal : (expression_statement "FUN_00106540();" (call_expression "FUN_00106540()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n          FUN_00106df0();\n          return 0;" case number_literal : (expression_statement "FUN_00106df0();" (call_expression "FUN_00106df0()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 0x15:\n          FUN_00104920();\n          break;" case number_literal : (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n          FUN_00106e30(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106e30(*puVar10);" (call_expression "FUN_00106e30(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n          FUN_00106b00(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106b00(*puVar10);" (call_expression "FUN_00106b00(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x19:\n          FUN_001068f0();\n          break;" case number_literal : (expression_statement "FUN_001068f0();" (call_expression "FUN_001068f0()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1a:\n          FUN_00106910(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106910(*puVar10);" (call_expression "FUN_00106910(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_001067f0(*puVar10);" (call_expression "FUN_001067f0(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1c:\n          FUN_00106d20();\n          break;" case number_literal : (expression_statement "FUN_00106d20();" (call_expression "FUN_00106d20()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1d:\n          FUN_00106a50();\n          break;" case number_literal : (expression_statement "FUN_00106a50();" (call_expression "FUN_00106a50()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;" case number_literal : (expression_statement "FUN_001065a0(*puVar10,0);" (call_expression "FUN_001065a0(*puVar10,0)" identifier (argument_list "(*puVar10,0)" ( (pointer_expression "*puVar10" * identifier) , number_literal ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;" case number_literal : (expression_statement "FUN_001065a0(*puVar10,1);" (call_expression "FUN_001065a0(*puVar10,1)" identifier (argument_list "(*puVar10,1)" ( (pointer_expression "*puVar10" * identifier) , number_literal ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106740(puVar10[-1],*puVar10);" (call_expression "FUN_00106740(puVar10[-1],*puVar10)" identifier (argument_list "(puVar10[-1],*puVar10)" ( (subscript_expression "puVar10[-1]" identifier [ number_literal ]) , (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);" (call_expression "FUN_00106440(puVar10[-2],puVar10[-1],*puVar10)" identifier (argument_list "(puVar10[-2],puVar10[-1],*puVar10)" ( (subscript_expression "puVar10[-2]" identifier [ number_literal ]) , (subscript_expression "puVar10[-1]" identifier [ number_literal ]) , (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)*puVar10;" (assignment_expression "puVar14 = (undefined8 *)*puVar10" identifier = (cast_expression "(undefined8 *)*puVar10" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0x23:" case number_literal :) (case_statement "case 0x25:" case number_literal :) (case_statement "case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)0x0;" (assignment_expression "puVar14 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)puVar10[-1];" (assignment_expression "puVar14 = (undefined8 *)puVar10[-1]" identifier = (cast_expression "(undefined8 *)puVar10[-1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[-1]" identifier [ number_literal ]))) ;) (break_statement "break;" break ;)) (case_statement "case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)malloc(0x10);" (assignment_expression "puVar14 = (undefined8 *)malloc(0x10)" identifier = (cast_expression "(undefined8 *)malloc(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar14[1] = puVar10[-2];" (assignment_expression "puVar14[1] = puVar10[-2]" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = (subscript_expression "puVar10[-2]" identifier [ number_literal ])) ;) (expression_statement "*puVar14 = *puVar10;" (assignment_expression "*puVar14 = *puVar10" (pointer_expression "*puVar14" * identifier) = (pointer_expression "*puVar10" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);" case number_literal : (expression_statement "DAT_00110498 = (uint)(DAT_00110498 == 0);" (assignment_expression "DAT_00110498 = (uint)(DAT_00110498 == 0)" identifier = (call_expression "(uint)(DAT_00110498 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00110498 == 0)" ( (binary_expression "DAT_00110498 == 0" identifier == number_literal) )))) ;)) })) (expression_statement "psVar13 = psVar13 + -uVar8;" (assignment_expression "psVar13 = psVar13 + -uVar8" identifier = (binary_expression "psVar13 + -uVar8" identifier + (unary_expression "-uVar8" - identifier))) ;) (expression_statement "sVar3 = *psVar13;" (assignment_expression "sVar3 = *psVar13" identifier = (pointer_expression "*psVar13" * identifier)) ;) (expression_statement "puVar9 = puVar10 + (1 - uVar8);" (assignment_expression "puVar9 = puVar10 + (1 - uVar8)" identifier = (binary_expression "puVar10 + (1 - uVar8)" identifier + (parenthesized_expression "(1 - uVar8)" ( (binary_expression "1 - uVar8" number_literal - identifier) )))) ;) (expression_statement "puVar10[1 - uVar8] = puVar14;" (assignment_expression "puVar10[1 - uVar8] = puVar14" (subscript_expression "puVar10[1 - uVar8]" identifier [ (binary_expression "1 - uVar8" number_literal - identifier) ]) = identifier) ;) (expression_statement "uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;" (assignment_expression "uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3" identifier = (binary_expression "(int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3" (cast_expression "(int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (parenthesized_expression "(&DAT_0010b270)" ( (pointer_expression "&DAT_0010b270" & identifier) )) [ (cast_expression "(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (binary_expression "(byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18" (subscript_expression "(byte)(&DAT_0010b1a0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1a0)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0010b1a0)" ( (pointer_expression "&DAT_0010b1a0" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal) ))) ]))) + (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" if (parenthesized_expression "((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15]))" ( (binary_expression "(uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])" (parenthesized_expression "(uVar15 < 0x23)" ( (binary_expression "uVar15 < 0x23" identifier < number_literal) )) && (parenthesized_expression "((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])" ( (binary_expression "(int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15]" (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier) == (subscript_expression "(uint)(byte)(&DAT_0010b1e0)[(int)uVar15]" (call_expression "(uint)(byte)(&DAT_0010b1e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b1e0)" ( (pointer_expression "&DAT_0010b1e0" & identifier) ))) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])) ))) )) (compound_statement "{\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }" { (expression_statement "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15]" identifier = (cast_expression "(long)(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])))) ;) }) (else_clause "else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" else (compound_statement "{\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" { (expression_statement "lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" identifier = (cast_expression "(long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (parenthesized_expression "(&DAT_0010b250)" ( (pointer_expression "&DAT_0010b250" & identifier) )) [ (cast_expression "(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (binary_expression "(byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18" (subscript_expression "(byte)(&DAT_0010b1a0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1a0)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0010b1a0)" ( (pointer_expression "&DAT_0010b1a0" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal) ))) ])))) ;) }))) }))) }) (else_clause "else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" else (compound_statement "{\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" { (if_statement "if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }" if (parenthesized_expression "(DAT_00110694 == -2)" ( (binary_expression "DAT_00110694 == -2" identifier == number_literal) )) (compound_statement "{\n        DAT_00110694 = FUN_001054d0();\n      }" { (expression_statement "DAT_00110694 = FUN_001054d0();" (assignment_expression "DAT_00110694 = FUN_001054d0()" identifier = (call_expression "FUN_001054d0()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" if (parenthesized_expression "(DAT_00110694 < 1)" ( (binary_expression "DAT_00110694 < 1" identifier < number_literal) )) (compound_statement "{\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }" { (expression_statement "DAT_00110694 = 0;" (assignment_expression "DAT_00110694 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = uVar15;" (assignment_expression "uVar7 = uVar15" identifier = identifier) ;) }) (else_clause "else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" else (if_statement "if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" if (parenthesized_expression "(DAT_00110694 < 0x114)" ( (binary_expression "DAT_00110694 < 0x114" identifier < number_literal) )) (compound_statement "{\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }" { (expression_statement "uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];" (assignment_expression "uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694]" identifier = (subscript_expression "(uint)(byte)(&DAT_0010b320)[DAT_00110694]" (call_expression "(uint)(byte)(&DAT_0010b320)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b320)" ( (pointer_expression "&DAT_0010b320" & identifier) ))) [ identifier ])) ;) (expression_statement "uVar7 = uVar15 + uVar5;" (assignment_expression "uVar7 = uVar15 + uVar5" identifier = (binary_expression "uVar15 + uVar5" identifier + identifier)) ;) }) (else_clause "else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" else (compound_statement "{\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" { (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (expression_statement "uVar7 = uVar15 + 2;" (assignment_expression "uVar7 = uVar15 + 2" identifier = (binary_expression "uVar15 + 2" identifier + number_literal)) ;) }))))) (if_statement "if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;" if (parenthesized_expression "((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5))" ( (binary_expression "(0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)" (parenthesized_expression "(0x22 < uVar7)" ( (binary_expression "0x22 < uVar7" number_literal < identifier) )) || (parenthesized_expression "((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)" ( (binary_expression "(byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5" (subscript_expression "(byte)(&DAT_0010b1e0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1e0)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0010b1e0)" ( (pointer_expression "&DAT_0010b1e0" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ]) != identifier) ))) )) (goto_statement "goto LAB_00104bf8;" goto statement_identifier ;)) (expression_statement "cVar2 = (&DAT_0010b220)[(int)uVar7];" (assignment_expression "cVar2 = (&DAT_0010b220)[(int)uVar7]" identifier = (subscript_expression "(&DAT_0010b220)[(int)uVar7]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "lVar18 = (long)cVar2;" (assignment_expression "lVar18 = (long)cVar2" identifier = (cast_expression "(long)cVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar7 = -(int)cVar2;" (assignment_expression "uVar7 = -(int)cVar2" identifier = (unary_expression "-(int)cVar2" - (cast_expression "(int)cVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (cVar2 < '\x01') goto LAB_00104a58;" if (parenthesized_expression "(cVar2 < '\x01')" ( (binary_expression "cVar2 < '\x01'" identifier < (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_00104a58;" goto statement_identifier ;)) (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" identifier = number_literal) ;) (expression_statement "iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);" (assignment_expression "iVar4 = iVar4 + -1 + (uint)(iVar4 == 0)" identifier = (binary_expression "iVar4 + -1 + (uint)(iVar4 == 0)" (binary_expression "iVar4 + -1" identifier + number_literal) + (call_expression "(uint)(iVar4 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) ))))) ;) (expression_statement "puVar9 = puVar10 + 1;" (assignment_expression "puVar9 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = DAT_00110698;" (assignment_expression "*puVar9 = DAT_00110698" (pointer_expression "*puVar9" * identifier) = identifier) ;) }))) (expression_statement "uVar8 = uVar12 * 2;" (assignment_expression "uVar8 = uVar12 * 2" identifier = (binary_expression "uVar12 * 2" identifier * number_literal)) ;) (expression_statement "psVar17 = psVar13 + 1;" (assignment_expression "psVar17 = psVar13 + 1" identifier = (binary_expression "psVar13 + 1" identifier + number_literal)) ;) (expression_statement "psVar13[1] = (short)lVar18;" (assignment_expression "psVar13[1] = (short)lVar18" (subscript_expression "psVar13[1]" identifier [ number_literal ]) = (cast_expression "(short)lVar18" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }" if (parenthesized_expression "(__src + (uVar12 - 1) <= psVar17)" ( (binary_expression "__src + (uVar12 - 1) <= psVar17" (binary_expression "__src + (uVar12 - 1)" identifier + (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) ))) <= identifier) )) (compound_statement "{\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }" { (expression_statement "lVar16 = (long)psVar17 - (long)__src >> 1;" (assignment_expression "lVar16 = (long)psVar17 - (long)__src >> 1" identifier = (binary_expression "(long)psVar17 - (long)__src >> 1" (binary_expression "(long)psVar17 - (long)__src" (cast_expression "(long)psVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }" if (parenthesized_expression "(uVar12 < 10000)" ( (binary_expression "uVar12 < 10000" identifier < number_literal) )) (compound_statement "{\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }" { (expression_statement "uVar12 = 10000;" (assignment_expression "uVar12 = 10000" identifier = number_literal) ;) (if_statement "if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }" if (parenthesized_expression "(uVar8 < 0x2711)" ( (binary_expression "uVar8 < 0x2711" identifier < number_literal) )) (compound_statement "{\n          uVar12 = uVar8;\n        }" { (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" identifier = identifier) ;) })) (expression_statement "psVar6 = (short *)malloc(uVar12 * 10 + 7);" (assignment_expression "psVar6 = (short *)malloc(uVar12 * 10 + 7)" identifier = (cast_expression "(short *)malloc(uVar12 * 10 + 7)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(uVar12 * 10 + 7)" identifier (argument_list "(uVar12 * 10 + 7)" ( (binary_expression "uVar12 * 10 + 7" (binary_expression "uVar12 * 10" identifier * number_literal) + number_literal) ))))) ;) (if_statement "if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }" if (parenthesized_expression "(psVar6 != (short *)0x0)" ( (binary_expression "psVar6 != (short *)0x0" identifier != (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }" { (expression_statement "memcpy(psVar6,__src,(lVar16 + 1) * 2);" (call_expression "memcpy(psVar6,__src,(lVar16 + 1) * 2)" identifier (argument_list "(psVar6,__src,(lVar16 + 1) * 2)" ( identifier , identifier , (binary_expression "(lVar16 + 1) * 2" (parenthesized_expression "(lVar16 + 1)" ( (binary_expression "lVar16 + 1" identifier + number_literal) )) * number_literal) ))) ;) (expression_statement "local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);" (assignment_expression "local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" identifier = (cast_expression "(undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" identifier (argument_list "(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" ( (binary_expression "psVar6 + uVar12" identifier + identifier) , identifier , (binary_expression "(lVar16 + 1) * 8" (parenthesized_expression "(lVar16 + 1)" ( (binary_expression "lVar16 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (if_statement "if (__src != psVar1) {\n            free(__src);\n          }" if (parenthesized_expression "(__src != psVar1)" ( (binary_expression "__src != psVar1" identifier != identifier) )) (compound_statement "{\n            free(__src);\n          }" { (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) })) (expression_statement "psVar17 = psVar6 + lVar16;" (assignment_expression "psVar17 = psVar6 + lVar16" identifier = (binary_expression "psVar6 + lVar16" identifier + identifier)) ;) (expression_statement "puVar9 = local_830 + lVar16;" (assignment_expression "puVar9 = local_830 + lVar16" identifier = (binary_expression "local_830 + lVar16" identifier + identifier)) ;) (if_statement "if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;" if (parenthesized_expression "(psVar17 < psVar6 + (uVar12 - 1))" ( (binary_expression "psVar17 < psVar6 + (uVar12 - 1)" identifier < (binary_expression "psVar6 + (uVar12 - 1)" identifier + (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )))) )) (goto_statement "goto LAB_00104be1;" goto statement_identifier ;)) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104cac;" goto statement_identifier ;) })) })) (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;) (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" identifier (argument_list "()" ( ))) ;) (expression_statement "psVar6 = __src;" (assignment_expression "psVar6 = __src" identifier = identifier) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) (labeled_statement "LAB_00104be1:\n    puVar10 = puVar9;" statement_identifier : (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;)) (expression_statement "__src = psVar6;" (assignment_expression "__src = psVar6" identifier = identifier) ;) (expression_statement "psVar13 = psVar17;" (assignment_expression "psVar13 = psVar17" identifier = identifier) ;) }) while (parenthesized_expression "((int)lVar18 != 3)" ( (binary_expression "(int)lVar18 != 3" (cast_expression "(int)lVar18" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }" statement_identifier : (if_statement "if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }" if (parenthesized_expression "(psVar6 != psVar1)" ( (binary_expression "psVar6 != psVar1" identifier != identifier) )) (compound_statement "{\nLAB_00104cac:\n    free(psVar6);\n  }" { (labeled_statement "LAB_00104cac:\n    free(psVar6);" statement_identifier : (expression_statement "free(psVar6);" (call_expression "free(psVar6)" identifier (argument_list "(psVar6)" ( identifier ))) ;)) }))) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit "/* WARNING: Unknown calling convention */\n\nint yyparse(void)\n\n{\n  char cVar1;\n  short sVar2;\n  int iVar3;\n  uint uVar4;\n  list *plVar5;\n  uint uVar6;\n  ulong uVar7;\n  YYSTYPE *pYVar8;\n  YYSTYPE *pYVar9;\n  ulong uVar10;\n  list *plVar11;\n  yytype_uint8 *in_RDI;\n  list *__src;\n  YYSTYPE YVar12;\n  uint uVar13;\n  long lVar14;\n  list *plVar15;\n  long lVar16;\n  YYSTYPE *local_830;\n  yytype_int16 yStack_80a;\n  yytype_int16 yyssa [200];\n  YYSTYPE yyvsa [200];\n  \n  lVar16 = 0;\n  uVar10 = 200;\n  yynerrs = 0;\n  local_830 = yyvsa;\n  yychar = -2;\n  yyssa[0] = 0;\n  iVar3 = 0;\n  pYVar9 = local_830;\n  __src = (list *)yyssa;\n  plVar11 = (list *)yyssa;\n  do {\n    uVar13 = (uint)yypact[lVar16];\n    plVar5 = __src;\n    if (uVar13 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];\n      if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }\n    }\n    else {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\n    }\nLAB_00104aff:\n    uVar7 = uVar10 * 2;\n    plVar15 = (list *)((long)&plVar11->name + 2);\n    *(short *)((long)&plVar11->name + 2) = (short)lVar16;\n    if ((list *)((long)__src + (uVar7 - 2)) <= plVar15) {\n      lVar14 = (long)plVar15 - (long)__src >> 1;\n      if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      iVar3 = 2;\n      yyerror((char *)in_RDI);\n      plVar5 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    pYVar9 = pYVar8;\n    __src = plVar5;\n    plVar11 = plVar15;\n  } while ((int)lVar16 != 3);\n  iVar3 = 0;\nLAB_00104ca5:\n  if (plVar5 != (list *)yyssa) {\nLAB_00104cac:\n    free(plVar5);\n  }\n  return iVar3;\n}\n\n" comment (function_definition "int yyparse(void)\n\n{\n  char cVar1;\n  short sVar2;\n  int iVar3;\n  uint uVar4;\n  list *plVar5;\n  uint uVar6;\n  ulong uVar7;\n  YYSTYPE *pYVar8;\n  YYSTYPE *pYVar9;\n  ulong uVar10;\n  list *plVar11;\n  yytype_uint8 *in_RDI;\n  list *__src;\n  YYSTYPE YVar12;\n  uint uVar13;\n  long lVar14;\n  list *plVar15;\n  long lVar16;\n  YYSTYPE *local_830;\n  yytype_int16 yStack_80a;\n  yytype_int16 yyssa [200];\n  YYSTYPE yyvsa [200];\n  \n  lVar16 = 0;\n  uVar10 = 200;\n  yynerrs = 0;\n  local_830 = yyvsa;\n  yychar = -2;\n  yyssa[0] = 0;\n  iVar3 = 0;\n  pYVar9 = local_830;\n  __src = (list *)yyssa;\n  plVar11 = (list *)yyssa;\n  do {\n    uVar13 = (uint)yypact[lVar16];\n    plVar5 = __src;\n    if (uVar13 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];\n      if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }\n    }\n    else {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\n    }\nLAB_00104aff:\n    uVar7 = uVar10 * 2;\n    plVar15 = (list *)((long)&plVar11->name + 2);\n    *(short *)((long)&plVar11->name + 2) = (short)lVar16;\n    if ((list *)((long)__src + (uVar7 - 2)) <= plVar15) {\n      lVar14 = (long)plVar15 - (long)__src >> 1;\n      if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      iVar3 = 2;\n      yyerror((char *)in_RDI);\n      plVar5 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    pYVar9 = pYVar8;\n    __src = plVar5;\n    plVar11 = plVar15;\n  } while ((int)lVar16 != 3);\n  iVar3 = 0;\nLAB_00104ca5:\n  if (plVar5 != (list *)yyssa) {\nLAB_00104cac:\n    free(plVar5);\n  }\n  return iVar3;\n}" primitive_type (function_declarator "yyparse(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  char cVar1;\n  short sVar2;\n  int iVar3;\n  uint uVar4;\n  list *plVar5;\n  uint uVar6;\n  ulong uVar7;\n  YYSTYPE *pYVar8;\n  YYSTYPE *pYVar9;\n  ulong uVar10;\n  list *plVar11;\n  yytype_uint8 *in_RDI;\n  list *__src;\n  YYSTYPE YVar12;\n  uint uVar13;\n  long lVar14;\n  list *plVar15;\n  long lVar16;\n  YYSTYPE *local_830;\n  yytype_int16 yStack_80a;\n  yytype_int16 yyssa [200];\n  YYSTYPE yyvsa [200];\n  \n  lVar16 = 0;\n  uVar10 = 200;\n  yynerrs = 0;\n  local_830 = yyvsa;\n  yychar = -2;\n  yyssa[0] = 0;\n  iVar3 = 0;\n  pYVar9 = local_830;\n  __src = (list *)yyssa;\n  plVar11 = (list *)yyssa;\n  do {\n    uVar13 = (uint)yypact[lVar16];\n    plVar5 = __src;\n    if (uVar13 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];\n      if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }\n    }\n    else {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\n    }\nLAB_00104aff:\n    uVar7 = uVar10 * 2;\n    plVar15 = (list *)((long)&plVar11->name + 2);\n    *(short *)((long)&plVar11->name + 2) = (short)lVar16;\n    if ((list *)((long)__src + (uVar7 - 2)) <= plVar15) {\n      lVar14 = (long)plVar15 - (long)__src >> 1;\n      if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      iVar3 = 2;\n      yyerror((char *)in_RDI);\n      plVar5 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    pYVar9 = pYVar8;\n    __src = plVar5;\n    plVar11 = plVar15;\n  } while ((int)lVar16 != 3);\n  iVar3 = 0;\nLAB_00104ca5:\n  if (plVar5 != (list *)yyssa) {\nLAB_00104cac:\n    free(plVar5);\n  }\n  return iVar3;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "short sVar2;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "list *plVar5;" type_identifier (pointer_declarator "*plVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "YYSTYPE *pYVar8;" type_identifier (pointer_declarator "*pYVar8" * identifier) ;) (declaration "YYSTYPE *pYVar9;" type_identifier (pointer_declarator "*pYVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "list *plVar11;" type_identifier (pointer_declarator "*plVar11" * identifier) ;) (declaration "yytype_uint8 *in_RDI;" type_identifier (pointer_declarator "*in_RDI" * identifier) ;) (declaration "list *__src;" type_identifier (pointer_declarator "*__src" * identifier) ;) (declaration "YYSTYPE YVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "long lVar14;" (sized_type_specifier "long" long) identifier ;) (declaration "list *plVar15;" type_identifier (pointer_declarator "*plVar15" * identifier) ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "YYSTYPE *local_830;" type_identifier (pointer_declarator "*local_830" * identifier) ;) (declaration "yytype_int16 yStack_80a;" type_identifier 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 "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 200;" (assignment_expression "uVar10 = 200" identifier = number_literal) ;) (expression_statement "yynerrs = 0;" (assignment_expression "yynerrs = 0" identifier = number_literal) ;) (expression_statement "local_830 = yyvsa;" (assignment_expression "local_830 = yyvsa" identifier = identifier) ;) (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 "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (expression_statement "pYVar9 = local_830;" (assignment_expression "pYVar9 = local_830" identifier = identifier) ;) (expression_statement "__src = (list *)yyssa;" (assignment_expression "__src = (list *)yyssa" identifier = (cast_expression "(list *)yyssa" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "plVar11 = (list *)yyssa;" (assignment_expression "plVar11 = (list *)yyssa" identifier = (cast_expression "(list *)yyssa" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    uVar13 = (uint)yypact[lVar16];\n    plVar5 = __src;\n    if (uVar13 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];\n      if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }\n    }\n    else {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\n    }\nLAB_00104aff:\n    uVar7 = uVar10 * 2;\n    plVar15 = (list *)((long)&plVar11->name + 2);\n    *(short *)((long)&plVar11->name + 2) = (short)lVar16;\n    if ((list *)((long)__src + (uVar7 - 2)) <= plVar15) {\n      lVar14 = (long)plVar15 - (long)__src >> 1;\n      if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      iVar3 = 2;\n      yyerror((char *)in_RDI);\n      plVar5 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    pYVar9 = pYVar8;\n    __src = plVar5;\n    plVar11 = plVar15;\n  } while ((int)lVar16 != 3);" do (compound_statement "{\n    uVar13 = (uint)yypact[lVar16];\n    plVar5 = __src;\n    if (uVar13 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];\n      if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }\n    }\n    else {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\n    }\nLAB_00104aff:\n    uVar7 = uVar10 * 2;\n    plVar15 = (list *)((long)&plVar11->name + 2);\n    *(short *)((long)&plVar11->name + 2) = (short)lVar16;\n    if ((list *)((long)__src + (uVar7 - 2)) <= plVar15) {\n      lVar14 = (long)plVar15 - (long)__src >> 1;\n      if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      iVar3 = 2;\n      yyerror((char *)in_RDI);\n      plVar5 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    pYVar9 = pYVar8;\n    __src = plVar5;\n    plVar11 = plVar15;\n  }" { (expression_statement "uVar13 = (uint)yypact[lVar16];" (assignment_expression "uVar13 = (uint)yypact[lVar16]" identifier = (cast_expression "(uint)yypact[lVar16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "yypact[lVar16]" identifier [ identifier ]))) ;) (expression_statement "plVar5 = __src;" (assignment_expression "plVar5 = __src" identifier = identifier) ;) (if_statement "if (uVar13 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];\n      if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }\n    }\n    else {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\n    }" if (parenthesized_expression "(uVar13 == 0xfffffff2)" ( (binary_expression "uVar13 == 0xfffffff2" identifier == number_literal) )) (compound_statement "{\nLAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];\n      if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }\n    }" { (labeled_statement "LAB_00104bf8:\n      uVar6 = (uint)"\x02"[lVar16];" statement_identifier : (expression_statement "uVar6 = (uint)"\x02"[lVar16];" (assignment_expression "uVar6 = (uint)"\x02"[lVar16]" identifier = (cast_expression "(uint)"\x02"[lVar16]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression ""\x02"[lVar16]" (string_literal ""\x02"" " escape_sequence ") [ identifier ]))) ;)) (if_statement "if ("\x02"[lVar16] == 0) {\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }\n      else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }" if (parenthesized_expression "("\x02"[lVar16] == 0)" ( (binary_expression ""\x02"[lVar16] == 0" (subscript_expression ""\x02"[lVar16]" (string_literal ""\x02"" " escape_sequence ") [ identifier ]) == number_literal) )) (compound_statement "{\n        if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }\n        while ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }\n        pYVar8 = pYVar9 + 1;\n        iVar3 = 3;\n        *pYVar8 = yylval;\n      }" { (if_statement "if (iVar3 == 0) {\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }\n        else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n          yynerrs = yynerrs + 1;\n          yyerror((char *)in_RDI);\n        }" { (expression_statement "yynerrs = yynerrs + 1;" (assignment_expression "yynerrs = yynerrs + 1" identifier = (binary_expression "yynerrs + 1" identifier + number_literal)) ;) (expression_statement "yyerror((char *)in_RDI);" (call_expression "yyerror((char *)in_RDI)" identifier (argument_list "((char *)in_RDI)" ( (cast_expression "(char *)in_RDI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) }) (else_clause "else if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }" else (if_statement "if (iVar3 == 3) {\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }" if (parenthesized_expression "(iVar3 == 3)" ( (binary_expression "iVar3 == 3" identifier == number_literal) )) (compound_statement "{\n          if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            yychar = -2;\n          }\n        }" { (if_statement "if (yychar < 1) {\n            if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\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              iVar3 = 1;\n              goto LAB_00104ca5;\n            }\n          }" { (if_statement "if (yychar == 0) {\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }" if (parenthesized_expression "(yychar == 0)" ( (binary_expression "yychar == 0" identifier == number_literal) )) (compound_statement "{\n              iVar3 = 1;\n              goto LAB_00104ca5;\n            }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104ca5;" 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 ((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))) {\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }" while (parenthesized_expression "((((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01')))" ( (parenthesized_expression "(((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'))" ( (binary_expression "((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')) ||\n               (lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01')" (parenthesized_expression "((uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01'))" ( (binary_expression "(uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)) ||\n                ("\r"[(int)uVar13] != '\x01')" (parenthesized_expression "(uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13))" ( (binary_expression "uVar13 == 0xfffffff2 || (uVar13 = uVar13 + 1, 0x22 < uVar13)" (binary_expression "uVar13 == 0xfffffff2" identifier == number_literal) || (parenthesized_expression "(uVar13 = uVar13 + 1, 0x22 < uVar13)" ( (comma_expression "uVar13 = uVar13 + 1, 0x22 < uVar13" (assignment_expression "uVar13 = uVar13 + 1" identifier = (binary_expression "uVar13 + 1" identifier + number_literal)) , (binary_expression "0x22 < uVar13" number_literal < identifier)) ))) )) || (parenthesized_expression "("\r"[(int)uVar13] != '\x01')" ( (binary_expression ""\r"[(int)uVar13] != '\x01'" (subscript_expression ""\r"[(int)uVar13]" (string_literal ""\r"" " escape_sequence ") [ (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01')" ( (comma_expression "lVar16 = (long)yytable[(int)uVar13], yytable[(int)uVar13] < '\x01'" (assignment_expression "lVar16 = (long)yytable[(int)uVar13]" identifier = (cast_expression "(long)yytable[(int)uVar13]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "yytable[(int)uVar13]" identifier [ (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]))) , (binary_expression "yytable[(int)uVar13] < '\x01'" (subscript_expression "yytable[(int)uVar13]" identifier [ (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]) < (char_literal "'\x01'" ' escape_sequence '))) ))) )) )) (compound_statement "{\n          if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }\n          plVar11 = (list *)((long)&plVar11[-1].next + 6);\n          pYVar9 = pYVar9 + -1;\n          uVar13 = (uint)yypact[*(short *)&plVar11->name];\n        }" { (if_statement "if (plVar11 == __src) {\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }" if (parenthesized_expression "(plVar11 == __src)" ( (binary_expression "plVar11 == __src" identifier == identifier) )) (compound_statement "{\n            iVar3 = 1;\n            plVar5 = plVar11;\n            goto LAB_00104ca5;\n          }" { (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (expression_statement "plVar5 = plVar11;" (assignment_expression "plVar5 = plVar11" identifier = identifier) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) (expression_statement "plVar11 = (list *)((long)&plVar11[-1].next + 6);" (assignment_expression "plVar11 = (list *)((long)&plVar11[-1].next + 6)" identifier = (cast_expression "(list *)((long)&plVar11[-1].next + 6)" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&plVar11[-1].next + 6)" ( (binary_expression "(long)&plVar11[-1].next + 6" (cast_expression "(long)&plVar11[-1].next" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&plVar11[-1].next" & (field_expression "plVar11[-1].next" (subscript_expression "plVar11[-1]" identifier [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "pYVar9 = pYVar9 + -1;" (assignment_expression "pYVar9 = pYVar9 + -1" identifier = (binary_expression "pYVar9 + -1" identifier + number_literal)) ;) (expression_statement "uVar13 = (uint)yypact[*(short *)&plVar11->name];" (assignment_expression "uVar13 = (uint)yypact[*(short *)&plVar11->name]" identifier = (cast_expression "(uint)yypact[*(short *)&plVar11->name]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "yypact[*(short *)&plVar11->name]" identifier [ (pointer_expression "*(short *)&plVar11->name" * (cast_expression "(short *)&plVar11->name" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&plVar11->name" & (field_expression "plVar11->name" identifier -> field_identifier)))) ]))) ;) })) (expression_statement "pYVar8 = pYVar9 + 1;" (assignment_expression "pYVar8 = pYVar9 + 1" identifier = (binary_expression "pYVar9 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = 3;" (assignment_expression "iVar3 = 3" identifier = number_literal) ;) (expression_statement "*pYVar8 = yylval;" (assignment_expression "*pYVar8 = yylval" (pointer_expression "*pYVar8" * identifier) = identifier) ;) }) (else_clause "else {\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }" else (compound_statement "{\nLAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];\n        YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];\n        switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }\n        plVar11 = (list *)((long)plVar11 + uVar7 * -2);\n        sVar2 = *(short *)&plVar11->name;\n        pYVar8 = pYVar9 + (1 - uVar7);\n        pYVar9[1 - uVar7] = YVar12;\n        uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;\n        if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }\n        lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];\n      }" { (labeled_statement "LAB_00104a58:\n        uVar7 = (ulong)""[(int)uVar6];" statement_identifier : (expression_statement "uVar7 = (ulong)""[(int)uVar6];" (assignment_expression "uVar7 = (ulong)""[(int)uVar6]" identifier = (cast_expression "(ulong)""[(int)uVar6]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression """[(int)uVar6]" (string_literal """" " ") [ (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;)) (expression_statement "YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])];" (assignment_expression "YVar12 = pYVar9[(int)(1 - (uint)""[(int)uVar6])]" identifier = (subscript_expression "pYVar9[(int)(1 - (uint)""[(int)uVar6])]" identifier [ (cast_expression "(int)(1 - (uint)""[(int)uVar6])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(1 - (uint)""[(int)uVar6])" ( (binary_expression "1 - (uint)""[(int)uVar6]" number_literal - (cast_expression "(uint)""[(int)uVar6]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[(int)uVar6]" (string_literal """" " ") [ (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ))) ])) ;) (switch_statement "switch(uVar6) {\n        case 2:\n        case 6:\n          prompt();\n          break;\n        case 0x13:\n          ar_end();\n          return 0;\n        case 0x15:\n          yyerror((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;\n        case 0x2a:\n          verbose = (int)(verbose == 0);\n        }" switch (parenthesized_expression "(uVar6)" ( 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((char *)in_RDI);\n          break;\n        case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;\n        case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;\n        case 0x19:\n          ar_clear();\n          break;\n        case 0x1a:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;\n        case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;\n        case 0x1c:\n          ar_list();\n          break;\n        case 0x1d:\n          ar_save();\n          break;\n        case 0x1e:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;\n        case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;\n        case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;\n        case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;\n        case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          YVar12.name = (char *)0x0;\n          break;\n        case 0x24:\n          YVar12 = pYVar9[-1];\n          break;\n        case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\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((char *)in_RDI);\n          break;" case number_literal : (expression_statement "yyerror((char *)in_RDI);" (call_expression "yyerror((char *)in_RDI)" identifier (argument_list "((char *)in_RDI)" ( (cast_expression "(char *)in_RDI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_extract((list *)in_RDI);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9->list;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9->list" identifier = (cast_expression "(yytype_uint8 *)pYVar9->list" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9->list" identifier -> field_identifier))) ;) (expression_statement "ar_extract((list *)in_RDI);" (call_expression "ar_extract((list *)in_RDI)" identifier (argument_list "((list *)in_RDI)" ( (cast_expression "(list *)in_RDI" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_replace((list *)in_RDI);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9->list;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9->list" identifier = (cast_expression "(yytype_uint8 *)pYVar9->list" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9->list" identifier -> field_identifier))) ;) (expression_statement "ar_replace((list *)in_RDI);" (call_expression "ar_replace((list *)in_RDI)" identifier (argument_list "((list *)in_RDI)" ( (cast_expression "(list *)in_RDI" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) 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          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_delete((list *)in_RDI);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9->list;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9->list" identifier = (cast_expression "(yytype_uint8 *)pYVar9->list" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9->list" identifier -> field_identifier))) ;) (expression_statement "ar_delete((list *)in_RDI);" (call_expression "ar_delete((list *)in_RDI)" identifier (argument_list "((list *)in_RDI)" ( (cast_expression "(list *)in_RDI" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1b:\n          in_RDI = (yytype_uint8 *)pYVar9->list;\n          ar_addmod((list *)in_RDI);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9->list;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9->list" identifier = (cast_expression "(yytype_uint8 *)pYVar9->list" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9->list" identifier -> field_identifier))) ;) (expression_statement "ar_addmod((list *)in_RDI);" (call_expression "ar_addmod((list *)in_RDI)" identifier (argument_list "((list *)in_RDI)" ( (cast_expression "(list *)in_RDI" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) 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          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,0);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9->name;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9->name" identifier = (cast_expression "(yytype_uint8 *)pYVar9->name" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9->name" identifier -> field_identifier))) ;) (expression_statement "ar_open((char *)in_RDI,0);" (call_expression "ar_open((char *)in_RDI,0)" identifier (argument_list "((char *)in_RDI,0)" ( (cast_expression "(char *)in_RDI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1f:\n          in_RDI = (yytype_uint8 *)pYVar9->name;\n          ar_open((char *)in_RDI,1);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9->name;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9->name" identifier = (cast_expression "(yytype_uint8 *)pYVar9->name" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9->name" identifier -> field_identifier))) ;) (expression_statement "ar_open((char *)in_RDI,1);" (call_expression "ar_open((char *)in_RDI,1)" identifier (argument_list "((char *)in_RDI,1)" ( (cast_expression "(char *)in_RDI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x20:\n          in_RDI = (yytype_uint8 *)pYVar9[-1].name;\n          ar_addlib((char *)in_RDI,pYVar9->list);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9[-1].name;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9[-1].name" identifier = (cast_expression "(yytype_uint8 *)pYVar9[-1].name" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9[-1].name" (subscript_expression "pYVar9[-1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "ar_addlib((char *)in_RDI,pYVar9->list);" (call_expression "ar_addlib((char *)in_RDI,pYVar9->list)" identifier (argument_list "((char *)in_RDI,pYVar9->list)" ( (cast_expression "(char *)in_RDI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "pYVar9->list" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x21:\n          in_RDI = (yytype_uint8 *)pYVar9[-2].name;\n          ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)pYVar9[-2].name;" (assignment_expression "in_RDI = (yytype_uint8 *)pYVar9[-2].name" identifier = (cast_expression "(yytype_uint8 *)pYVar9[-2].name" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pYVar9[-2].name" (subscript_expression "pYVar9[-2]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name);" (call_expression "ar_directory((char *)in_RDI,pYVar9[-1].list,pYVar9->name)" identifier (argument_list "((char *)in_RDI,pYVar9[-1].list,pYVar9->name)" ( (cast_expression "(char *)in_RDI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "pYVar9[-1].list" (subscript_expression "pYVar9[-1]" identifier [ number_literal ]) . field_identifier) , (field_expression "pYVar9->name" identifier -> field_identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x22:\n          YVar12.list = *(list **)pYVar9;\n          break;" case number_literal : (expression_statement "YVar12.list = *(list **)pYVar9;" (assignment_expression "YVar12.list = *(list **)pYVar9" (field_expression "YVar12.list" identifier . field_identifier) = (pointer_expression "*(list **)pYVar9" * (cast_expression "(list **)pYVar9" ( (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          YVar12.name = (char *)0x0;\n          break;" case number_literal : (expression_statement "YVar12.name = (char *)0x0;" (assignment_expression "YVar12.name = (char *)0x0" (field_expression "YVar12.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          YVar12 = pYVar9[-1];\n          break;" case number_literal : (expression_statement "YVar12 = pYVar9[-1];" (assignment_expression "YVar12 = pYVar9[-1]" identifier = (subscript_expression "pYVar9[-1]" identifier [ number_literal ])) ;) (break_statement "break;" break ;)) (case_statement "case 0x26:\n          in_RDI = (yytype_uint8 *)0x10;\n          YVar12.name = (char *)malloc(0x10);\n          (YVar12.list)->next = (list *)pYVar9[-2];\n          (YVar12.list)->name = (char *)*(list **)pYVar9;\n          break;" case number_literal : (expression_statement "in_RDI = (yytype_uint8 *)0x10;" (assignment_expression "in_RDI = (yytype_uint8 *)0x10" identifier = (cast_expression "(yytype_uint8 *)0x10" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "YVar12.name = (char *)malloc(0x10);" (assignment_expression "YVar12.name = (char *)malloc(0x10)" (field_expression "YVar12.name" identifier . field_identifier) = (cast_expression "(char *)malloc(0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "(YVar12.list)->next = (list *)pYVar9[-2];" (assignment_expression "(YVar12.list)->next = (list *)pYVar9[-2]" (field_expression "(YVar12.list)->next" (parenthesized_expression "(YVar12.list)" ( (field_expression "YVar12.list" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(list *)pYVar9[-2]" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pYVar9[-2]" identifier [ number_literal ]))) ;) (expression_statement "(YVar12.list)->name = (char *)*(list **)pYVar9;" (assignment_expression "(YVar12.list)->name = (char *)*(list **)pYVar9" (field_expression "(YVar12.list)->name" (parenthesized_expression "(YVar12.list)" ( (field_expression "YVar12.list" identifier . field_identifier) )) -> field_identifier) = (cast_expression "(char *)*(list **)pYVar9" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*(list **)pYVar9" * (cast_expression "(list **)pYVar9" ( (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 "plVar11 = (list *)((long)plVar11 + uVar7 * -2);" (assignment_expression "plVar11 = (list *)((long)plVar11 + uVar7 * -2)" identifier = (cast_expression "(list *)((long)plVar11 + uVar7 * -2)" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + uVar7 * -2)" ( (binary_expression "(long)plVar11 + uVar7 * -2" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar7 * -2" identifier * number_literal)) )))) ;) (expression_statement "sVar2 = *(short *)&plVar11->name;" (assignment_expression "sVar2 = *(short *)&plVar11->name" identifier = (pointer_expression "*(short *)&plVar11->name" * (cast_expression "(short *)&plVar11->name" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (pointer_expression "&plVar11->name" & (field_expression "plVar11->name" identifier -> field_identifier))))) ;) (expression_statement "pYVar8 = pYVar9 + (1 - uVar7);" (assignment_expression "pYVar8 = pYVar9 + (1 - uVar7)" identifier = (binary_expression "pYVar9 + (1 - uVar7)" identifier + (parenthesized_expression "(1 - uVar7)" ( (binary_expression "1 - uVar7" number_literal - identifier) )))) ;) (expression_statement "pYVar9[1 - uVar7] = YVar12;" (assignment_expression "pYVar9[1 - uVar7] = YVar12" (subscript_expression "pYVar9[1 - uVar7]" identifier [ (binary_expression "1 - uVar7" number_literal - identifier) ]) = identifier) ;) (expression_statement "uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2;" (assignment_expression "uVar13 = (int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2" identifier = (binary_expression "(int)yypgoto[(int)(""[(int)uVar6] - 0x18)] + (int)sVar2" (cast_expression "(int)yypgoto[(int)(""[(int)uVar6] - 0x18)]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "yypgoto[(int)(""[(int)uVar6] - 0x18)]" identifier [ (cast_expression "(int)(""[(int)uVar6] - 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(""[(int)uVar6] - 0x18)" ( (binary_expression """[(int)uVar6] - 0x18" (subscript_expression """[(int)uVar6]" (string_literal """" " ") [ (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal) ))) ])) + (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (uVar13 < 0x23) {\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }" if (parenthesized_expression "(uVar13 < 0x23)" ( (binary_expression "uVar13 < 0x23" identifier < number_literal) )) (compound_statement "{\n          in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];\n          if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }\n        }" { (expression_statement "in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13];" (assignment_expression "in_RDI = (yytype_uint8 *)(ulong)"\r"[(int)uVar13]" identifier = (cast_expression "(yytype_uint8 *)(ulong)"\r"[(int)uVar13]" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(ulong)"\r"[(int)uVar13]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression ""\r"[(int)uVar13]" (string_literal ""\r"" " escape_sequence ") [ (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) ])))) ;) (if_statement "if ((int)sVar2 == (uint)"\r"[(int)uVar13]) {\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }" if (parenthesized_expression "((int)sVar2 == (uint)"\r"[(int)uVar13])" ( (binary_expression "(int)sVar2 == (uint)"\r"[(int)uVar13]" (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier) == (cast_expression "(uint)"\r"[(int)uVar13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression ""\r"[(int)uVar13]" (string_literal ""\r"" " escape_sequence ") [ (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]))) )) (compound_statement "{\n            lVar16 = (long)yytable[(int)uVar13];\n            goto LAB_00104aff;\n          }" { (expression_statement "lVar16 = (long)yytable[(int)uVar13];" (assignment_expression "lVar16 = (long)yytable[(int)uVar13]" identifier = (cast_expression "(long)yytable[(int)uVar13]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "yytable[(int)uVar13]" identifier [ (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (goto_statement "goto LAB_00104aff;" goto statement_identifier ;) })) })) (expression_statement "lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)];" (assignment_expression "lVar16 = (long)yydefgoto[(int)(""[(int)uVar6] - 0x18)]" identifier = (cast_expression "(long)yydefgoto[(int)(""[(int)uVar6] - 0x18)]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (subscript_expression "yydefgoto[(int)(""[(int)uVar6] - 0x18)]" identifier [ (cast_expression "(int)(""[(int)uVar6] - 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(""[(int)uVar6] - 0x18)" ( (binary_expression """[(int)uVar6] - 0x18" (subscript_expression """[(int)uVar6]" (string_literal """" " ") [ (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal) ))) ]))) ;) }))) }) (else_clause "else {\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\n    }" else (compound_statement "{\n      if (yychar == -2) {\n        yychar = yylex();\n      }\n      if (yychar < 1) {\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }\n      if (0x22 < uVar6) goto LAB_00104bf8;\n      in_RDI = "\r";\n      if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;\n      cVar1 = yytable[(int)uVar6];\n      lVar16 = (long)cVar1;\n      uVar6 = -(int)cVar1;\n      if (cVar1 < '\x01') goto LAB_00104a58;\n      yychar = -2;\n      iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);\n      pYVar8 = pYVar9 + 1;\n      *pYVar8 = yylval;\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        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }\n      else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }" if (parenthesized_expression "(yychar < 1)" ( (binary_expression "yychar < 1" identifier < number_literal) )) (compound_statement "{\n        yychar = 0;\n        uVar4 = 0;\n        uVar6 = uVar13;\n      }" { (expression_statement "yychar = 0;" (assignment_expression "yychar = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (expression_statement "uVar6 = uVar13;" (assignment_expression "uVar6 = uVar13" identifier = identifier) ;) }) (else_clause "else if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }" else (if_statement "if (yychar < 0x114) {\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }\n      else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }" if (parenthesized_expression "(yychar < 0x114)" ( (binary_expression "yychar < 0x114" identifier < number_literal) )) (compound_statement "{\n        uVar4 = (uint)""[yychar];\n        uVar6 = uVar13 + uVar4;\n      }" { (expression_statement "uVar4 = (uint)""[yychar];" (assignment_expression "uVar4 = (uint)""[yychar]" identifier = (cast_expression "(uint)""[yychar]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression """[yychar]" (string_literal """" " ") [ identifier ]))) ;) (expression_statement "uVar6 = uVar13 + uVar4;" (assignment_expression "uVar6 = uVar13 + uVar4" identifier = (binary_expression "uVar13 + uVar4" identifier + identifier)) ;) }) (else_clause "else {\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }" else (compound_statement "{\n        uVar4 = 2;\n        uVar6 = uVar13 + 2;\n      }" { (expression_statement "uVar4 = 2;" (assignment_expression "uVar4 = 2" identifier = number_literal) ;) (expression_statement "uVar6 = uVar13 + 2;" (assignment_expression "uVar6 = uVar13 + 2" identifier = (binary_expression "uVar13 + 2" identifier + number_literal)) ;) }))))) (if_statement "if (0x22 < uVar6) goto LAB_00104bf8;" if (parenthesized_expression "(0x22 < uVar6)" ( (binary_expression "0x22 < uVar6" number_literal < identifier) )) (goto_statement "goto LAB_00104bf8;" goto statement_identifier ;)) (expression_statement "in_RDI = "\r";" (assignment_expression "in_RDI = "\r"" identifier = (string_literal ""\r"" " escape_sequence ")) ;) (if_statement "if ("\r"[(int)uVar6] != uVar4) goto LAB_00104bf8;" if (parenthesized_expression "("\r"[(int)uVar6] != uVar4)" ( (binary_expression ""\r"[(int)uVar6] != uVar4" (subscript_expression ""\r"[(int)uVar6]" (string_literal ""\r"" " escape_sequence ") [ (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) ]) != identifier) )) (goto_statement "goto LAB_00104bf8;" goto statement_identifier ;)) (expression_statement "cVar1 = yytable[(int)uVar6];" (assignment_expression "cVar1 = yytable[(int)uVar6]" identifier = (subscript_expression "yytable[(int)uVar6]" identifier [ (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "lVar16 = (long)cVar1;" (assignment_expression "lVar16 = (long)cVar1" identifier = (cast_expression "(long)cVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar6 = -(int)cVar1;" (assignment_expression "uVar6 = -(int)cVar1" identifier = (unary_expression "-(int)cVar1" - (cast_expression "(int)cVar1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (cVar1 < '\x01') goto LAB_00104a58;" if (parenthesized_expression "(cVar1 < '\x01')" ( (binary_expression "cVar1 < '\x01'" identifier < (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_00104a58;" goto statement_identifier ;)) (expression_statement "yychar = -2;" (assignment_expression "yychar = -2" identifier = number_literal) ;) (expression_statement "iVar3 = iVar3 + -1 + (uint)(iVar3 == 0);" (assignment_expression "iVar3 = iVar3 + -1 + (uint)(iVar3 == 0)" identifier = (binary_expression "iVar3 + -1 + (uint)(iVar3 == 0)" (binary_expression "iVar3 + -1" identifier + number_literal) + (call_expression "(uint)(iVar3 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) ))))) ;) (expression_statement "pYVar8 = pYVar9 + 1;" (assignment_expression "pYVar8 = pYVar9 + 1" identifier = (binary_expression "pYVar9 + 1" identifier + number_literal)) ;) (expression_statement "*pYVar8 = yylval;" (assignment_expression "*pYVar8 = yylval" (pointer_expression "*pYVar8" * identifier) = identifier) ;) }))) (labeled_statement "LAB_00104aff:\n    uVar7 = uVar10 * 2;" statement_identifier : (expression_statement "uVar7 = uVar10 * 2;" (assignment_expression "uVar7 = uVar10 * 2" identifier = (binary_expression "uVar10 * 2" identifier * number_literal)) ;)) (expression_statement "plVar15 = (list *)((long)&plVar11->name + 2);" (assignment_expression "plVar15 = (list *)((long)&plVar11->name + 2)" identifier = (cast_expression "(list *)((long)&plVar11->name + 2)" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&plVar11->name + 2)" ( (binary_expression "(long)&plVar11->name + 2" (cast_expression "(long)&plVar11->name" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&plVar11->name" & (field_expression "plVar11->name" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "*(short *)((long)&plVar11->name + 2) = (short)lVar16;" (assignment_expression "*(short *)((long)&plVar11->name + 2) = (short)lVar16" (pointer_expression "*(short *)((long)&plVar11->name + 2)" * (cast_expression "(short *)((long)&plVar11->name + 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&plVar11->name + 2)" ( (binary_expression "(long)&plVar11->name + 2" (cast_expression "(long)&plVar11->name" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&plVar11->name" & (field_expression "plVar11->name" identifier -> field_identifier))) + number_literal) )))) = (cast_expression "(short)lVar16" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if ((list *)((long)__src + (uVar7 - 2)) <= plVar15) {\n      lVar14 = (long)plVar15 - (long)__src >> 1;\n      if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      iVar3 = 2;\n      yyerror((char *)in_RDI);\n      plVar5 = __src;\n      goto LAB_00104ca5;\n    }" if (parenthesized_expression "((list *)((long)__src + (uVar7 - 2)) <= plVar15)" ( (binary_expression "(list *)((long)__src + (uVar7 - 2)) <= plVar15" (cast_expression "(list *)((long)__src + (uVar7 - 2))" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__src + (uVar7 - 2))" ( (binary_expression "(long)__src + (uVar7 - 2)" (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar7 - 2)" ( (binary_expression "uVar7 - 2" identifier - number_literal) ))) ))) <= identifier) )) (compound_statement "{\n      lVar14 = (long)plVar15 - (long)__src >> 1;\n      if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      iVar3 = 2;\n      yyerror((char *)in_RDI);\n      plVar5 = __src;\n      goto LAB_00104ca5;\n    }" { (expression_statement "lVar14 = (long)plVar15 - (long)__src >> 1;" (assignment_expression "lVar14 = (long)plVar15 - (long)__src >> 1" identifier = (binary_expression "(long)plVar15 - (long)__src >> 1" (binary_expression "(long)plVar15 - (long)__src" (cast_expression "(long)plVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar10 < 10000) {\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }" if (parenthesized_expression "(uVar10 < 10000)" ( (binary_expression "uVar10 < 10000" identifier < number_literal) )) (compound_statement "{\n        uVar10 = 10000;\n        if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }\n        in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);\n        plVar5 = (list *)malloc((size_t)in_RDI);\n        if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }\n      }" { (expression_statement "uVar10 = 10000;" (assignment_expression "uVar10 = 10000" identifier = number_literal) ;) (if_statement "if (uVar7 < 0x2711) {\n          uVar10 = uVar7;\n        }" if (parenthesized_expression "(uVar7 < 0x2711)" ( (binary_expression "uVar7 < 0x2711" identifier < number_literal) )) (compound_statement "{\n          uVar10 = uVar7;\n        }" { (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" identifier = identifier) ;) })) (expression_statement "in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7);" (assignment_expression "in_RDI = (yytype_uint8 *)(uVar10 * 10 + 7)" identifier = (cast_expression "(yytype_uint8 *)(uVar10 * 10 + 7)" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar10 * 10 + 7)" ( (binary_expression "uVar10 * 10 + 7" (binary_expression "uVar10 * 10" identifier * number_literal) + number_literal) )))) ;) (expression_statement "plVar5 = (list *)malloc((size_t)in_RDI);" (assignment_expression "plVar5 = (list *)malloc((size_t)in_RDI)" identifier = (cast_expression "(list *)malloc((size_t)in_RDI)" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc((size_t)in_RDI)" identifier (argument_list "((size_t)in_RDI)" ( (cast_expression "(size_t)in_RDI" ( (type_descriptor "size_t" primitive_type) ) identifier) ))))) ;) (if_statement "if (plVar5 != (list *)0x0) {\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }" if (parenthesized_expression "(plVar5 != (list *)0x0)" ( (binary_expression "plVar5 != (list *)0x0" identifier != (cast_expression "(list *)0x0" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(plVar5,__src,lVar14 * 2 + 2);\n          in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);\n          local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);\n          if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }\n          plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);\n          pYVar8 = local_830 + lVar14;\n          if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;\n          iVar3 = 1;\n          goto LAB_00104cac;\n        }" { (expression_statement "memcpy(plVar5,__src,lVar14 * 2 + 2);" (call_expression "memcpy(plVar5,__src,lVar14 * 2 + 2)" identifier (argument_list "(plVar5,__src,lVar14 * 2 + 2)" ( identifier , identifier , (binary_expression "lVar14 * 2 + 2" (binary_expression "lVar14 * 2" identifier * number_literal) + number_literal) ))) ;) (expression_statement "in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2);" (assignment_expression "in_RDI = (yytype_uint8 *)((long)&plVar5->name + uVar10 * 2)" identifier = (cast_expression "(yytype_uint8 *)((long)&plVar5->name + uVar10 * 2)" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&plVar5->name + uVar10 * 2)" ( (binary_expression "(long)&plVar5->name + uVar10 * 2" (cast_expression "(long)&plVar5->name" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&plVar5->name" & (field_expression "plVar5->name" identifier -> field_identifier))) + (binary_expression "uVar10 * 2" identifier * number_literal)) )))) ;) (expression_statement "local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8);" (assignment_expression "local_830 = (YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8)" identifier = (cast_expression "(YYSTYPE *)memcpy(in_RDI,local_830,(lVar14 + 1) * 8)" ( (type_descriptor "YYSTYPE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(in_RDI,local_830,(lVar14 + 1) * 8)" identifier (argument_list "(in_RDI,local_830,(lVar14 + 1) * 8)" ( identifier , identifier , (binary_expression "(lVar14 + 1) * 8" (parenthesized_expression "(lVar14 + 1)" ( (binary_expression "lVar14 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (if_statement "if (__src != (list *)yyssa) {\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }" if (parenthesized_expression "(__src != (list *)yyssa)" ( (binary_expression "__src != (list *)yyssa" identifier != (cast_expression "(list *)yyssa" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n            free(__src);\n            in_RDI = (yytype_uint8 *)__src;\n          }" { (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) (expression_statement "in_RDI = (yytype_uint8 *)__src;" (assignment_expression "in_RDI = (yytype_uint8 *)__src" identifier = (cast_expression "(yytype_uint8 *)__src" ( (type_descriptor "yytype_uint8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) })) (expression_statement "plVar15 = (list *)((long)&plVar5->name + lVar14 * 2);" (assignment_expression "plVar15 = (list *)((long)&plVar5->name + lVar14 * 2)" identifier = (cast_expression "(list *)((long)&plVar5->name + lVar14 * 2)" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&plVar5->name + lVar14 * 2)" ( (binary_expression "(long)&plVar5->name + lVar14 * 2" (cast_expression "(long)&plVar5->name" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&plVar5->name" & (field_expression "plVar5->name" identifier -> field_identifier))) + (binary_expression "lVar14 * 2" identifier * number_literal)) )))) ;) (expression_statement "pYVar8 = local_830 + lVar14;" (assignment_expression "pYVar8 = local_830 + lVar14" identifier = (binary_expression "local_830 + lVar14" identifier + identifier)) ;) (if_statement "if (plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)) goto LAB_00104be1;" if (parenthesized_expression "(plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2))" ( (binary_expression "plVar15 < (list *)((long)plVar5 + uVar10 * 2 + -2)" identifier < (cast_expression "(list *)((long)plVar5 + uVar10 * 2 + -2)" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar5 + uVar10 * 2 + -2)" ( (binary_expression "(long)plVar5 + uVar10 * 2 + -2" (binary_expression "(long)plVar5 + uVar10 * 2" (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar10 * 2" identifier * number_literal)) + number_literal) )))) )) (goto_statement "goto LAB_00104be1;" goto statement_identifier ;)) (expression_statement "iVar3 = 1;" (assignment_expression "iVar3 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104cac;" goto statement_identifier ;) })) })) (expression_statement "iVar3 = 2;" (assignment_expression "iVar3 = 2" identifier = number_literal) ;) (expression_statement "yyerror((char *)in_RDI);" (call_expression "yyerror((char *)in_RDI)" identifier (argument_list "((char *)in_RDI)" ( (cast_expression "(char *)in_RDI" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "plVar5 = __src;" (assignment_expression "plVar5 = __src" identifier = identifier) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) (labeled_statement "LAB_00104be1:\n    pYVar9 = pYVar8;" statement_identifier : (expression_statement "pYVar9 = pYVar8;" (assignment_expression "pYVar9 = pYVar8" identifier = identifier) ;)) (expression_statement "__src = plVar5;" (assignment_expression "__src = plVar5" identifier = identifier) ;) (expression_statement "plVar11 = plVar15;" (assignment_expression "plVar11 = plVar15" identifier = identifier) ;) }) while (parenthesized_expression "((int)lVar16 != 3)" ( (binary_expression "(int)lVar16 != 3" (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) ;) (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00104ca5:\n  if (plVar5 != (list *)yyssa) {\nLAB_00104cac:\n    free(plVar5);\n  }" statement_identifier : (if_statement "if (plVar5 != (list *)yyssa) {\nLAB_00104cac:\n    free(plVar5);\n  }" if (parenthesized_expression "(plVar5 != (list *)yyssa)" ( (binary_expression "plVar5 != (list *)yyssa" identifier != (cast_expression "(list *)yyssa" ( (type_descriptor "list *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\nLAB_00104cac:\n    free(plVar5);\n  }" { (labeled_statement "LAB_00104cac:\n    free(plVar5);" statement_identifier : (expression_statement "free(plVar5);" (call_expression "free(plVar5)" identifier (argument_list "(plVar5)" ( identifier ))) ;)) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "undefined8 FUN_00104950(void)\n\n{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}\n\n" (function_definition "undefined8 FUN_00104950(void)\n\n{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}" type_identifier (function_declarator "FUN_00104950(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}" { (declaration "short *psVar1;" (sized_type_specifier "short" short) (pointer_declarator "*psVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "short sVar3;" (sized_type_specifier "short" short) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "short *psVar6;" (sized_type_specifier "short" short) (pointer_declarator "*psVar6" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "undefined8 uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "short *psVar13;" (sized_type_specifier "short" short) (pointer_declarator "*psVar13" * identifier) ;) (declaration "short *__src;" (sized_type_specifier "short" short) (pointer_declarator "*__src" * identifier) ;) (declaration "undefined8 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "short *psVar17;" (sized_type_specifier "short" short) (pointer_declarator "*psVar17" * identifier) ;) (declaration "long lVar18;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_830;" type_identifier (pointer_declarator "*local_830" * identifier) ;) (declaration "short asStack_80a [201];" (sized_type_specifier "short" short) (array_declarator "asStack_80a [201]" identifier [ number_literal ]) ;) (declaration "undefined8 local_678 [201];" type_identifier (array_declarator "local_678 [201]" identifier [ number_literal ]) ;) (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar12 = 200;" (assignment_expression "uVar12 = 200" identifier = number_literal) ;) (expression_statement "_DAT_00110690 = 0;" (assignment_expression "_DAT_00110690 = 0" identifier = number_literal) ;) (expression_statement "psVar1 = asStack_80a + 1;" (assignment_expression "psVar1 = asStack_80a + 1" identifier = (binary_expression "asStack_80a + 1" identifier + number_literal)) ;) (expression_statement "local_830 = local_678;" (assignment_expression "local_830 = local_678" identifier = identifier) ;) (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" identifier = number_literal) ;) (expression_statement "asStack_80a[1] = 0;" (assignment_expression "asStack_80a[1] = 0" (subscript_expression "asStack_80a[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "puVar10 = local_830;" (assignment_expression "puVar10 = local_830" identifier = identifier) ;) (expression_statement "__src = psVar1;" (assignment_expression "__src = psVar1" identifier = identifier) ;) (expression_statement "psVar13 = psVar1;" (assignment_expression "psVar13 = psVar1" identifier = identifier) ;) (do_statement "do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);" do (compound_statement "{\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  }" { (expression_statement "uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];" (assignment_expression "uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18]" identifier = (subscript_expression "(uint)(char)(&DAT_0010b2e0)[lVar18]" (call_expression "(uint)(char)(&DAT_0010b2e0)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0010b2e0)" ( (pointer_expression "&DAT_0010b2e0" & identifier) ))) [ identifier ])) ;) (expression_statement "psVar6 = __src;" (assignment_expression "psVar6 = __src" identifier = identifier) ;) (if_statement "if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" if (parenthesized_expression "(uVar15 == 0xfffffff2)" ( (binary_expression "uVar15 == 0xfffffff2" identifier == number_literal) )) (compound_statement "{\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }" { (labeled_statement "LAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];" statement_identifier : (expression_statement "uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];" (assignment_expression "uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18]" identifier = (subscript_expression "(uint)(byte)(&DAT_0010b2a0)[lVar18]" (call_expression "(uint)(byte)(&DAT_0010b2a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b2a0)" ( (pointer_expression "&DAT_0010b2a0" & identifier) ))) [ identifier ])) ;)) (if_statement "if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" if (parenthesized_expression "((&DAT_0010b2a0)[lVar18] == 0)" ( (binary_expression "(&DAT_0010b2a0)[lVar18] == 0" (subscript_expression "(&DAT_0010b2a0)[lVar18]" (parenthesized_expression "(&DAT_0010b2a0)" ( (pointer_expression "&DAT_0010b2a0" & identifier) )) [ identifier ]) == number_literal) )) (compound_statement "{\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }" { (if_statement "if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }" { (expression_statement "_DAT_00110690 = _DAT_00110690 + 1;" (assignment_expression "_DAT_00110690 = _DAT_00110690 + 1" identifier = (binary_expression "_DAT_00110690 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" else (if_statement "if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" if (parenthesized_expression "(iVar4 == 3)" ( (binary_expression "iVar4 == 3" identifier == number_literal) )) (compound_statement "{\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" { (if_statement "if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }" if (parenthesized_expression "(DAT_00110694 < 1)" ( (binary_expression "DAT_00110694 < 1" identifier < number_literal) )) (compound_statement "{\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }" { (if_statement "if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }" if (parenthesized_expression "(DAT_00110694 == 0)" ( (binary_expression "DAT_00110694 == 0" identifier == number_literal) )) (compound_statement "{\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) }) (else_clause "else {\n            DAT_00110694 = -2;\n          }" else (compound_statement "{\n            DAT_00110694 = -2;\n          }" { (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" identifier = number_literal) ;) }))) })))) (while_statement "while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }" while (parenthesized_expression "((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')))" ( (parenthesized_expression "(((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))" ( (binary_expression "((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')" (parenthesized_expression "((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01'))" ( (binary_expression "(uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')" (parenthesized_expression "(uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15))" ( (binary_expression "uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)" (binary_expression "uVar15 == 0xfffffff2" identifier == number_literal) || (parenthesized_expression "(uVar15 = uVar15 + 1, 0x22 < uVar15)" ( (comma_expression "uVar15 = uVar15 + 1, 0x22 < uVar15" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) , (binary_expression "0x22 < uVar15" number_literal < identifier)) ))) )) || (parenthesized_expression "((&DAT_0010b1e0)[(int)uVar15] != '\x01')" ( (binary_expression "(&DAT_0010b1e0)[(int)uVar15] != '\x01'" (subscript_expression "(&DAT_0010b1e0)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b1e0)" ( (pointer_expression "&DAT_0010b1e0" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ]) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) || (parenthesized_expression "(lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')" ( (comma_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15]" identifier = (cast_expression "(long)(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])))) , (binary_expression "(char)(&DAT_0010b220)[(int)uVar15] < '\x01'" (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])) < (char_literal "'\x01'" ' escape_sequence '))) ))) )) )) (compound_statement "{\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }" { (if_statement "if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }" if (parenthesized_expression "(psVar13 == __src)" ( (binary_expression "psVar13 == __src" identifier == identifier) )) (compound_statement "{\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "psVar6 = psVar13;" (assignment_expression "psVar6 = psVar13" identifier = identifier) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) (expression_statement "psVar13 = psVar13 + -1;" (assignment_expression "psVar13 = psVar13 + -1" identifier = (binary_expression "psVar13 + -1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" identifier = (binary_expression "puVar10 + -1" identifier + number_literal)) ;) (expression_statement "uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];" (assignment_expression "uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13]" identifier = (subscript_expression "(uint)(char)(&DAT_0010b2e0)[*psVar13]" (call_expression "(uint)(char)(&DAT_0010b2e0)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(char)" ( identifier ))) (argument_list "(&DAT_0010b2e0)" ( (pointer_expression "&DAT_0010b2e0" & identifier) ))) [ (pointer_expression "*psVar13" * identifier) ])) ;) })) (expression_statement "puVar9 = puVar10 + 1;" (assignment_expression "puVar9 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) (expression_statement "*puVar9 = DAT_00110698;" (assignment_expression "*puVar9 = DAT_00110698" (pointer_expression "*puVar9" * identifier) = identifier) ;) }) (else_clause "else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" else (compound_statement "{\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" { (labeled_statement "LAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];" statement_identifier : (expression_statement "uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];" (assignment_expression "uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7]" identifier = (subscript_expression "(ulong)(byte)(&DAT_0010b160)[(int)uVar7]" (call_expression "(ulong)(byte)(&DAT_0010b160)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b160)" ( (pointer_expression "&DAT_0010b160" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;)) (expression_statement "puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];" (assignment_expression "puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" identifier = (cast_expression "(undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" identifier [ (cast_expression "(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])" ( (binary_expression "1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7]" number_literal - (subscript_expression "(uint)(byte)(&DAT_0010b160)[(int)uVar7]" (call_expression "(uint)(byte)(&DAT_0010b160)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b160)" ( (pointer_expression "&DAT_0010b160" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ))) ]))) ;) (switch_statement "switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }" switch (parenthesized_expression "(uVar7)" ( identifier )) (compound_statement "{\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }" { (case_statement "case 2:" case number_literal :) (case_statement "case 6:\n          FUN_00106540();\n          break;" case number_literal : (expression_statement "FUN_00106540();" (call_expression "FUN_00106540()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x13:\n          FUN_00106df0();\n          return 0;" case number_literal : (expression_statement "FUN_00106df0();" (call_expression "FUN_00106df0()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 0x15:\n          FUN_00104920();\n          break;" case number_literal : (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x17:\n          FUN_00106e30(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106e30(*puVar10);" (call_expression "FUN_00106e30(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x18:\n          FUN_00106b00(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106b00(*puVar10);" (call_expression "FUN_00106b00(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x19:\n          FUN_001068f0();\n          break;" case number_literal : (expression_statement "FUN_001068f0();" (call_expression "FUN_001068f0()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1a:\n          FUN_00106910(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106910(*puVar10);" (call_expression "FUN_00106910(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;" case number_literal : (expression_statement "FUN_001067f0(*puVar10);" (call_expression "FUN_001067f0(*puVar10)" identifier (argument_list "(*puVar10)" ( (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1c:\n          FUN_00106d20();\n          break;" case number_literal : (expression_statement "FUN_00106d20();" (call_expression "FUN_00106d20()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1d:\n          FUN_00106a50();\n          break;" case number_literal : (expression_statement "FUN_00106a50();" (call_expression "FUN_00106a50()" identifier (argument_list "()" ( ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;" case number_literal : (expression_statement "FUN_001065a0(*puVar10,0);" (call_expression "FUN_001065a0(*puVar10,0)" identifier (argument_list "(*puVar10,0)" ( (pointer_expression "*puVar10" * identifier) , number_literal ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;" case number_literal : (expression_statement "FUN_001065a0(*puVar10,1);" (call_expression "FUN_001065a0(*puVar10,1)" identifier (argument_list "(*puVar10,1)" ( (pointer_expression "*puVar10" * identifier) , number_literal ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106740(puVar10[-1],*puVar10);" (call_expression "FUN_00106740(puVar10[-1],*puVar10)" identifier (argument_list "(puVar10[-1],*puVar10)" ( (subscript_expression "puVar10[-1]" identifier [ number_literal ]) , (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;" case number_literal : (expression_statement "FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);" (call_expression "FUN_00106440(puVar10[-2],puVar10[-1],*puVar10)" identifier (argument_list "(puVar10[-2],puVar10[-1],*puVar10)" ( (subscript_expression "puVar10[-2]" identifier [ number_literal ]) , (subscript_expression "puVar10[-1]" identifier [ number_literal ]) , (pointer_expression "*puVar10" * identifier) ))) ;) (break_statement "break;" break ;)) (case_statement "case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)*puVar10;" (assignment_expression "puVar14 = (undefined8 *)*puVar10" identifier = (cast_expression "(undefined8 *)*puVar10" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar10" * identifier))) ;) (break_statement "break;" break ;)) (case_statement "case 0x23:" case number_literal :) (case_statement "case 0x25:" case number_literal :) (case_statement "case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)0x0;" (assignment_expression "puVar14 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (break_statement "break;" break ;)) (case_statement "case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)puVar10[-1];" (assignment_expression "puVar14 = (undefined8 *)puVar10[-1]" identifier = (cast_expression "(undefined8 *)puVar10[-1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[-1]" identifier [ number_literal ]))) ;) (break_statement "break;" break ;)) (case_statement "case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;" case number_literal : (expression_statement "puVar14 = (undefined8 *)malloc(0x10);" (assignment_expression "puVar14 = (undefined8 *)malloc(0x10)" identifier = (cast_expression "(undefined8 *)malloc(0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "puVar14[1] = puVar10[-2];" (assignment_expression "puVar14[1] = puVar10[-2]" (subscript_expression "puVar14[1]" identifier [ number_literal ]) = (subscript_expression "puVar10[-2]" identifier [ number_literal ])) ;) (expression_statement "*puVar14 = *puVar10;" (assignment_expression "*puVar14 = *puVar10" (pointer_expression "*puVar14" * identifier) = (pointer_expression "*puVar10" * identifier)) ;) (break_statement "break;" break ;)) (case_statement "case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);" case number_literal : (expression_statement "DAT_00110498 = (uint)(DAT_00110498 == 0);" (assignment_expression "DAT_00110498 = (uint)(DAT_00110498 == 0)" identifier = (call_expression "(uint)(DAT_00110498 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(DAT_00110498 == 0)" ( (binary_expression "DAT_00110498 == 0" identifier == number_literal) )))) ;)) })) (expression_statement "psVar13 = psVar13 + -uVar8;" (assignment_expression "psVar13 = psVar13 + -uVar8" identifier = (binary_expression "psVar13 + -uVar8" identifier + (unary_expression "-uVar8" - identifier))) ;) (expression_statement "sVar3 = *psVar13;" (assignment_expression "sVar3 = *psVar13" identifier = (pointer_expression "*psVar13" * identifier)) ;) (expression_statement "puVar9 = puVar10 + (1 - uVar8);" (assignment_expression "puVar9 = puVar10 + (1 - uVar8)" identifier = (binary_expression "puVar10 + (1 - uVar8)" identifier + (parenthesized_expression "(1 - uVar8)" ( (binary_expression "1 - uVar8" number_literal - identifier) )))) ;) (expression_statement "puVar10[1 - uVar8] = puVar14;" (assignment_expression "puVar10[1 - uVar8] = puVar14" (subscript_expression "puVar10[1 - uVar8]" identifier [ (binary_expression "1 - uVar8" number_literal - identifier) ]) = identifier) ;) (expression_statement "uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;" (assignment_expression "uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3" identifier = (binary_expression "(int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3" (cast_expression "(int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (parenthesized_expression "(&DAT_0010b270)" ( (pointer_expression "&DAT_0010b270" & identifier) )) [ (cast_expression "(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (binary_expression "(byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18" (subscript_expression "(byte)(&DAT_0010b1a0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1a0)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0010b1a0)" ( (pointer_expression "&DAT_0010b1a0" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal) ))) ]))) + (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" if (parenthesized_expression "((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15]))" ( (binary_expression "(uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])" (parenthesized_expression "(uVar15 < 0x23)" ( (binary_expression "uVar15 < 0x23" identifier < number_literal) )) && (parenthesized_expression "((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])" ( (binary_expression "(int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15]" (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier) == (subscript_expression "(uint)(byte)(&DAT_0010b1e0)[(int)uVar15]" (call_expression "(uint)(byte)(&DAT_0010b1e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b1e0)" ( (pointer_expression "&DAT_0010b1e0" & identifier) ))) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])) ))) )) (compound_statement "{\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }" { (expression_statement "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15]" identifier = (cast_expression "(long)(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) ])))) ;) }) (else_clause "else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" else (compound_statement "{\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" { (expression_statement "lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" identifier = (cast_expression "(long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (parenthesized_expression "(&DAT_0010b250)" ( (pointer_expression "&DAT_0010b250" & identifier) )) [ (cast_expression "(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" ( (binary_expression "(byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18" (subscript_expression "(byte)(&DAT_0010b1a0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1a0)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0010b1a0)" ( (pointer_expression "&DAT_0010b1a0" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal) ))) ])))) ;) }))) }))) }) (else_clause "else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" else (compound_statement "{\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" { (if_statement "if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }" if (parenthesized_expression "(DAT_00110694 == -2)" ( (binary_expression "DAT_00110694 == -2" identifier == number_literal) )) (compound_statement "{\n        DAT_00110694 = FUN_001054d0();\n      }" { (expression_statement "DAT_00110694 = FUN_001054d0();" (assignment_expression "DAT_00110694 = FUN_001054d0()" identifier = (call_expression "FUN_001054d0()" identifier (argument_list "()" ( )))) ;) })) (if_statement "if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" if (parenthesized_expression "(DAT_00110694 < 1)" ( (binary_expression "DAT_00110694 < 1" identifier < number_literal) )) (compound_statement "{\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }" { (expression_statement "DAT_00110694 = 0;" (assignment_expression "DAT_00110694 = 0" identifier = number_literal) ;) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = uVar15;" (assignment_expression "uVar7 = uVar15" identifier = identifier) ;) }) (else_clause "else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" else (if_statement "if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" if (parenthesized_expression "(DAT_00110694 < 0x114)" ( (binary_expression "DAT_00110694 < 0x114" identifier < number_literal) )) (compound_statement "{\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }" { (expression_statement "uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];" (assignment_expression "uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694]" identifier = (subscript_expression "(uint)(byte)(&DAT_0010b320)[DAT_00110694]" (call_expression "(uint)(byte)(&DAT_0010b320)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(&DAT_0010b320)" ( (pointer_expression "&DAT_0010b320" & identifier) ))) [ identifier ])) ;) (expression_statement "uVar7 = uVar15 + uVar5;" (assignment_expression "uVar7 = uVar15 + uVar5" identifier = (binary_expression "uVar15 + uVar5" identifier + identifier)) ;) }) (else_clause "else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" else (compound_statement "{\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" { (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" identifier = number_literal) ;) (expression_statement "uVar7 = uVar15 + 2;" (assignment_expression "uVar7 = uVar15 + 2" identifier = (binary_expression "uVar15 + 2" identifier + number_literal)) ;) }))))) (if_statement "if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;" if (parenthesized_expression "((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5))" ( (binary_expression "(0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)" (parenthesized_expression "(0x22 < uVar7)" ( (binary_expression "0x22 < uVar7" number_literal < identifier) )) || (parenthesized_expression "((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)" ( (binary_expression "(byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5" (subscript_expression "(byte)(&DAT_0010b1e0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1e0)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(&DAT_0010b1e0)" ( (pointer_expression "&DAT_0010b1e0" & identifier) ))) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ]) != identifier) ))) )) (goto_statement "goto LAB_00104bf8;" goto statement_identifier ;)) (expression_statement "cVar2 = (&DAT_0010b220)[(int)uVar7];" (assignment_expression "cVar2 = (&DAT_0010b220)[(int)uVar7]" identifier = (subscript_expression "(&DAT_0010b220)[(int)uVar7]" (parenthesized_expression "(&DAT_0010b220)" ( (pointer_expression "&DAT_0010b220" & identifier) )) [ (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "lVar18 = (long)cVar2;" (assignment_expression "lVar18 = (long)cVar2" identifier = (cast_expression "(long)cVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "uVar7 = -(int)cVar2;" (assignment_expression "uVar7 = -(int)cVar2" identifier = (unary_expression "-(int)cVar2" - (cast_expression "(int)cVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (cVar2 < '\x01') goto LAB_00104a58;" if (parenthesized_expression "(cVar2 < '\x01')" ( (binary_expression "cVar2 < '\x01'" identifier < (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_00104a58;" goto statement_identifier ;)) (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" identifier = number_literal) ;) (expression_statement "iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);" (assignment_expression "iVar4 = iVar4 + -1 + (uint)(iVar4 == 0)" identifier = (binary_expression "iVar4 + -1 + (uint)(iVar4 == 0)" (binary_expression "iVar4 + -1" identifier + number_literal) + (call_expression "(uint)(iVar4 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) ))))) ;) (expression_statement "puVar9 = puVar10 + 1;" (assignment_expression "puVar9 = puVar10 + 1" identifier = (binary_expression "puVar10 + 1" identifier + number_literal)) ;) (expression_statement "*puVar9 = DAT_00110698;" (assignment_expression "*puVar9 = DAT_00110698" (pointer_expression "*puVar9" * identifier) = identifier) ;) }))) (expression_statement "uVar8 = uVar12 * 2;" (assignment_expression "uVar8 = uVar12 * 2" identifier = (binary_expression "uVar12 * 2" identifier * number_literal)) ;) (expression_statement "psVar17 = psVar13 + 1;" (assignment_expression "psVar17 = psVar13 + 1" identifier = (binary_expression "psVar13 + 1" identifier + number_literal)) ;) (expression_statement "psVar13[1] = (short)lVar18;" (assignment_expression "psVar13[1] = (short)lVar18" (subscript_expression "psVar13[1]" identifier [ number_literal ]) = (cast_expression "(short)lVar18" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) identifier)) ;) (if_statement "if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }" if (parenthesized_expression "(__src + (uVar12 - 1) <= psVar17)" ( (binary_expression "__src + (uVar12 - 1) <= psVar17" (binary_expression "__src + (uVar12 - 1)" identifier + (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) ))) <= identifier) )) (compound_statement "{\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }" { (expression_statement "lVar16 = (long)psVar17 - (long)__src >> 1;" (assignment_expression "lVar16 = (long)psVar17 - (long)__src >> 1" identifier = (binary_expression "(long)psVar17 - (long)__src >> 1" (binary_expression "(long)psVar17 - (long)__src" (cast_expression "(long)psVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__src" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;) (if_statement "if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }" if (parenthesized_expression "(uVar12 < 10000)" ( (binary_expression "uVar12 < 10000" identifier < number_literal) )) (compound_statement "{\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }" { (expression_statement "uVar12 = 10000;" (assignment_expression "uVar12 = 10000" identifier = number_literal) ;) (if_statement "if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }" if (parenthesized_expression "(uVar8 < 0x2711)" ( (binary_expression "uVar8 < 0x2711" identifier < number_literal) )) (compound_statement "{\n          uVar12 = uVar8;\n        }" { (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" identifier = identifier) ;) })) (expression_statement "psVar6 = (short *)malloc(uVar12 * 10 + 7);" (assignment_expression "psVar6 = (short *)malloc(uVar12 * 10 + 7)" identifier = (cast_expression "(short *)malloc(uVar12 * 10 + 7)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(uVar12 * 10 + 7)" identifier (argument_list "(uVar12 * 10 + 7)" ( (binary_expression "uVar12 * 10 + 7" (binary_expression "uVar12 * 10" identifier * number_literal) + number_literal) ))))) ;) (if_statement "if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }" if (parenthesized_expression "(psVar6 != (short *)0x0)" ( (binary_expression "psVar6 != (short *)0x0" identifier != (cast_expression "(short *)0x0" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }" { (expression_statement "memcpy(psVar6,__src,(lVar16 + 1) * 2);" (call_expression "memcpy(psVar6,__src,(lVar16 + 1) * 2)" identifier (argument_list "(psVar6,__src,(lVar16 + 1) * 2)" ( identifier , identifier , (binary_expression "(lVar16 + 1) * 2" (parenthesized_expression "(lVar16 + 1)" ( (binary_expression "lVar16 + 1" identifier + number_literal) )) * number_literal) ))) ;) (expression_statement "local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);" (assignment_expression "local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" identifier = (cast_expression "(undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" identifier (argument_list "(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" ( (binary_expression "psVar6 + uVar12" identifier + identifier) , identifier , (binary_expression "(lVar16 + 1) * 8" (parenthesized_expression "(lVar16 + 1)" ( (binary_expression "lVar16 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (if_statement "if (__src != psVar1) {\n            free(__src);\n          }" if (parenthesized_expression "(__src != psVar1)" ( (binary_expression "__src != psVar1" identifier != identifier) )) (compound_statement "{\n            free(__src);\n          }" { (expression_statement "free(__src);" (call_expression "free(__src)" identifier (argument_list "(__src)" ( identifier ))) ;) })) (expression_statement "psVar17 = psVar6 + lVar16;" (assignment_expression "psVar17 = psVar6 + lVar16" identifier = (binary_expression "psVar6 + lVar16" identifier + identifier)) ;) (expression_statement "puVar9 = local_830 + lVar16;" (assignment_expression "puVar9 = local_830 + lVar16" identifier = (binary_expression "local_830 + lVar16" identifier + identifier)) ;) (if_statement "if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;" if (parenthesized_expression "(psVar17 < psVar6 + (uVar12 - 1))" ( (binary_expression "psVar17 < psVar6 + (uVar12 - 1)" identifier < (binary_expression "psVar6 + (uVar12 - 1)" identifier + (parenthesized_expression "(uVar12 - 1)" ( (binary_expression "uVar12 - 1" identifier - number_literal) )))) )) (goto_statement "goto LAB_00104be1;" goto statement_identifier ;)) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00104cac;" goto statement_identifier ;) })) })) (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" identifier = number_literal) ;) (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" identifier (argument_list "()" ( ))) ;) (expression_statement "psVar6 = __src;" (assignment_expression "psVar6 = __src" identifier = identifier) ;) (goto_statement "goto LAB_00104ca5;" goto statement_identifier ;) })) (labeled_statement "LAB_00104be1:\n    puVar10 = puVar9;" statement_identifier : (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" identifier = identifier) ;)) (expression_statement "__src = psVar6;" (assignment_expression "__src = psVar6" identifier = identifier) ;) (expression_statement "psVar13 = psVar17;" (assignment_expression "psVar13 = psVar17" identifier = identifier) ;) }) while (parenthesized_expression "((int)lVar18 != 3)" ( (binary_expression "(int)lVar18 != 3" (cast_expression "(int)lVar18" ( (type_descriptor "int" primitive_type) ) identifier) != number_literal) )) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }" statement_identifier : (if_statement "if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }" if (parenthesized_expression "(psVar6 != psVar1)" ( (binary_expression "psVar6 != psVar1" identifier != identifier) )) (compound_statement "{\nLAB_00104cac:\n    free(psVar6);\n  }" { (labeled_statement "LAB_00104cac:\n    free(psVar6);" statement_identifier : (expression_statement "free(psVar6);" (call_expression "free(psVar6)" identifier (argument_list "(psVar6)" ( identifier ))) ;)) }))) (return_statement "return uVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier short) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier short) (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = 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) ))) [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ 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 ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression LIT < IDENT)) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != (char_literal ' escape_sequence ')) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) < (char_literal ' escape_sequence '))) ))) )) )) (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 * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (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) ])) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ))) ]))) ;) (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 * IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * 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 * IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * 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 (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , LIT ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , LIT ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (pointer_expression * IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * IDENT) ))) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_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 ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * 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 = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT - IDENT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression LIT - IDENT) ]) = 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) )) [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) - LIT) ))) ]))) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (subscript_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (pointer_expression & IDENT) ))) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (pointer_expression & IDENT) ))) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) - LIT) ))) ])))) ;) }))) }))) }) (else_clause else (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) ))) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) != IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (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 (pointer_expression * IDENT) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (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)) ;) (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 (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) 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 (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + IDENT) , IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * 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 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 (cast_expression ( (type_descriptor TYPE) ) IDENT) != 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 "undefined8 FUN_00104950(void)\n\n{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}" (type_identifier "undefined8") (function_declarator "FUN_00104950(void)" (identifier "FUN_00104950") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  short *psVar1;\n  char cVar2;\n  short sVar3;\n  int iVar4;\n  uint uVar5;\n  short *psVar6;\n  uint uVar7;\n  ulong uVar8;\n  undefined8 *puVar9;\n  undefined8 *puVar10;\n  undefined8 uVar11;\n  ulong uVar12;\n  short *psVar13;\n  short *__src;\n  undefined8 *puVar14;\n  uint uVar15;\n  long lVar16;\n  short *psVar17;\n  long lVar18;\n  undefined8 *local_830;\n  short asStack_80a [201];\n  undefined8 local_678 [201];\n  \n  lVar18 = 0;\n  uVar12 = 200;\n  _DAT_00110690 = 0;\n  psVar1 = asStack_80a + 1;\n  local_830 = local_678;\n  DAT_00110694 = -2;\n  asStack_80a[1] = 0;\n  iVar4 = 0;\n  puVar10 = local_830;\n  __src = psVar1;\n  psVar13 = psVar1;\n  do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);\n  uVar11 = 0;\nLAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }\n  return uVar11;\n}" ({ "{") (declaration "short *psVar1;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar1" (* "*") (identifier "psVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "short sVar3;" (sized_type_specifier "short" (short "short")) (identifier "sVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "short *psVar6;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar6" (* "*") (identifier "psVar6")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined8 *puVar10;" (type_identifier "undefined8") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "undefined8 uVar11;" (type_identifier "undefined8") (identifier "uVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "short *psVar13;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar13" (* "*") (identifier "psVar13")) (; ";")) (declaration "short *__src;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "undefined8 *puVar14;" (type_identifier "undefined8") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "long lVar16;" (sized_type_specifier "long" (long "long")) (identifier "lVar16") (; ";")) (declaration "short *psVar17;" (sized_type_specifier "short" (short "short")) (pointer_declarator "*psVar17" (* "*") (identifier "psVar17")) (; ";")) (declaration "long lVar18;" (sized_type_specifier "long" (long "long")) (identifier "lVar18") (; ";")) (declaration "undefined8 *local_830;" (type_identifier "undefined8") (pointer_declarator "*local_830" (* "*") (identifier "local_830")) (; ";")) (declaration "short asStack_80a [201];" (sized_type_specifier "short" (short "short")) (array_declarator "asStack_80a [201]" (identifier "asStack_80a") ([ "[") (number_literal "201") (] "]")) (; ";")) (declaration "undefined8 local_678 [201];" (type_identifier "undefined8") (array_declarator "local_678 [201]" (identifier "local_678") ([ "[") (number_literal "201") (] "]")) (; ";")) (expression_statement "lVar18 = 0;" (assignment_expression "lVar18 = 0" (identifier "lVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar12 = 200;" (assignment_expression "uVar12 = 200" (identifier "uVar12") (= "=") (number_literal "200")) (; ";")) (expression_statement "_DAT_00110690 = 0;" (assignment_expression "_DAT_00110690 = 0" (identifier "_DAT_00110690") (= "=") (number_literal "0")) (; ";")) (expression_statement "psVar1 = asStack_80a + 1;" (assignment_expression "psVar1 = asStack_80a + 1" (identifier "psVar1") (= "=") (binary_expression "asStack_80a + 1" (identifier "asStack_80a") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_830 = local_678;" (assignment_expression "local_830 = local_678" (identifier "local_830") (= "=") (identifier "local_678")) (; ";")) (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" (identifier "DAT_00110694") (= "=") (number_literal "-2")) (; ";")) (expression_statement "asStack_80a[1] = 0;" (assignment_expression "asStack_80a[1] = 0" (subscript_expression "asStack_80a[1]" (identifier "asStack_80a") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar10 = local_830;" (assignment_expression "puVar10 = local_830" (identifier "puVar10") (= "=") (identifier "local_830")) (; ";")) (expression_statement "__src = psVar1;" (assignment_expression "__src = psVar1" (identifier "__src") (= "=") (identifier "psVar1")) (; ";")) (expression_statement "psVar13 = psVar1;" (assignment_expression "psVar13 = psVar1" (identifier "psVar13") (= "=") (identifier "psVar1")) (; ";")) (do_statement "do {\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  } while ((int)lVar18 != 3);" (do "do") (compound_statement "{\n    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];\n    psVar6 = __src;\n    if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }\n    uVar8 = uVar12 * 2;\n    psVar17 = psVar13 + 1;\n    psVar13[1] = (short)lVar18;\n    if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }\nLAB_00104be1:\n    puVar10 = puVar9;\n    __src = psVar6;\n    psVar13 = psVar17;\n  }" ({ "{") (expression_statement "uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];" (assignment_expression "uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18]" (identifier "uVar15") (= "=") (subscript_expression "(uint)(char)(&DAT_0010b2e0)[lVar18]" (call_expression "(uint)(char)(&DAT_0010b2e0)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (argument_list "(&DAT_0010b2e0)" (( "(") (pointer_expression "&DAT_0010b2e0" (& "&") (identifier "DAT_0010b2e0")) () ")"))) ([ "[") (identifier "lVar18") (] "]"))) (; ";")) (expression_statement "psVar6 = __src;" (assignment_expression "psVar6 = __src" (identifier "psVar6") (= "=") (identifier "__src")) (; ";")) (if_statement "if (uVar15 == 0xfffffff2) {\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }\n    else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" (if "if") (parenthesized_expression "(uVar15 == 0xfffffff2)" (( "(") (binary_expression "uVar15 == 0xfffffff2" (identifier "uVar15") (== "==") (number_literal "0xfffffff2")) () ")")) (compound_statement "{\nLAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];\n      if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }\n    }" ({ "{") (labeled_statement "LAB_00104bf8:\n      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];" (statement_identifier "LAB_00104bf8") (: ":") (expression_statement "uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];" (assignment_expression "uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18]" (identifier "uVar7") (= "=") (subscript_expression "(uint)(byte)(&DAT_0010b2a0)[lVar18]" (call_expression "(uint)(byte)(&DAT_0010b2a0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0010b2a0)" (( "(") (pointer_expression "&DAT_0010b2a0" (& "&") (identifier "DAT_0010b2a0")) () ")"))) ([ "[") (identifier "lVar18") (] "]"))) (; ";"))) (if_statement "if ((&DAT_0010b2a0)[lVar18] == 0) {\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }\n      else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" (if "if") (parenthesized_expression "((&DAT_0010b2a0)[lVar18] == 0)" (( "(") (binary_expression "(&DAT_0010b2a0)[lVar18] == 0" (subscript_expression "(&DAT_0010b2a0)[lVar18]" (parenthesized_expression "(&DAT_0010b2a0)" (( "(") (pointer_expression "&DAT_0010b2a0" (& "&") (identifier "DAT_0010b2a0")) () ")")) ([ "[") (identifier "lVar18") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }\n        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }\n        puVar9 = puVar10 + 1;\n        iVar4 = 3;\n        *puVar9 = DAT_00110698;\n      }" ({ "{") (if_statement "if (iVar4 == 0) {\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }\n        else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          _DAT_00110690 = _DAT_00110690 + 1;\n          FUN_00104920();\n        }" ({ "{") (expression_statement "_DAT_00110690 = _DAT_00110690 + 1;" (assignment_expression "_DAT_00110690 = _DAT_00110690 + 1" (identifier "_DAT_00110690") (= "=") (binary_expression "_DAT_00110690 + 1" (identifier "_DAT_00110690") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" (identifier "FUN_00104920") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" (else "else") (if_statement "if (iVar4 == 3) {\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" (if "if") (parenthesized_expression "(iVar4 == 3)" (( "(") (binary_expression "iVar4 == 3" (identifier "iVar4") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n          if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }\n        }" ({ "{") (if_statement "if (DAT_00110694 < 1) {\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }\n          else {\n            DAT_00110694 = -2;\n          }" (if "if") (parenthesized_expression "(DAT_00110694 < 1)" (( "(") (binary_expression "DAT_00110694 < 1" (identifier "DAT_00110694") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n            if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }\n          }" ({ "{") (if_statement "if (DAT_00110694 == 0) {\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }" (if "if") (parenthesized_expression "(DAT_00110694 == 0)" (( "(") (binary_expression "DAT_00110694 == 0" (identifier "DAT_00110694") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              uVar11 = 1;\n              goto LAB_00104ca5;\n            }" ({ "{") (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00104ca5;" (goto "goto") (statement_identifier "LAB_00104ca5") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            DAT_00110694 = -2;\n          }" (else "else") (compound_statement "{\n            DAT_00110694 = -2;\n          }" ({ "{") (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" (identifier "DAT_00110694") (= "=") (number_literal "-2")) (; ";")) (} "}")))) (} "}"))))) (while_statement "while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }" (while "while") (parenthesized_expression "((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')))" (( "(") (parenthesized_expression "(((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))" (( "(") (binary_expression "((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||\n               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')" (parenthesized_expression "((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01'))" (( "(") (binary_expression "(uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||\n                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')" (parenthesized_expression "(uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15))" (( "(") (binary_expression "uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)" (binary_expression "uVar15 == 0xfffffff2" (identifier "uVar15") (== "==") (number_literal "0xfffffff2")) (|| "||") (parenthesized_expression "(uVar15 = uVar15 + 1, 0x22 < uVar15)" (( "(") (comma_expression "uVar15 = uVar15 + 1, 0x22 < uVar15" (assignment_expression "uVar15 = uVar15 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (, ",") (binary_expression "0x22 < uVar15" (number_literal "0x22") (< "<") (identifier "uVar15"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((&DAT_0010b1e0)[(int)uVar15] != '\x01')" (( "(") (binary_expression "(&DAT_0010b1e0)[(int)uVar15] != '\x01'" (subscript_expression "(&DAT_0010b1e0)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b1e0)" (( "(") (pointer_expression "&DAT_0010b1e0" (& "&") (identifier "DAT_0010b1e0")) () ")")) ([ "[") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (] "]")) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01')" (( "(") (comma_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],\n               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15]" (identifier "lVar18") (= "=") (cast_expression "(long)(char)(&DAT_0010b220)[(int)uVar15]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" (( "(") (pointer_expression "&DAT_0010b220" (& "&") (identifier "DAT_0010b220")) () ")")) ([ "[") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (] "]"))))) (, ",") (binary_expression "(char)(&DAT_0010b220)[(int)uVar15] < '\x01'" (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" (( "(") (pointer_expression "&DAT_0010b220" (& "&") (identifier "DAT_0010b220")) () ")")) ([ "[") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (] "]"))) (< "<") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'")))) () ")"))) () ")")) () ")")) (compound_statement "{\n          if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }\n          psVar13 = psVar13 + -1;\n          puVar10 = puVar10 + -1;\n          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];\n        }" ({ "{") (if_statement "if (psVar13 == __src) {\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }" (if "if") (parenthesized_expression "(psVar13 == __src)" (( "(") (binary_expression "psVar13 == __src" (identifier "psVar13") (== "==") (identifier "__src")) () ")")) (compound_statement "{\n            uVar11 = 1;\n            psVar6 = psVar13;\n            goto LAB_00104ca5;\n          }" ({ "{") (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "psVar6 = psVar13;" (assignment_expression "psVar6 = psVar13" (identifier "psVar6") (= "=") (identifier "psVar13")) (; ";")) (goto_statement "goto LAB_00104ca5;" (goto "goto") (statement_identifier "LAB_00104ca5") (; ";")) (} "}"))) (expression_statement "psVar13 = psVar13 + -1;" (assignment_expression "psVar13 = psVar13 + -1" (identifier "psVar13") (= "=") (binary_expression "psVar13 + -1" (identifier "psVar13") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar10 = puVar10 + -1;" (assignment_expression "puVar10 = puVar10 + -1" (identifier "puVar10") (= "=") (binary_expression "puVar10 + -1" (identifier "puVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];" (assignment_expression "uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13]" (identifier "uVar15") (= "=") (subscript_expression "(uint)(char)(&DAT_0010b2e0)[*psVar13]" (call_expression "(uint)(char)(&DAT_0010b2e0)" (call_expression "(uint)(char)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(char)" (( "(") (identifier "char") () ")"))) (argument_list "(&DAT_0010b2e0)" (( "(") (pointer_expression "&DAT_0010b2e0" (& "&") (identifier "DAT_0010b2e0")) () ")"))) ([ "[") (pointer_expression "*psVar13" (* "*") (identifier "psVar13")) (] "]"))) (; ";")) (} "}"))) (expression_statement "puVar9 = puVar10 + 1;" (assignment_expression "puVar9 = puVar10 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" (identifier "iVar4") (= "=") (number_literal "3")) (; ";")) (expression_statement "*puVar9 = DAT_00110698;" (assignment_expression "*puVar9 = DAT_00110698" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "DAT_00110698")) (; ";")) (} "}")) (else_clause "else {\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" (else "else") (compound_statement "{\nLAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];\n        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];\n        switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }\n        psVar13 = psVar13 + -uVar8;\n        sVar3 = *psVar13;\n        puVar9 = puVar10 + (1 - uVar8);\n        puVar10[1 - uVar8] = puVar14;\n        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;\n        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }\n      }" ({ "{") (labeled_statement "LAB_00104a58:\n        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];" (statement_identifier "LAB_00104a58") (: ":") (expression_statement "uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];" (assignment_expression "uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7]" (identifier "uVar8") (= "=") (subscript_expression "(ulong)(byte)(&DAT_0010b160)[(int)uVar7]" (call_expression "(ulong)(byte)(&DAT_0010b160)" (call_expression "(ulong)(byte)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0010b160)" (( "(") (pointer_expression "&DAT_0010b160" (& "&") (identifier "DAT_0010b160")) () ")"))) ([ "[") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (] "]"))) (; ";"))) (expression_statement "puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];" (assignment_expression "puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])]" (identifier "puVar10") ([ "[") (cast_expression "(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])" (( "(") (binary_expression "1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7]" (number_literal "1") (- "-") (subscript_expression "(uint)(byte)(&DAT_0010b160)[(int)uVar7]" (call_expression "(uint)(byte)(&DAT_0010b160)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0010b160)" (( "(") (pointer_expression "&DAT_0010b160" (& "&") (identifier "DAT_0010b160")) () ")"))) ([ "[") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (] "]"))) () ")"))) (] "]")))) (; ";")) (switch_statement "switch(uVar7) {\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }" (switch "switch") (parenthesized_expression "(uVar7)" (( "(") (identifier "uVar7") () ")")) (compound_statement "{\n        case 2:\n        case 6:\n          FUN_00106540();\n          break;\n        case 0x13:\n          FUN_00106df0();\n          return 0;\n        case 0x15:\n          FUN_00104920();\n          break;\n        case 0x17:\n          FUN_00106e30(*puVar10);\n          break;\n        case 0x18:\n          FUN_00106b00(*puVar10);\n          break;\n        case 0x19:\n          FUN_001068f0();\n          break;\n        case 0x1a:\n          FUN_00106910(*puVar10);\n          break;\n        case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;\n        case 0x1c:\n          FUN_00106d20();\n          break;\n        case 0x1d:\n          FUN_00106a50();\n          break;\n        case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;\n        case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;\n        case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;\n        case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;\n        case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;\n        case 0x23:\n        case 0x25:\n        case 0x27:\n          puVar14 = (undefined8 *)0x0;\n          break;\n        case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;\n        case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;\n        case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);\n        }" ({ "{") (case_statement "case 2:" (case "case") (number_literal "2") (: ":")) (case_statement "case 6:\n          FUN_00106540();\n          break;" (case "case") (number_literal "6") (: ":") (expression_statement "FUN_00106540();" (call_expression "FUN_00106540()" (identifier "FUN_00106540") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x13:\n          FUN_00106df0();\n          return 0;" (case "case") (number_literal "0x13") (: ":") (expression_statement "FUN_00106df0();" (call_expression "FUN_00106df0()" (identifier "FUN_00106df0") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";"))) (case_statement "case 0x15:\n          FUN_00104920();\n          break;" (case "case") (number_literal "0x15") (: ":") (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" (identifier "FUN_00104920") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x17:\n          FUN_00106e30(*puVar10);\n          break;" (case "case") (number_literal "0x17") (: ":") (expression_statement "FUN_00106e30(*puVar10);" (call_expression "FUN_00106e30(*puVar10)" (identifier "FUN_00106e30") (argument_list "(*puVar10)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x18:\n          FUN_00106b00(*puVar10);\n          break;" (case "case") (number_literal "0x18") (: ":") (expression_statement "FUN_00106b00(*puVar10);" (call_expression "FUN_00106b00(*puVar10)" (identifier "FUN_00106b00") (argument_list "(*puVar10)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x19:\n          FUN_001068f0();\n          break;" (case "case") (number_literal "0x19") (: ":") (expression_statement "FUN_001068f0();" (call_expression "FUN_001068f0()" (identifier "FUN_001068f0") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1a:\n          FUN_00106910(*puVar10);\n          break;" (case "case") (number_literal "0x1a") (: ":") (expression_statement "FUN_00106910(*puVar10);" (call_expression "FUN_00106910(*puVar10)" (identifier "FUN_00106910") (argument_list "(*puVar10)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1b:\n          FUN_001067f0(*puVar10);\n          break;" (case "case") (number_literal "0x1b") (: ":") (expression_statement "FUN_001067f0(*puVar10);" (call_expression "FUN_001067f0(*puVar10)" (identifier "FUN_001067f0") (argument_list "(*puVar10)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1c:\n          FUN_00106d20();\n          break;" (case "case") (number_literal "0x1c") (: ":") (expression_statement "FUN_00106d20();" (call_expression "FUN_00106d20()" (identifier "FUN_00106d20") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1d:\n          FUN_00106a50();\n          break;" (case "case") (number_literal "0x1d") (: ":") (expression_statement "FUN_00106a50();" (call_expression "FUN_00106a50()" (identifier "FUN_00106a50") (argument_list "()" (( "(") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1e:\n          FUN_001065a0(*puVar10,0);\n          break;" (case "case") (number_literal "0x1e") (: ":") (expression_statement "FUN_001065a0(*puVar10,0);" (call_expression "FUN_001065a0(*puVar10,0)" (identifier "FUN_001065a0") (argument_list "(*puVar10,0)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (, ",") (number_literal "0") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x1f:\n          FUN_001065a0(*puVar10,1);\n          break;" (case "case") (number_literal "0x1f") (: ":") (expression_statement "FUN_001065a0(*puVar10,1);" (call_expression "FUN_001065a0(*puVar10,1)" (identifier "FUN_001065a0") (argument_list "(*puVar10,1)" (( "(") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (, ",") (number_literal "1") () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x20:\n          FUN_00106740(puVar10[-1],*puVar10);\n          break;" (case "case") (number_literal "0x20") (: ":") (expression_statement "FUN_00106740(puVar10[-1],*puVar10);" (call_expression "FUN_00106740(puVar10[-1],*puVar10)" (identifier "FUN_00106740") (argument_list "(puVar10[-1],*puVar10)" (( "(") (subscript_expression "puVar10[-1]" (identifier "puVar10") ([ "[") (number_literal "-1") (] "]")) (, ",") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x21:\n          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);\n          break;" (case "case") (number_literal "0x21") (: ":") (expression_statement "FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);" (call_expression "FUN_00106440(puVar10[-2],puVar10[-1],*puVar10)" (identifier "FUN_00106440") (argument_list "(puVar10[-2],puVar10[-1],*puVar10)" (( "(") (subscript_expression "puVar10[-2]" (identifier "puVar10") ([ "[") (number_literal "-2") (] "]")) (, ",") (subscript_expression "puVar10[-1]" (identifier "puVar10") ([ "[") (number_literal "-1") (] "]")) (, ",") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) () ")"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x22:\n          puVar14 = (undefined8 *)*puVar10;\n          break;" (case "case") (number_literal "0x22") (: ":") (expression_statement "puVar14 = (undefined8 *)*puVar10;" (assignment_expression "puVar14 = (undefined8 *)*puVar10" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)*puVar10" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar10" (* "*") (identifier "puVar10")))) (; ";")) (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          puVar14 = (undefined8 *)0x0;\n          break;" (case "case") (number_literal "0x27") (: ":") (expression_statement "puVar14 = (undefined8 *)0x0;" (assignment_expression "puVar14 = (undefined8 *)0x0" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x24:\n          puVar14 = (undefined8 *)puVar10[-1];\n          break;" (case "case") (number_literal "0x24") (: ":") (expression_statement "puVar14 = (undefined8 *)puVar10[-1];" (assignment_expression "puVar14 = (undefined8 *)puVar10[-1]" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)puVar10[-1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar10[-1]" (identifier "puVar10") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x26:\n          puVar14 = (undefined8 *)malloc(0x10);\n          puVar14[1] = puVar10[-2];\n          *puVar14 = *puVar10;\n          break;" (case "case") (number_literal "0x26") (: ":") (expression_statement "puVar14 = (undefined8 *)malloc(0x10);" (assignment_expression "puVar14 = (undefined8 *)malloc(0x10)" (identifier "puVar14") (= "=") (cast_expression "(undefined8 *)malloc(0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(0x10)" (identifier "malloc") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")"))))) (; ";")) (expression_statement "puVar14[1] = puVar10[-2];" (assignment_expression "puVar14[1] = puVar10[-2]" (subscript_expression "puVar14[1]" (identifier "puVar14") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "puVar10[-2]" (identifier "puVar10") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (expression_statement "*puVar14 = *puVar10;" (assignment_expression "*puVar14 = *puVar10" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (pointer_expression "*puVar10" (* "*") (identifier "puVar10"))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x2a:\n          DAT_00110498 = (uint)(DAT_00110498 == 0);" (case "case") (number_literal "0x2a") (: ":") (expression_statement "DAT_00110498 = (uint)(DAT_00110498 == 0);" (assignment_expression "DAT_00110498 = (uint)(DAT_00110498 == 0)" (identifier "DAT_00110498") (= "=") (call_expression "(uint)(DAT_00110498 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(DAT_00110498 == 0)" (( "(") (binary_expression "DAT_00110498 == 0" (identifier "DAT_00110498") (== "==") (number_literal "0")) () ")")))) (; ";"))) (} "}"))) (expression_statement "psVar13 = psVar13 + -uVar8;" (assignment_expression "psVar13 = psVar13 + -uVar8" (identifier "psVar13") (= "=") (binary_expression "psVar13 + -uVar8" (identifier "psVar13") (+ "+") (unary_expression "-uVar8" (- "-") (identifier "uVar8")))) (; ";")) (expression_statement "sVar3 = *psVar13;" (assignment_expression "sVar3 = *psVar13" (identifier "sVar3") (= "=") (pointer_expression "*psVar13" (* "*") (identifier "psVar13"))) (; ";")) (expression_statement "puVar9 = puVar10 + (1 - uVar8);" (assignment_expression "puVar9 = puVar10 + (1 - uVar8)" (identifier "puVar9") (= "=") (binary_expression "puVar10 + (1 - uVar8)" (identifier "puVar10") (+ "+") (parenthesized_expression "(1 - uVar8)" (( "(") (binary_expression "1 - uVar8" (number_literal "1") (- "-") (identifier "uVar8")) () ")")))) (; ";")) (expression_statement "puVar10[1 - uVar8] = puVar14;" (assignment_expression "puVar10[1 - uVar8] = puVar14" (subscript_expression "puVar10[1 - uVar8]" (identifier "puVar10") ([ "[") (binary_expression "1 - uVar8" (number_literal "1") (- "-") (identifier "uVar8")) (] "]")) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3;" (assignment_expression "uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3" (identifier "uVar15") (= "=") (binary_expression "(int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +\n                 (int)sVar3" (cast_expression "(int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (parenthesized_expression "(&DAT_0010b270)" (( "(") (pointer_expression "&DAT_0010b270" (& "&") (identifier "DAT_0010b270")) () ")")) ([ "[") (cast_expression "(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" (( "(") (binary_expression "(byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18" (subscript_expression "(byte)(&DAT_0010b1a0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1a0)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(&DAT_0010b1a0)" (( "(") (pointer_expression "&DAT_0010b1a0" (& "&") (identifier "DAT_0010b1a0")) () ")"))) ([ "[") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (] "]")) (- "-") (number_literal "0x18")) () ")"))) (] "]")))) (+ "+") (cast_expression "(int)sVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar3")))) (; ";")) (if_statement "if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }\n        else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" (if "if") (parenthesized_expression "((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15]))" (( "(") (binary_expression "(uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])" (parenthesized_expression "(uVar15 < 0x23)" (( "(") (binary_expression "uVar15 < 0x23" (identifier "uVar15") (< "<") (number_literal "0x23")) () ")")) (&& "&&") (parenthesized_expression "((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])" (( "(") (binary_expression "(int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15]" (cast_expression "(int)sVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar3")) (== "==") (subscript_expression "(uint)(byte)(&DAT_0010b1e0)[(int)uVar15]" (call_expression "(uint)(byte)(&DAT_0010b1e0)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0010b1e0)" (( "(") (pointer_expression "&DAT_0010b1e0" (& "&") (identifier "DAT_0010b1e0")) () ")"))) ([ "[") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (] "]"))) () ")"))) () ")")) (compound_statement "{\n          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];\n        }" ({ "{") (expression_statement "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15]" (identifier "lVar18") (= "=") (cast_expression "(long)(char)(&DAT_0010b220)[(int)uVar15]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(char)(&DAT_0010b220)[(int)uVar15]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0010b220)[(int)uVar15]" (parenthesized_expression "(&DAT_0010b220)" (( "(") (pointer_expression "&DAT_0010b220" (& "&") (identifier "DAT_0010b220")) () ")")) ([ "[") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" (else "else") (compound_statement "{\n          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];\n        }" ({ "{") (expression_statement "lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];" (assignment_expression "lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (identifier "lVar18") (= "=") (cast_expression "(long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)]" (parenthesized_expression "(&DAT_0010b250)" (( "(") (pointer_expression "&DAT_0010b250" (& "&") (identifier "DAT_0010b250")) () ")")) ([ "[") (cast_expression "(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)" (( "(") (binary_expression "(byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18" (subscript_expression "(byte)(&DAT_0010b1a0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1a0)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(&DAT_0010b1a0)" (( "(") (pointer_expression "&DAT_0010b1a0" (& "&") (identifier "DAT_0010b1a0")) () ")"))) ([ "[") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (] "]")) (- "-") (number_literal "0x18")) () ")"))) (] "]"))))) (; ";")) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" (else "else") (compound_statement "{\n      if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }\n      if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }\n      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;\n      cVar2 = (&DAT_0010b220)[(int)uVar7];\n      lVar18 = (long)cVar2;\n      uVar7 = -(int)cVar2;\n      if (cVar2 < '\x01') goto LAB_00104a58;\n      DAT_00110694 = -2;\n      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);\n      puVar9 = puVar10 + 1;\n      *puVar9 = DAT_00110698;\n    }" ({ "{") (if_statement "if (DAT_00110694 == -2) {\n        DAT_00110694 = FUN_001054d0();\n      }" (if "if") (parenthesized_expression "(DAT_00110694 == -2)" (( "(") (binary_expression "DAT_00110694 == -2" (identifier "DAT_00110694") (== "==") (number_literal "-2")) () ")")) (compound_statement "{\n        DAT_00110694 = FUN_001054d0();\n      }" ({ "{") (expression_statement "DAT_00110694 = FUN_001054d0();" (assignment_expression "DAT_00110694 = FUN_001054d0()" (identifier "DAT_00110694") (= "=") (call_expression "FUN_001054d0()" (identifier "FUN_001054d0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}"))) (if_statement "if (DAT_00110694 < 1) {\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }\n      else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" (if "if") (parenthesized_expression "(DAT_00110694 < 1)" (( "(") (binary_expression "DAT_00110694 < 1" (identifier "DAT_00110694") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n        DAT_00110694 = 0;\n        uVar5 = 0;\n        uVar7 = uVar15;\n      }" ({ "{") (expression_statement "DAT_00110694 = 0;" (assignment_expression "DAT_00110694 = 0" (identifier "DAT_00110694") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = uVar15;" (assignment_expression "uVar7 = uVar15" (identifier "uVar7") (= "=") (identifier "uVar15")) (; ";")) (} "}")) (else_clause "else if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" (else "else") (if_statement "if (DAT_00110694 < 0x114) {\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }\n      else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" (if "if") (parenthesized_expression "(DAT_00110694 < 0x114)" (( "(") (binary_expression "DAT_00110694 < 0x114" (identifier "DAT_00110694") (< "<") (number_literal "0x114")) () ")")) (compound_statement "{\n        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];\n        uVar7 = uVar15 + uVar5;\n      }" ({ "{") (expression_statement "uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];" (assignment_expression "uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694]" (identifier "uVar5") (= "=") (subscript_expression "(uint)(byte)(&DAT_0010b320)[DAT_00110694]" (call_expression "(uint)(byte)(&DAT_0010b320)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(&DAT_0010b320)" (( "(") (pointer_expression "&DAT_0010b320" (& "&") (identifier "DAT_0010b320")) () ")"))) ([ "[") (identifier "DAT_00110694") (] "]"))) (; ";")) (expression_statement "uVar7 = uVar15 + uVar5;" (assignment_expression "uVar7 = uVar15 + uVar5" (identifier "uVar7") (= "=") (binary_expression "uVar15 + uVar5" (identifier "uVar15") (+ "+") (identifier "uVar5"))) (; ";")) (} "}")) (else_clause "else {\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" (else "else") (compound_statement "{\n        uVar5 = 2;\n        uVar7 = uVar15 + 2;\n      }" ({ "{") (expression_statement "uVar5 = 2;" (assignment_expression "uVar5 = 2" (identifier "uVar5") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar7 = uVar15 + 2;" (assignment_expression "uVar7 = uVar15 + 2" (identifier "uVar7") (= "=") (binary_expression "uVar15 + 2" (identifier "uVar15") (+ "+") (number_literal "2"))) (; ";")) (} "}")))))) (if_statement "if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;" (if "if") (parenthesized_expression "((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5))" (( "(") (binary_expression "(0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)" (parenthesized_expression "(0x22 < uVar7)" (( "(") (binary_expression "0x22 < uVar7" (number_literal "0x22") (< "<") (identifier "uVar7")) () ")")) (|| "||") (parenthesized_expression "((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)" (( "(") (binary_expression "(byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5" (subscript_expression "(byte)(&DAT_0010b1e0)[(int)uVar7]" (call_expression "(byte)(&DAT_0010b1e0)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(&DAT_0010b1e0)" (( "(") (pointer_expression "&DAT_0010b1e0" (& "&") (identifier "DAT_0010b1e0")) () ")"))) ([ "[") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (] "]")) (!= "!=") (identifier "uVar5")) () ")"))) () ")")) (goto_statement "goto LAB_00104bf8;" (goto "goto") (statement_identifier "LAB_00104bf8") (; ";"))) (expression_statement "cVar2 = (&DAT_0010b220)[(int)uVar7];" (assignment_expression "cVar2 = (&DAT_0010b220)[(int)uVar7]" (identifier "cVar2") (= "=") (subscript_expression "(&DAT_0010b220)[(int)uVar7]" (parenthesized_expression "(&DAT_0010b220)" (( "(") (pointer_expression "&DAT_0010b220" (& "&") (identifier "DAT_0010b220")) () ")")) ([ "[") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7")) (] "]"))) (; ";")) (expression_statement "lVar18 = (long)cVar2;" (assignment_expression "lVar18 = (long)cVar2" (identifier "lVar18") (= "=") (cast_expression "(long)cVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "cVar2"))) (; ";")) (expression_statement "uVar7 = -(int)cVar2;" (assignment_expression "uVar7 = -(int)cVar2" (identifier "uVar7") (= "=") (unary_expression "-(int)cVar2" (- "-") (cast_expression "(int)cVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar2")))) (; ";")) (if_statement "if (cVar2 < '\x01') goto LAB_00104a58;" (if "if") (parenthesized_expression "(cVar2 < '\x01')" (( "(") (binary_expression "cVar2 < '\x01'" (identifier "cVar2") (< "<") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (goto_statement "goto LAB_00104a58;" (goto "goto") (statement_identifier "LAB_00104a58") (; ";"))) (expression_statement "DAT_00110694 = -2;" (assignment_expression "DAT_00110694 = -2" (identifier "DAT_00110694") (= "=") (number_literal "-2")) (; ";")) (expression_statement "iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);" (assignment_expression "iVar4 = iVar4 + -1 + (uint)(iVar4 == 0)" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1 + (uint)(iVar4 == 0)" (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)(iVar4 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")"))))) (; ";")) (expression_statement "puVar9 = puVar10 + 1;" (assignment_expression "puVar9 = puVar10 + 1" (identifier "puVar9") (= "=") (binary_expression "puVar10 + 1" (identifier "puVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar9 = DAT_00110698;" (assignment_expression "*puVar9 = DAT_00110698" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (identifier "DAT_00110698")) (; ";")) (} "}")))) (expression_statement "uVar8 = uVar12 * 2;" (assignment_expression "uVar8 = uVar12 * 2" (identifier "uVar8") (= "=") (binary_expression "uVar12 * 2" (identifier "uVar12") (* "*") (number_literal "2"))) (; ";")) (expression_statement "psVar17 = psVar13 + 1;" (assignment_expression "psVar17 = psVar13 + 1" (identifier "psVar17") (= "=") (binary_expression "psVar13 + 1" (identifier "psVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "psVar13[1] = (short)lVar18;" (assignment_expression "psVar13[1] = (short)lVar18" (subscript_expression "psVar13[1]" (identifier "psVar13") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(short)lVar18" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (identifier "lVar18"))) (; ";")) (if_statement "if (__src + (uVar12 - 1) <= psVar17) {\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }" (if "if") (parenthesized_expression "(__src + (uVar12 - 1) <= psVar17)" (( "(") (binary_expression "__src + (uVar12 - 1) <= psVar17" (binary_expression "__src + (uVar12 - 1)" (identifier "__src") (+ "+") (parenthesized_expression "(uVar12 - 1)" (( "(") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1")) () ")"))) (<= "<=") (identifier "psVar17")) () ")")) (compound_statement "{\n      lVar16 = (long)psVar17 - (long)__src >> 1;\n      if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }\n      uVar11 = 2;\n      FUN_00104920();\n      psVar6 = __src;\n      goto LAB_00104ca5;\n    }" ({ "{") (expression_statement "lVar16 = (long)psVar17 - (long)__src >> 1;" (assignment_expression "lVar16 = (long)psVar17 - (long)__src >> 1" (identifier "lVar16") (= "=") (binary_expression "(long)psVar17 - (long)__src >> 1" (binary_expression "(long)psVar17 - (long)__src" (cast_expression "(long)psVar17" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "psVar17")) (- "-") (cast_expression "(long)__src" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__src"))) (>> ">>") (number_literal "1"))) (; ";")) (if_statement "if (uVar12 < 10000) {\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }" (if "if") (parenthesized_expression "(uVar12 < 10000)" (( "(") (binary_expression "uVar12 < 10000" (identifier "uVar12") (< "<") (number_literal "10000")) () ")")) (compound_statement "{\n        uVar12 = 10000;\n        if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }\n        psVar6 = (short *)malloc(uVar12 * 10 + 7);\n        if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }\n      }" ({ "{") (expression_statement "uVar12 = 10000;" (assignment_expression "uVar12 = 10000" (identifier "uVar12") (= "=") (number_literal "10000")) (; ";")) (if_statement "if (uVar8 < 0x2711) {\n          uVar12 = uVar8;\n        }" (if "if") (parenthesized_expression "(uVar8 < 0x2711)" (( "(") (binary_expression "uVar8 < 0x2711" (identifier "uVar8") (< "<") (number_literal "0x2711")) () ")")) (compound_statement "{\n          uVar12 = uVar8;\n        }" ({ "{") (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" (identifier "uVar12") (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "psVar6 = (short *)malloc(uVar12 * 10 + 7);" (assignment_expression "psVar6 = (short *)malloc(uVar12 * 10 + 7)" (identifier "psVar6") (= "=") (cast_expression "(short *)malloc(uVar12 * 10 + 7)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(uVar12 * 10 + 7)" (identifier "malloc") (argument_list "(uVar12 * 10 + 7)" (( "(") (binary_expression "uVar12 * 10 + 7" (binary_expression "uVar12 * 10" (identifier "uVar12") (* "*") (number_literal "10")) (+ "+") (number_literal "7")) () ")"))))) (; ";")) (if_statement "if (psVar6 != (short *)0x0) {\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }" (if "if") (parenthesized_expression "(psVar6 != (short *)0x0)" (( "(") (binary_expression "psVar6 != (short *)0x0" (identifier "psVar6") (!= "!=") (cast_expression "(short *)0x0" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          memcpy(psVar6,__src,(lVar16 + 1) * 2);\n          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);\n          if (__src != psVar1) {\n            free(__src);\n          }\n          psVar17 = psVar6 + lVar16;\n          puVar9 = local_830 + lVar16;\n          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;\n          uVar11 = 1;\n          goto LAB_00104cac;\n        }" ({ "{") (expression_statement "memcpy(psVar6,__src,(lVar16 + 1) * 2);" (call_expression "memcpy(psVar6,__src,(lVar16 + 1) * 2)" (identifier "memcpy") (argument_list "(psVar6,__src,(lVar16 + 1) * 2)" (( "(") (identifier "psVar6") (, ",") (identifier "__src") (, ",") (binary_expression "(lVar16 + 1) * 2" (parenthesized_expression "(lVar16 + 1)" (( "(") (binary_expression "lVar16 + 1" (identifier "lVar16") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2")) () ")"))) (; ";")) (expression_statement "local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);" (assignment_expression "local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" (identifier "local_830") (= "=") (cast_expression "(undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" (identifier "memcpy") (argument_list "(psVar6 + uVar12,local_830,(lVar16 + 1) * 8)" (( "(") (binary_expression "psVar6 + uVar12" (identifier "psVar6") (+ "+") (identifier "uVar12")) (, ",") (identifier "local_830") (, ",") (binary_expression "(lVar16 + 1) * 8" (parenthesized_expression "(lVar16 + 1)" (( "(") (binary_expression "lVar16 + 1" (identifier "lVar16") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (__src != psVar1) {\n            free(__src);\n          }" (if "if") (parenthesized_expression "(__src != psVar1)" (( "(") (binary_expression "__src != psVar1" (identifier "__src") (!= "!=") (identifier "psVar1")) () ")")) (compound_statement "{\n            free(__src);\n          }" ({ "{") (expression_statement "free(__src);" (call_expression "free(__src)" (identifier "free") (argument_list "(__src)" (( "(") (identifier "__src") () ")"))) (; ";")) (} "}"))) (expression_statement "psVar17 = psVar6 + lVar16;" (assignment_expression "psVar17 = psVar6 + lVar16" (identifier "psVar17") (= "=") (binary_expression "psVar6 + lVar16" (identifier "psVar6") (+ "+") (identifier "lVar16"))) (; ";")) (expression_statement "puVar9 = local_830 + lVar16;" (assignment_expression "puVar9 = local_830 + lVar16" (identifier "puVar9") (= "=") (binary_expression "local_830 + lVar16" (identifier "local_830") (+ "+") (identifier "lVar16"))) (; ";")) (if_statement "if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;" (if "if") (parenthesized_expression "(psVar17 < psVar6 + (uVar12 - 1))" (( "(") (binary_expression "psVar17 < psVar6 + (uVar12 - 1)" (identifier "psVar17") (< "<") (binary_expression "psVar6 + (uVar12 - 1)" (identifier "psVar6") (+ "+") (parenthesized_expression "(uVar12 - 1)" (( "(") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1")) () ")")))) () ")")) (goto_statement "goto LAB_00104be1;" (goto "goto") (statement_identifier "LAB_00104be1") (; ";"))) (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" (identifier "uVar11") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00104cac;" (goto "goto") (statement_identifier "LAB_00104cac") (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar11 = 2;" (assignment_expression "uVar11 = 2" (identifier "uVar11") (= "=") (number_literal "2")) (; ";")) (expression_statement "FUN_00104920();" (call_expression "FUN_00104920()" (identifier "FUN_00104920") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "psVar6 = __src;" (assignment_expression "psVar6 = __src" (identifier "psVar6") (= "=") (identifier "__src")) (; ";")) (goto_statement "goto LAB_00104ca5;" (goto "goto") (statement_identifier "LAB_00104ca5") (; ";")) (} "}"))) (labeled_statement "LAB_00104be1:\n    puVar10 = puVar9;" (statement_identifier "LAB_00104be1") (: ":") (expression_statement "puVar10 = puVar9;" (assignment_expression "puVar10 = puVar9" (identifier "puVar10") (= "=") (identifier "puVar9")) (; ";"))) (expression_statement "__src = psVar6;" (assignment_expression "__src = psVar6" (identifier "__src") (= "=") (identifier "psVar6")) (; ";")) (expression_statement "psVar13 = psVar17;" (assignment_expression "psVar13 = psVar17" (identifier "psVar13") (= "=") (identifier "psVar17")) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar18 != 3)" (( "(") (binary_expression "(int)lVar18 != 3" (cast_expression "(int)lVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar18")) (!= "!=") (number_literal "3")) () ")")) (; ";")) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" (identifier "uVar11") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00104ca5:\n  if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }" (statement_identifier "LAB_00104ca5") (: ":") (if_statement "if (psVar6 != psVar1) {\nLAB_00104cac:\n    free(psVar6);\n  }" (if "if") (parenthesized_expression "(psVar6 != psVar1)" (( "(") (binary_expression "psVar6 != psVar1" (identifier "psVar6") (!= "!=") (identifier "psVar1")) () ")")) (compound_statement "{\nLAB_00104cac:\n    free(psVar6);\n  }" ({ "{") (labeled_statement "LAB_00104cac:\n    free(psVar6);" (statement_identifier "LAB_00104cac") (: ":") (expression_statement "free(psVar6);" (call_expression "free(psVar6)" (identifier "free") (argument_list "(psVar6)" (( "(") (identifier "psVar6") () ")"))) (; ";"))) (} "}")))) (return_statement "return uVar11;" (return "return") (identifier "uVar11") (; ";")) (} "}")))

/* WARNING: Unknown calling convention */

int function_1(void)

{
  char var_27;
  short sVar2;
  int var_2;
  type_1 var_25;
  type_2 *var_30;
  type_1 var_26;
  type_3 var_23;
  type_4 *pYVar8;
  type_4 *var_8;
  type_3 var_28;
  type_2 *var_6;
  type_5 *in_RDI;
  type_2 *var_7;
  type_4 YVar12;
  type_1 var_1;
  long var_32;
  type_2 *var_29;
  long lVar16;
  type_4 *var_34;
  type_6 yStack_80a;
  type_6 yyssa [200];
  type_4 yyvsa [200];
  
  lVar16 = 0;
  var_28 = 200;
  var_3 = 0;
  var_34 = yyvsa;
  var_5 = -2;
  yyssa[0] = 0;
  var_2 = 0;
  var_8 = var_34;
  var_7 = (type_2 *)yyssa;
  var_6 = (type_2 *)yyssa;
  do {
    var_1 = (type_1)yypact[lVar16];
    var_30 = var_7;
    if (var_1 == 0xfffffff2) {
LAB_00104bf8:
      var_26 = (type_1)"\x02"[lVar16];
      if ("\x02"[lVar16] == 0) {
        if (var_2 == 0) {
          var_3 = var_3 + 1;
          var_4((char *)in_RDI);
        }
        else if (var_2 == 3) {
          if (var_5 < 1) {
            if (var_5 == 0) {
              var_2 = 1;
              goto LAB_00104ca5;
            }
          }
          else {
            var_5 = -2;
          }
        }
        while ((((var_1 == 0xfffffff2 || (var_1 = var_1 + 1, 0x22 < var_1)) ||
                ("\r"[(int)var_1] != '\x01')) ||
               (lVar16 = (long)yytable[(int)var_1], yytable[(int)var_1] < '\x01'))) {
          if (var_6 == var_7) {
            var_2 = 1;
            var_30 = var_6;
            goto LAB_00104ca5;
          }
          var_6 = (type_2 *)((long)&var_6[-1].next + 6);
          var_8 = var_8 + -1;
          var_1 = (type_1)yypact[*(short *)&var_6->name];
        }
        pYVar8 = var_8 + 1;
        var_2 = 3;
        *pYVar8 = yylval;
      }
      else {
LAB_00104a58:
        var_23 = (type_3)""[(int)var_26];
        YVar12 = var_8[(int)(1 - (type_1)""[(int)var_26])];
        switch(var_26) {
        case 2:
        case 6:
          var_9();
          break;
        case 0x13:
          var_10();
          return 0;
        case 0x15:
          var_4((char *)in_RDI);
          break;
        case 0x17:
          in_RDI = (type_5 *)var_8->type_2;
          var_11((type_2 *)in_RDI);
          break;
        case 0x18:
          in_RDI = (type_5 *)var_8->type_2;
          var_12((type_2 *)in_RDI);
          break;
        case 0x19:
          var_13();
          break;
        case 0x1a:
          in_RDI = (type_5 *)var_8->type_2;
          var_14((type_2 *)in_RDI);
          break;
        case 0x1b:
          in_RDI = (type_5 *)var_8->type_2;
          var_15((type_2 *)in_RDI);
          break;
        case 0x1c:
          var_16();
          break;
        case 0x1d:
          var_17();
          break;
        case 0x1e:
          in_RDI = (type_5 *)var_8->name;
          var_18((char *)in_RDI,0);
          break;
        case 0x1f:
          in_RDI = (type_5 *)var_8->name;
          var_18((char *)in_RDI,1);
          break;
        case 0x20:
          in_RDI = (type_5 *)var_8[-1].name;
          var_19((char *)in_RDI,var_8->type_2);
          break;
        case 0x21:
          in_RDI = (type_5 *)var_8[-2].name;
          var_20((char *)in_RDI,var_8[-1].type_2,var_8->name);
          break;
        case 0x22:
          YVar12.type_2 = *(type_2 **)var_8;
          break;
        case 0x23:
        case 0x25:
        case 0x27:
          YVar12.name = (char *)0x0;
          break;
        case 0x24:
          YVar12 = var_8[-1];
          break;
        case 0x26:
          in_RDI = (type_5 *)0x10;
          YVar12.name = (char *)var_21(0x10);
          (YVar12.type_2)->next = (type_2 *)var_8[-2];
          (YVar12.type_2)->name = (char *)*(type_2 **)var_8;
          break;
        case 0x2a:
          var_22 = (int)(var_22 == 0);
        }
        var_6 = (type_2 *)((long)var_6 + var_23 * -2);
        sVar2 = *(short *)&var_6->name;
        pYVar8 = var_8 + (1 - var_23);
        var_8[1 - var_23] = YVar12;
        var_1 = (int)yypgoto[(int)(""[(int)var_26] - 0x18)] + (int)sVar2;
        if (var_1 < 0x23) {
          in_RDI = (type_5 *)(type_3)"\r"[(int)var_1];
          if ((int)sVar2 == (type_1)"\r"[(int)var_1]) {
            lVar16 = (long)yytable[(int)var_1];
            goto LAB_00104aff;
          }
        }
        lVar16 = (long)yydefgoto[(int)(""[(int)var_26] - 0x18)];
      }
    }
    else {
      if (var_5 == -2) {
        var_5 = var_24();
      }
      if (var_5 < 1) {
        var_5 = 0;
        var_25 = 0;
        var_26 = var_1;
      }
      else if (var_5 < 0x114) {
        var_25 = (type_1)""[var_5];
        var_26 = var_1 + var_25;
      }
      else {
        var_25 = 2;
        var_26 = var_1 + 2;
      }
      if (0x22 < var_26) goto LAB_00104bf8;
      in_RDI = "\r";
      if ("\r"[(int)var_26] != var_25) goto LAB_00104bf8;
      var_27 = yytable[(int)var_26];
      lVar16 = (long)var_27;
      var_26 = -(int)var_27;
      if (var_27 < '\x01') goto LAB_00104a58;
      var_5 = -2;
      var_2 = var_2 + -1 + (type_1)(var_2 == 0);
      pYVar8 = var_8 + 1;
      *pYVar8 = yylval;
    }
LAB_00104aff:
    var_23 = var_28 * 2;
    var_29 = (type_2 *)((long)&var_6->name + 2);
    *(short *)((long)&var_6->name + 2) = (short)lVar16;
    if ((type_2 *)((long)var_7 + (var_23 - 2)) <= var_29) {
      var_32 = (long)var_29 - (long)var_7 >> 1;
      if (var_28 < 10000) {
        var_28 = 10000;
        if (var_23 < 0x2711) {
          var_28 = var_23;
        }
        in_RDI = (type_5 *)(var_28 * 10 + 7);
        var_30 = (type_2 *)var_21((size_t)in_RDI);
        if (var_30 != (type_2 *)0x0) {
          var_31(var_30,var_7,var_32 * 2 + 2);
          in_RDI = (type_5 *)((long)&var_30->name + var_28 * 2);
          var_34 = (type_4 *)var_31(in_RDI,var_34,(var_32 + 1) * 8);
          if (var_7 != (type_2 *)yyssa) {
            var_33(var_7);
            in_RDI = (type_5 *)var_7;
          }
          var_29 = (type_2 *)((long)&var_30->name + var_32 * 2);
          pYVar8 = var_34 + var_32;
          if (var_29 < (type_2 *)((long)var_30 + var_28 * 2 + -2)) goto LAB_00104be1;
          var_2 = 1;
          goto LAB_00104cac;
        }
      }
      var_2 = 2;
      var_4((char *)in_RDI);
      var_30 = var_7;
      goto LAB_00104ca5;
    }
LAB_00104be1:
    var_8 = pYVar8;
    var_7 = var_30;
    var_6 = var_29;
  } while ((int)lVar16 != 3);
  var_2 = 0;
LAB_00104ca5:
  if (var_30 != (type_2 *)yyssa) {
LAB_00104cac:
    var_33(var_30);
  }
  return var_2;
}


(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: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (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: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (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))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (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 (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (number_literal) right: (identifier)))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (char_literal (escape_sequence)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (char_literal (escape_sequence)))))))) 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: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (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)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (number_literal) 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)))))))))) (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: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (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: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (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 (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal)))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (pointer_expression argument: (identifier))))) (break_statement)) (case_statement value: (number_literal) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (number_literal)) (pointer_expression argument: (identifier))))) (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: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (number_literal) right: (identifier))) 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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))))))))))))) alternative: (else_clause (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (pointer_expression argument: (identifier)) right: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (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: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (identifier)) (identifier) (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 MASKED(void)

{
  short *psVar1;
  char cVar2;
  short sVar3;
  int iVar4;
  uint uVar5;
  short *psVar6;
  uint uVar7;
  ulong uVar8;
  undefined8 *puVar9;
  undefined8 *puVar10;
  undefined8 uVar11;
  ulong uVar12;
  short *psVar13;
  short *__src;
  undefined8 *puVar14;
  uint uVar15;
  long lVar16;
  short *psVar17;
  long lVar18;
  undefined8 *local_830;
  short asStack_80a [201];
  undefined8 local_678 [201];
  
  lVar18 = 0;
  uVar12 = 200;
  _DAT_00110690 = 0;
  psVar1 = asStack_80a + 1;
  local_830 = local_678;
  DAT_00110694 = -2;
  asStack_80a[1] = 0;
  iVar4 = 0;
  puVar10 = local_830;
  __src = psVar1;
  psVar13 = psVar1;
  do {
    uVar15 = (uint)(char)(&DAT_0010b2e0)[lVar18];
    psVar6 = __src;
    if (uVar15 == 0xfffffff2) {
LAB_00104bf8:
      uVar7 = (uint)(byte)(&DAT_0010b2a0)[lVar18];
      if ((&DAT_0010b2a0)[lVar18] == 0) {
        if (iVar4 == 0) {
          _DAT_00110690 = _DAT_00110690 + 1;
          FUN_00104920();
        }
        else if (iVar4 == 3) {
          if (DAT_00110694 < 1) {
            if (DAT_00110694 == 0) {
              uVar11 = 1;
              goto LAB_00104ca5;
            }
          }
          else {
            DAT_00110694 = -2;
          }
        }
        while ((((uVar15 == 0xfffffff2 || (uVar15 = uVar15 + 1, 0x22 < uVar15)) ||
                ((&DAT_0010b1e0)[(int)uVar15] != '\x01')) ||
               (lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15],
               (char)(&DAT_0010b220)[(int)uVar15] < '\x01'))) {
          if (psVar13 == __src) {
            uVar11 = 1;
            psVar6 = psVar13;
            goto LAB_00104ca5;
          }
          psVar13 = psVar13 + -1;
          puVar10 = puVar10 + -1;
          uVar15 = (uint)(char)(&DAT_0010b2e0)[*psVar13];
        }
        puVar9 = puVar10 + 1;
        iVar4 = 3;
        *puVar9 = DAT_00110698;
      }
      else {
LAB_00104a58:
        uVar8 = (ulong)(byte)(&DAT_0010b160)[(int)uVar7];
        puVar14 = (undefined8 *)puVar10[(int)(1 - (uint)(byte)(&DAT_0010b160)[(int)uVar7])];
        switch(uVar7) {
        case 2:
        case 6:
          FUN_00106540();
          break;
        case 0x13:
          FUN_00106df0();
          return 0;
        case 0x15:
          FUN_00104920();
          break;
        case 0x17:
          FUN_00106e30(*puVar10);
          break;
        case 0x18:
          FUN_00106b00(*puVar10);
          break;
        case 0x19:
          FUN_001068f0();
          break;
        case 0x1a:
          FUN_00106910(*puVar10);
          break;
        case 0x1b:
          FUN_001067f0(*puVar10);
          break;
        case 0x1c:
          FUN_00106d20();
          break;
        case 0x1d:
          FUN_00106a50();
          break;
        case 0x1e:
          FUN_001065a0(*puVar10,0);
          break;
        case 0x1f:
          FUN_001065a0(*puVar10,1);
          break;
        case 0x20:
          FUN_00106740(puVar10[-1],*puVar10);
          break;
        case 0x21:
          FUN_00106440(puVar10[-2],puVar10[-1],*puVar10);
          break;
        case 0x22:
          puVar14 = (undefined8 *)*puVar10;
          break;
        case 0x23:
        case 0x25:
        case 0x27:
          puVar14 = (undefined8 *)0x0;
          break;
        case 0x24:
          puVar14 = (undefined8 *)puVar10[-1];
          break;
        case 0x26:
          puVar14 = (undefined8 *)malloc(0x10);
          puVar14[1] = puVar10[-2];
          *puVar14 = *puVar10;
          break;
        case 0x2a:
          DAT_00110498 = (uint)(DAT_00110498 == 0);
        }
        psVar13 = psVar13 + -uVar8;
        sVar3 = *psVar13;
        puVar9 = puVar10 + (1 - uVar8);
        puVar10[1 - uVar8] = puVar14;
        uVar15 = (int)(char)(&DAT_0010b270)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)] +
                 (int)sVar3;
        if ((uVar15 < 0x23) && ((int)sVar3 == (uint)(byte)(&DAT_0010b1e0)[(int)uVar15])) {
          lVar18 = (long)(char)(&DAT_0010b220)[(int)uVar15];
        }
        else {
          lVar18 = (long)(char)(&DAT_0010b250)[(int)((byte)(&DAT_0010b1a0)[(int)uVar7] - 0x18)];
        }
      }
    }
    else {
      if (DAT_00110694 == -2) {
        DAT_00110694 = FUN_001054d0();
      }
      if (DAT_00110694 < 1) {
        DAT_00110694 = 0;
        uVar5 = 0;
        uVar7 = uVar15;
      }
      else if (DAT_00110694 < 0x114) {
        uVar5 = (uint)(byte)(&DAT_0010b320)[DAT_00110694];
        uVar7 = uVar15 + uVar5;
      }
      else {
        uVar5 = 2;
        uVar7 = uVar15 + 2;
      }
      if ((0x22 < uVar7) || ((byte)(&DAT_0010b1e0)[(int)uVar7] != uVar5)) goto LAB_00104bf8;
      cVar2 = (&DAT_0010b220)[(int)uVar7];
      lVar18 = (long)cVar2;
      uVar7 = -(int)cVar2;
      if (cVar2 < '\x01') goto LAB_00104a58;
      DAT_00110694 = -2;
      iVar4 = iVar4 + -1 + (uint)(iVar4 == 0);
      puVar9 = puVar10 + 1;
      *puVar9 = DAT_00110698;
    }
    uVar8 = uVar12 * 2;
    psVar17 = psVar13 + 1;
    psVar13[1] = (short)lVar18;
    if (__src + (uVar12 - 1) <= psVar17) {
      lVar16 = (long)psVar17 - (long)__src >> 1;
      if (uVar12 < 10000) {
        uVar12 = 10000;
        if (uVar8 < 0x2711) {
          uVar12 = uVar8;
        }
        psVar6 = (short *)malloc(uVar12 * 10 + 7);
        if (psVar6 != (short *)0x0) {
          memcpy(psVar6,__src,(lVar16 + 1) * 2);
          local_830 = (undefined8 *)memcpy(psVar6 + uVar12,local_830,(lVar16 + 1) * 8);
          if (__src != psVar1) {
            free(__src);
          }
          psVar17 = psVar6 + lVar16;
          puVar9 = local_830 + lVar16;
          if (psVar17 < psVar6 + (uVar12 - 1)) goto LAB_00104be1;
          uVar11 = 1;
          goto LAB_00104cac;
        }
      }
      uVar11 = 2;
      FUN_00104920();
      psVar6 = __src;
      goto LAB_00104ca5;
    }
LAB_00104be1:
    puVar10 = puVar9;
    __src = psVar6;
    psVar13 = psVar17;
  } while ((int)lVar18 != 3);
  uVar11 = 0;
LAB_00104ca5:
  if (psVar6 != psVar1) {
LAB_00104cac:
    free(psVar6);
  }
  return uVar11;
}

