
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char,
   std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned
   int>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned int&) const */

void std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::
     _M_extract_int<unsigned_int>(void)

{
}



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

undefined4 *
FUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,
            int param_6,int param_7,uint *param_8,uint *param_9)

{
  byte bVar1;
  bool bVar2;
  byte bVar3;
  char cVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  void *pvVar10;
  bool bVar11;
  bool bVar12;
  bool bVar13;
  uint uVar14;
  bool bVar15;
  undefined4 *local_50;
  undefined4 *local_4c;
  uint local_40;
  uint local_3c;
  int local_38;
  byte local_33;
  char local_32;
  uint local_30;
  undefined1 local_22 [2];
  undefined *local_20 [3];
  undefined4 uStack_14;
  
  iVar9 = param_7;
  uStack_14 = 0x3cbe8b;
  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);
  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;
  if (uVar7 == 0x40) {
    local_30 = 8;
LAB_003cbece:
    local_32 = FUN_003c8240(&param_3,&param_5);
    if (local_32 == '\0') {
LAB_003cbef5:
      local_4c = &param_3;
      local_50 = &param_5;
      uVar8 = FUN_003c04a0();
      cVar4 = *(char *)(iVar6 + 0x10);
      cVar5 = (char)uVar8;
      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;
      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&
          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&
         (*(char *)(iVar6 + 0x24) != cVar5)) {
        FUN_003b97a0(param_3);
        param_4 = 0xffffffff;
        local_32 = FUN_003c8240(local_4c,local_50);
        if (local_32 == '\0') {
          uVar8 = FUN_003c04a0();
          cVar4 = *(char *)(iVar6 + 0x10);
          goto LAB_003cbfd8;
        }
        cVar4 = *(char *)(iVar6 + 0x10);
        local_38 = 0;
        bVar2 = false;
      }
      else {
LAB_003cbfd8:
        local_38 = 0;
        bVar2 = false;
        do {
          cVar5 = (char)uVar8;
          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||
             (*(char *)(iVar6 + 0x24) == cVar5)) break;
          if (*(char *)(iVar6 + 0x4e) == cVar5) {
            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);
            if (!bVar13) goto LAB_003cc011;
            bVar2 = uVar7 == 0 || local_30 == 8;
            if (uVar7 != 0 && local_30 != 8) {
              local_38 = local_38 + 1;
              goto LAB_003cc048;
            }
            local_38 = 0;
            local_30 = 8;
            uVar14 = param_3[2];
            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;
LAB_003cc057:
            param_3[2] = uVar14 + 1;
LAB_003cc064:
            param_4 = 0xffffffff;
            bVar13 = false;
            if (((uint)param_3[3] <= (uint)param_3[2]) &&
               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {
              param_3 = (int *)0x0;
              bVar13 = true;
            }
          }
          else {
            if (!bVar2) break;
LAB_003cc011:
            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {
              local_32 = '\0';
              bVar2 = true;
              goto LAB_003cc0a0;
            }
            local_32 = local_30 == 0x10 || uVar7 == 0;
            if (local_30 != 0x10 && uVar7 != 0) {
              bVar2 = true;
              goto LAB_003cc0ad;
            }
            local_38 = 0;
            bVar13 = false;
            local_30 = 0x10;
LAB_003cc048:
            uVar14 = param_3[2];
            bVar2 = bVar13;
            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;
LAB_003cc270:
            (**(code **)(*param_3 + 0x28))(param_3);
            param_4 = 0xffffffff;
            if (param_3 != (int *)0x0) goto LAB_003cc064;
            bVar13 = true;
          }
          bVar11 = param_5 != (int *)0x0 && param_6 == -1;
          local_40._0_1_ = param_6 == -1;
          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {
            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);
            local_40._0_1_ = false;
            if (iVar9 == -1) {
              param_5 = (int *)0x0;
              local_40._0_1_ = bVar11;
            }
          }
          if ((bool)(char)local_40 == bVar13) {
            local_32 = '\x01';
            cVar4 = *(char *)(iVar6 + 0x10);
            goto LAB_003cc0a0;
          }
          uVar8 = param_4;
          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {
            if ((byte *)param_3[2] < (byte *)param_3[3]) {
              uVar8 = (uint)*(byte *)param_3[2];
            }
            else {
              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);
              if (uVar8 == 0xffffffff) {
                param_3 = (int *)0x0;
                uVar8 = 0xffffffff;
              }
            }
          }
          cVar4 = *(char *)(iVar6 + 0x10);
        } while (bVar2);
        local_32 = '\0';
      }
LAB_003cc0a0:
      local_40 = 0x16;
      if (local_30 == 0x10) goto LAB_003cc0b3;
    }
    else {
      cVar4 = *(char *)(iVar6 + 0x10);
      uVar8 = 0;
      local_38 = 0;
      bVar2 = false;
      bVar15 = false;
    }
LAB_003cc0ad:
    local_40 = local_30;
  }
  else {
    if (uVar7 != 8) {
      local_30 = 10;
      goto LAB_003cbece;
    }
    local_32 = FUN_003c8240(&param_3,&param_5);
    local_30 = 0x10;
    if (local_32 == '\0') goto LAB_003cbef5;
    cVar4 = *(char *)(iVar6 + 0x10);
    uVar8 = 0;
    local_38 = 0;
    bVar2 = false;
    bVar15 = false;
    local_40 = 0x16;
  }
LAB_003cc0b3:
  cVar5 = local_32;
  local_4c = &param_3;
  local_50 = &param_5;
  local_20[0] = &DAT_005f308c;
  if (cVar4 != '\0') {
    FUN_003e6d30(local_20,0x20);
  }
  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);
  bVar1 = *(byte *)(iVar6 + 100);
  if (bVar1 == 0) {
    local_33 = 0;
    if (local_32 == '\0') {
      local_3c = 0;
      do {
        cVar4 = (char)uVar8;
        iVar9 = (int)cVar4;
        if (local_40 < 0xb) {
          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;
LAB_003cc133:
          uVar8 = iVar9 - 0x30;
        }
        else {
          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;
          if ((byte)(cVar4 + 0x9fU) < 6) {
            uVar8 = iVar9 - 0x57;
          }
          else {
            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;
            uVar8 = iVar9 - 0x37;
          }
        }
        if (uVar8 == 0xffffffff) goto LAB_003cc300;
        if (uVar7 < local_3c) {
          local_33 = 1;
          uVar8 = param_3[2];
          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;
LAB_003cc173:
          param_3[2] = uVar8 + 1;
LAB_003cc180:
          param_4 = 0xffffffff;
          bVar13 = false;
                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */
          if (((uint)param_3[3] <= (uint)param_3[2]) &&
             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {
            param_3 = (int *)0x0;
            bVar13 = true;
          }
        }
        else {
          uVar14 = local_3c * local_30;
          local_3c = uVar8 + uVar14;
          local_33 = local_33 | ~uVar8 < uVar14;
          local_38 = local_38 + 1;
          uVar8 = param_3[2];
          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;
LAB_003cc3a3:
          (**(code **)(*param_3 + 0x28))(param_3);
          param_4 = 0xffffffff;
          if (param_3 != (int *)0x0) goto LAB_003cc180;
          bVar13 = true;
        }
        bVar12 = param_5 != (int *)0x0 && param_6 == -1;
        bVar11 = param_6 == -1;
        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {
          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);
          bVar11 = false;
          if (iVar9 == -1) {
            param_5 = (int *)0x0;
            bVar11 = bVar12;
          }
        }
        if (bVar11 == bVar13) goto code_r0x003cc1af;
                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */
        uVar8 = FUN_003c04a0();
      } while( true );
    }
    local_3c = 0;
    local_32 = '\0';
    goto LAB_003cc1b4;
  }
  if (local_32 != '\0') {
    local_3c = 0;
    local_33 = 0;
    local_32 = '\0';
    goto LAB_003cc1b4;
  }
  local_33 = 0;
  cVar4 = *(char *)(iVar6 + 0x10);
  local_3c = 0;
  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;
LAB_003cc4d4:
  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&
     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {
    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);
    if (0xf < (int)uVar8) {
      uVar8 = uVar8 - 6;
    }
    bVar3 = bVar1;
    if (local_3c <= uVar7) {
      uVar14 = local_3c * local_30;
      local_3c = uVar8 + uVar14;
      local_38 = local_38 + 1;
      bVar3 = local_33 | ~uVar8 < uVar14;
    }
    local_33 = bVar3;
    uVar8 = param_3[2];
    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;
    do {
      param_3[2] = uVar8 + 1;
      while( true ) {
        param_4 = 0xffffffff;
        cVar5 = FUN_003c8240(local_4c,local_50);
        if (cVar5 != '\0') goto LAB_003cc1b4;
        uVar8 = FUN_003c04a0();
        cVar4 = *(char *)(iVar6 + 0x10);
        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;
LAB_003cc592:
        if (local_38 == 0) {
          cVar5 = '\0';
          local_32 = cVar4;
          goto LAB_003cc1b4;
        }
        FUN_003e7350(local_20,(int)(char)local_38);
        local_38 = 0;
        uVar8 = param_3[2];
        if (uVar8 < (uint)param_3[3]) break;
LAB_003cc5c8:
        (**(code **)(*param_3 + 0x28))(param_3);
      }
    } while( true );
  }
LAB_003cc300:
  cVar5 = '\0';
  cVar4 = '\0';
  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;
LAB_003cc1c2:
  if (bVar2) goto LAB_003cc361;
joined_r0x003cc35b:
  if (local_38 != 0) goto LAB_003cc361;
  goto LAB_003cc1d7;
code_r0x003cc1af:
  cVar5 = '\x01';
LAB_003cc1b4:
  cVar4 = cVar5;
  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;
LAB_003cc310:
  cVar5 = cVar4;
                    /* try { // try from 003cc322 to 003cc3ab has its CatchHandler @ 003cc761 */
  FUN_003e7350(local_20,(int)(char)local_38);
  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);
  if (cVar4 == '\0') {
    *param_8 = 4;
  }
  if ((local_38 == 0) && (!bVar2)) {
    local_38 = *(int *)(local_20[0] + -0xc);
    goto joined_r0x003cc35b;
  }
LAB_003cc361:
  if (local_32 == '\0') {
    if (local_33 == 0) {
      uVar7 = -local_3c;
      if (!bVar15) {
        uVar7 = local_3c;
      }
      *param_9 = uVar7;
    }
    else {
      *param_9 = 0xffffffff;
      *param_8 = 4;
    }
    goto LAB_003cc1e9;
  }
LAB_003cc1d7:
  *param_9 = 0;
  *param_8 = 4;
LAB_003cc1e9:
  if (cVar5 != '\0') {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_20[0] == &DAT_005f308c) {
    return param_1;
  }
  FUN_003c0300();
  return param_1;
}


PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x21e175
SUB ESP,0x64
MOV EDI,dword ptr [EBP + 0x20]
LEA EAX,[EDI + 0x6c]
PUSH EAX
LEA EAX,[EBP + -0x1e]
PUSH EAX
MOV dword ptr [EBP + -0x44],EBX
CALL 0x003c6ba0
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [EDI + 0xc]
AND EAX,0x4a
MOV dword ptr [EBP + -0x38],EAX
CMP EAX,0x40
JZ 0x003cc5f0
CMP EAX,0x8
JZ 0x003cbf78
MOV dword ptr [EBP + -0x2c],0xa
SUB ESP,0x8
LEA EAX,[EBP + 0x18]
MOV EBX,dword ptr [EBP + -0x44]
PUSH EAX
MOV dword ptr [EBP + -0x4c],EAX
LEA EAX,[EBP + 0x10]
PUSH EAX
MOV dword ptr [EBP + -0x48],EAX
CALL 0x003c8240
ADD ESP,0x10
MOV byte ptr [EBP + -0x2e],AL
TEST AL,AL
JNZ 0x003cc620
MOV EDX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EBP + -0x48]
CALL 0x003c04a0
MOVZX EDX,byte ptr [ESI + 0x4a]
MOVZX ECX,byte ptr [ESI + 0x10]
MOV EDI,EAX
CMP DL,AL
SETZ byte ptr [EBP + -0x55]
JZ 0x003cbf1b
CMP byte ptr [ESI + 0x4b],AL
JNZ 0x003cbfd8
TEST CL,CL
JZ 0x003cbf28
CMP byte ptr [ESI + 0x25],AL
JZ 0x003cbfd8
CMP byte ptr [ESI + 0x24],AL
JZ 0x003cbfd8
SUB ESP,0xc
PUSH dword ptr [EBP + 0x10]
MOV EBX,dword ptr [EBP + -0x44]
CALL 0x003b97a0
POP ECX
POP EBX
PUSH dword ptr [EBP + -0x4c]
MOV EBX,dword ptr [EBP + -0x44]
PUSH dword ptr [EBP + -0x48]
MOV dword ptr [EBP + 0x14],0xffffffff
CALL 0x003c8240
ADD ESP,0x10
MOV byte ptr [EBP + -0x2e],AL
TEST AL,AL
JZ 0x003cbfc7
MOVZX ECX,byte ptr [ESI + 0x10]
MOV dword ptr [EBP + -0x34],0x0
MOV byte ptr [EBP + -0x2d],0x0
JMP 0x003cc0a0
SUB ESP,0x8
LEA EAX,[EBP + 0x18]
MOV EBX,dword ptr [EBP + -0x44]
PUSH EAX
MOV dword ptr [EBP + -0x4c],EAX
LEA EAX,[EBP + 0x10]
PUSH EAX
MOV dword ptr [EBP + -0x48],EAX
CALL 0x003c8240
ADD ESP,0x10
MOV dword ptr [EBP + -0x2c],0x10
MOV byte ptr [EBP + -0x2e],AL
TEST AL,AL
JZ 0x003cbef5
MOVZX ECX,byte ptr [ESI + 0x10]
XOR EDI,EDI
MOV dword ptr [EBP + -0x34],0x0
MOV byte ptr [EBP + -0x2d],0x0
MOV byte ptr [EBP + -0x55],0x0
MOV dword ptr [EBP + -0x3c],0x16
JMP 0x003cc0b3
MOV EDX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EBP + -0x48]
CALL 0x003c04a0
MOVZX ECX,byte ptr [ESI + 0x10]
MOV EDI,EAX
MOV dword ptr [EBP + -0x34],0x0
MOV EBX,EDI
MOV byte ptr [EBP + -0x2d],0x0
LEA ESI,[ESI]
TEST CL,CL
JZ 0x003cbff5
CMP byte ptr [ESI + 0x25],BL
JZ 0x003cc2c8
CMP byte ptr [ESI + 0x24],BL
JZ 0x003cc2c8
CMP byte ptr [ESI + 0x4e],BL
JZ 0x003cc220
CMP byte ptr [EBP + -0x2d],0x0
JZ 0x003cc2c8
CMP byte ptr [ESI + 0x4c],BL
JZ 0x003cc01f
CMP byte ptr [ESI + 0x4d],BL
JNZ 0x003cc6d0
MOV EDI,dword ptr [EBP + -0x38]
CMP dword ptr [EBP + -0x2c],0x10
SETZ AL
TEST EDI,EDI
SETZ DL
OR AL,DL
JZ 0x003cc6f4
MOV dword ptr [EBP + -0x34],0x0
MOV byte ptr [EBP + -0x2d],0x0
MOV dword ptr [EBP + -0x2c],0x10
MOV EAX,dword ptr [EBP + 0x10]
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JNC 0x003cc270
ADD EDX,0x1
MOV dword ptr [EBP + 0x14],0xffffffff
MOV dword ptr [EAX + 0x8],EDX
XOR EDI,EDI
MOV ECX,dword ptr [EAX + 0xc]
CMP dword ptr [EAX + 0x8],ECX
JNC 0x003cc640
MOV EAX,dword ptr [EBP + 0x18]
CMP dword ptr [EBP + 0x1c],-0x1
SETZ DL
TEST EAX,EAX
SETNZ CL
AND CL,DL
MOV byte ptr [EBP + -0x2e],CL
JNZ 0x003cc3d0
MOV EAX,EDI
CMP DL,AL
JNZ 0x003cc2a0
MOV byte ptr [EBP + -0x2e],0x1
MOVZX ECX,byte ptr [ESI + 0x10]
MOV EDI,EBX
CMP dword ptr [EBP + -0x2c],0x10
MOV dword ptr [EBP + -0x3c],0x16
JZ 0x003cc0b3
MOV EAX,dword ptr [EBP + -0x2c]
MOV dword ptr [EBP + -0x3c],EAX
MOV EAX,dword ptr [EBP + -0x44]
LEA EAX,[EAX + 0x9080]
MOV dword ptr [EBP + -0x54],EAX
ADD EAX,0xc
MOV dword ptr [EBP + -0x1c],EAX
TEST CL,CL
JNZ 0x003cc600
MOV EAX,0xffffffff
XOR EDX,EDX
DIV dword ptr [EBP + -0x2c]
MOV dword ptr [EBP + -0x40],EAX
MOVZX EAX,byte ptr [ESI + 0x64]
MOV byte ptr [EBP + -0x30],AL
TEST AL,AL
JNZ 0x003cc4a0
CMP byte ptr [EBP + -0x2e],0x0
MOV byte ptr [EBP + -0x2f],0x0
JNZ 0x003cc71a
MOVZX EAX,byte ptr [EBP + -0x3c]
MOV dword ptr [EBP + -0x38],0x0
ADD EAX,0x30
MOV byte ptr [EBP + -0x4c],AL
LEA ESI,[ESI]
NOP
MOV EAX,EDI
CMP dword ptr [EBP + -0x3c],0xa
MOVSX EAX,AL
JA 0x003cc2d8
MOV ECX,EDI
CMP CL,0x2f
JLE 0x003cc300
CMP byte ptr [EBP + -0x4c],CL
JLE 0x003cc300
SUB EAX,0x30
CMP EAX,-0x1
JZ 0x003cc300
MOV EDI,dword ptr [EBP + -0x38]
CMP dword ptr [EBP + -0x40],EDI
JC 0x003cc390
IMUL EDI,dword ptr [EBP + -0x2c]
MOV ECX,EAX
NOT ECX
CMP ECX,EDI
SETC CL
ADD EAX,EDI
OR byte ptr [EBP + -0x2f],CL
MOV dword ptr [EBP + -0x38],EAX
MOV EAX,dword ptr [EBP + 0x10]
ADD dword ptr [EBP + -0x34],0x1
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JNC 0x003cc3a3
ADD EDX,0x1
MOV dword ptr [EBP + 0x14],0xffffffff
MOV dword ptr [EAX + 0x8],EDX
XOR EDI,EDI
MOV EBX,dword ptr [EAX + 0xc]
CMP dword ptr [EAX + 0x8],EBX
JNC 0x003cc6a0
MOV EAX,dword ptr [EBP + 0x18]
CMP dword ptr [EBP + 0x1c],-0x1
SETZ DL
TEST EAX,EAX
SETNZ BL
AND BL,DL
JNZ 0x003cc428
MOV EAX,EDI
CMP DL,AL
JNZ 0x003cc410
MOV EDI,0x1
MOV EAX,dword ptr [EBP + -0x1c]
MOV EDX,dword ptr [EAX + -0xc]
TEST EDX,EDX
JNZ 0x003cc310
CMP byte ptr [EBP + -0x2d],0x1
JZ 0x003cc361
MOV EDX,dword ptr [EBP + -0x34]
TEST EDX,EDX
JNZ 0x003cc361
MOV ESI,dword ptr [EBP + 0x28]
MOV dword ptr [ESI],0x0
MOV ESI,dword ptr [EBP + 0x24]
MOV dword ptr [ESI],0x4
MOV EBX,EDI
TEST BL,BL
JZ 0x003cc1f5
MOV ESI,dword ptr [EBP + 0x24]
OR dword ptr [ESI],0x2
MOV ESI,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EBP + 0x10]
SUB EAX,0xc
MOV EBX,dword ptr [EBP + 0x14]
MOV dword ptr [ESI],ECX
MOV dword ptr [ESI + 0x4],EBX
CMP EAX,dword ptr [EBP + -0x54]
JNZ 0x003cc6df
MOV EAX,dword ptr [EBP + 0x8]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
MOVZX EDX,byte ptr [EBP + -0x2d]
MOV EDI,dword ptr [EBP + -0x2c]
XOR EDX,0x1
CMP EDI,0xa
SETZ AL
OR AL,DL
JZ 0x003cc011
MOV EDX,dword ptr [EBP + -0x38]
TEST EDX,EDX
SETZ CL
CMP EDI,0x8
SETZ DL
OR CL,DL
MOV byte ptr [EBP + -0x2d],CL
JZ 0x003cc490
MOV EAX,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + -0x34],0x0
MOV dword ptr [EBP + -0x2c],0x8
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JC 0x003cc057
NOP
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x28]
MOV EAX,dword ptr [EBP + 0x10]
MOV dword ptr [EBP + 0x14],0xffffffff
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x003cc064
MOV EDI,0x1
JMP 0x003cc072
MOV EDX,dword ptr [EBP + 0x10]
MOV EBX,dword ptr [EBP + 0x14]
TEST EDX,EDX
JZ 0x003cc2b3
CMP EBX,-0x1
JZ 0x003cc478
CMP byte ptr [EBP + -0x2d],0x0
MOVZX ECX,byte ptr [ESI + 0x10]
JNZ 0x003cbfe8
LEA ESI,[ESI]
MOV EDI,EBX
MOV byte ptr [EBP + -0x2e],0x0
JMP 0x003cc0a0
LEA EDX,[EDI + -0x30]
CMP DL,0x9
JBE 0x003cc133
LEA EDX,[EDI + -0x61]
CMP DL,0x5
JA 0x003cc460
SUB EAX,0x57
CMP EAX,-0x1
JNZ 0x003cc13f
LEA ESI,[ESI]
MOV EAX,dword ptr [EBP + -0x1c]
XOR EDI,EDI
MOV EDX,dword ptr [EAX + -0xc]
TEST EDX,EDX
JZ 0x003cc1c2
MOVSX EAX,byte ptr [EBP + -0x34]
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x44]
PUSH EAX
LEA EAX,[EBP + -0x1c]
PUSH EAX
MOV dword ptr [EBP + -0x2c],EAX
CALL 0x003e7350
ADD ESP,0xc
PUSH dword ptr [EBP + -0x2c]
MOV EBX,dword ptr [EBP + -0x44]
PUSH dword ptr [ESI + 0xc]
PUSH dword ptr [ESI + 0x8]
CALL 0x003fe250
ADD ESP,0x10
TEST AL,AL
JZ 0x003cc690
MOV EBX,dword ptr [EBP + -0x34]
MOV EAX,dword ptr [EBP + -0x1c]
TEST EBX,EBX
JNZ 0x003cc361
CMP byte ptr [EBP + -0x2d],0x1
JZ 0x003cc361
MOV ECX,dword ptr [EAX + -0xc]
TEST ECX,ECX
JZ 0x003cc1d7
CMP byte ptr [EBP + -0x2e],0x0
JNZ 0x003cc1d7
CMP byte ptr [EBP + -0x2f],0x0
JZ 0x003cc670
MOV ESI,dword ptr [EBP + 0x28]
MOV dword ptr [ESI],0xffffffff
MOV ESI,dword ptr [EBP + 0x24]
MOV dword ptr [ESI],0x4
JMP 0x003cc1e9
MOV EAX,dword ptr [EBP + 0x10]
MOV byte ptr [EBP + -0x2f],0x1
MOV EDX,dword ptr [EAX + 0x8]
CMP EDX,dword ptr [EAX + 0xc]
JC 0x003cc173
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0x28]
MOV EAX,dword ptr [EBP + 0x10]
ADD ESP,0x10
MOV dword ptr [EBP + 0x14],0xffffffff
TEST EAX,EAX
JNZ 0x003cc180
MOV EDI,0x1
JMP 0x003cc18e
XOR EDX,EDX
MOV ECX,dword ptr [EAX + 0xc]
CMP dword ptr [EAX + 0x8],ECX
JC 0x003cc08c
SUB ESP,0xc
MOV ECX,dword ptr [EAX]
MOV byte ptr [EBP + -0x3c],DL
PUSH EAX
CALL dword ptr [ECX + 0x24]
MOVZX EDX,byte ptr [EBP + -0x3c]
ADD ESP,0x10
CMP EAX,-0x1
JNZ 0x003cc08c
MOV dword ptr [EBP + 0x18],0x0
MOVZX EDX,byte ptr [EBP + -0x2e]
JMP 0x003cc08c
MOV EDX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EBP + -0x48]
CALL 0x003c04a0
MOV EDI,EAX
JMP 0x003cc110
XOR EDX,EDX
MOV ECX,dword ptr [EAX + 0xc]
CMP dword ptr [EAX + 0x8],ECX
JC 0x003cc1a5
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0x24]
ADD ESP,0x10
XOR EDX,EDX
CMP EAX,-0x1
JNZ 0x003cc1a5
MOV dword ptr [EBP + 0x18],0x0
MOV EDX,EBX
JMP 0x003cc1a5
LEA EDX,[EDI + -0x41]
CMP DL,0x5
JA 0x003cc300
SUB EAX,0x37
JMP 0x003cc136
MOV EAX,dword ptr [EDX + 0x8]
CMP EAX,dword ptr [EDX + 0xc]
JNC 0x003cc702
MOVZX EBX,byte ptr [EAX]
JMP 0x003cc2b3
ADD dword ptr [EBP + -0x34],0x1
MOV byte ptr [EBP + -0x2d],AL
JMP 0x003cc048
CMP byte ptr [EBP + -0x2e],0x0
JNZ 0x003cc72e
LEA EAX,[ESI + 0x4e]
MOV byte ptr [EBP + -0x2f],0x0
MOV dword ptr [EBP + -0x50],EAX
LEA EAX,[EBP + -0x1c]
MOV dword ptr [EBP + -0x5c],EAX
MOVZX EAX,byte ptr [ESI + 0x10]
MOV dword ptr [EBP + -0x38],0x0
TEST AL,AL
JZ 0x003cc4d4
MOV EBX,EDI
CMP byte ptr [ESI + 0x25],BL
JZ 0x003cc592
MOV EAX,EDI
CMP AL,byte ptr [ESI + 0x24]
JZ 0x003cc300
MOV EAX,EDI
SUB ESP,0x4
PUSH dword ptr [EBP + -0x3c]
MOV EBX,dword ptr [EBP + -0x44]
MOVSX EDI,AL
PUSH EDI
MOV EDI,dword ptr [EBP + -0x50]
PUSH EDI
CALL 0x00039430
ADD ESP,0x10
TEST EAX,EAX
JZ 0x003cc300
SUB EAX,EDI
MOV ECX,dword ptr [EBP + -0x38]
LEA EDX,[EAX + -0x6]
CMP EAX,0xf
CMOVG EAX,EDX
CMP dword ptr [EBP + -0x40],ECX
JC 0x003cc5e0
IMUL ECX,dword ptr [EBP + -0x2c]
MOV EDX,ECX
MOV ECX,EAX
NOT ECX
CMP ECX,EDX
SETC CL
ADD EAX,EDX
OR byte ptr [EBP + -0x2f],CL
ADD dword ptr [EBP + -0x34],0x1
MOV dword ptr [EBP + -0x38],EAX
MOV EDX,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EDX + 0x8]
CMP EAX,dword ptr [EDX + 0xc]
JNC 0x003cc5c8
ADD EAX,0x1
MOV dword ptr [EDX + 0x8],EAX
SUB ESP,0x8
PUSH dword ptr [EBP + -0x4c]
MOV EBX,dword ptr [EBP + -0x44]
PUSH dword ptr [EBP + -0x48]
MOV dword ptr [EBP + 0x14],0xffffffff
CALL 0x003c8240
MOV EDI,EAX
ADD ESP,0x10
TEST AL,AL
JNZ 0x003cc1b4
MOV EDX,dword ptr [EBP + 0x14]
MOV EAX,dword ptr [EBP + -0x48]
CALL 0x003c04a0
MOV EDI,EAX
MOVZX EAX,byte ptr [ESI + 0x10]
TEST AL,AL
JZ 0x003cc4d4
MOV EBX,EDI
CMP byte ptr [ESI + 0x25],BL
JNZ 0x003cc4d4
MOV EBX,dword ptr [EBP + -0x34]
TEST EBX,EBX
JZ 0x003cc746
SUB ESP,0x8
MOVSX EAX,BL
MOV EBX,dword ptr [EBP + -0x44]
PUSH EAX
PUSH dword ptr [EBP + -0x5c]
CALL 0x003e7350
MOV EDX,dword ptr [EBP + 0x10]
ADD ESP,0x10
MOV dword ptr [EBP + -0x34],0x0
MOV EAX,dword ptr [EDX + 0x8]
CMP EAX,dword ptr [EDX + 0xc]
JC 0x003cc543
MOV EAX,dword ptr [EDX]
SUB ESP,0xc
PUSH EDX
CALL dword ptr [EAX + 0x28]
ADD ESP,0x10
JMP 0x003cc549
MOVZX EAX,byte ptr [EBP + -0x30]
MOV byte ptr [EBP + -0x2f],AL
JMP 0x003cc534
MOV dword ptr [EBP + -0x2c],0x8
JMP 0x003cbece
SUB ESP,0x8
LEA EAX,[EBP + -0x1c]
MOV EBX,dword ptr [EBP + -0x44]
PUSH 0x20
PUSH EAX
CALL 0x003e6d30
ADD ESP,0x10
JMP 0x003cc0cd
MOVZX ECX,byte ptr [ESI + 0x10]
XOR EDI,EDI
MOV dword ptr [EBP + -0x34],0x0
MOV byte ptr [EBP + -0x2d],0x0
MOV byte ptr [EBP + -0x55],0x0
JMP 0x003cc0ad
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
PUSH EAX
CALL dword ptr [EDX + 0x24]
ADD ESP,0x10
CMP EAX,-0x1
JNZ 0x003cc072
MOV dword ptr [EBP + 0x10],0x0
MOV EDI,0x1
JMP 0x003cc072
MOV ESI,dword ptr [EBP + -0x38]
MOV EDX,ESI
NEG EDX
CMP byte ptr [EBP + -0x55],0x0
CMOVZ EDX,ESI
MOV ESI,dword ptr [EBP + 0x28]
MOV dword ptr [ESI],EDX
JMP 0x003cc1e9
MOV EAX,dword ptr [EBP + 0x24]
MOV dword ptr [EAX],0x4
JMP 0x003cc346
MOV EDX,dword ptr [EAX]
SUB ESP,0xc
PUSH EAX
CALL dword ptr [EDX + 0x24]
ADD ESP,0x10
CMP EAX,-0x1
JNZ 0x003cc18e
MOV dword ptr [EBP + 0x10],0x0
MOV EDI,0x1
JMP 0x003cc18e
MOV EDI,EBX
MOV byte ptr [EBP + -0x2e],0x0
MOV byte ptr [EBP + -0x2d],0x1
JMP 0x003cc0a0
LEA EDX,[EBP + -0x1d]
CALL 0x003c0300
MOV EAX,dword ptr [EBP + 0x8]
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET 0x4
MOV byte ptr [EBP + -0x2e],AL
MOV EDI,EBX
MOV byte ptr [EBP + -0x2d],0x1
JMP 0x003cc0ad
SUB ESP,0xc
MOV EAX,dword ptr [EDX]
PUSH EDX
CALL dword ptr [EAX + 0x24]
ADD ESP,0x10
CMP EAX,-0x1
JZ 0x003cc750
MOV EBX,EAX
JMP 0x003cc2b3
MOVZX EDI,byte ptr [EBP + -0x2e]
MOV dword ptr [EBP + -0x38],0x0
MOV byte ptr [EBP + -0x2e],0x0
JMP 0x003cc1b4
MOVZX EDI,byte ptr [EBP + -0x2e]
MOV dword ptr [EBP + -0x38],0x0
MOV byte ptr [EBP + -0x2f],0x0
MOV byte ptr [EBP + -0x2e],0x0
JMP 0x003cc1b4
XOR EDI,EDI
MOV byte ptr [EBP + -0x2e],AL
JMP 0x003cc1b4
MOV dword ptr [EBP + 0x10],0x0
MOV EBX,0xffffffff
JMP 0x003cc2b3
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 *\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    /* try { // try from 003cc322 to 003cc3ab has its CatchHandler @ 003cc761 */\n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}\n\n" comment (function_definition "undefined4 *\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    /* try { // try from 003cc322 to 003cc3ab has its CatchHandler @ 003cc761 */\n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" * (function_declarator "FUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "uint *param_9" type_identifier (pointer_declarator "*param_9" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    /* try { // try from 003cc322 to 003cc3ab has its CatchHandler @ 003cc761 */\n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined4 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "byte local_33;" type_identifier identifier ;) (declaration "char local_32;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined1 local_22 [2];" type_identifier (array_declarator "local_22 [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_20 [3];" type_identifier (pointer_declarator "*local_20 [3]" * (array_declarator "local_20 [3]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar9 = param_7;" (assignment_expression "iVar9 = param_7" identifier = identifier) ;) (expression_statement "uStack_14 = 0x3cbe8b;" (assignment_expression "uStack_14 = 0x3cbe8b" identifier = number_literal) ;) (expression_statement "iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);" (assignment_expression "iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c)" identifier = (call_expression "FUN_003c6ba0(local_22,param_7 + 0x6c)" identifier (argument_list "(local_22,param_7 + 0x6c)" ( identifier , (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;" (assignment_expression "uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a" identifier = (binary_expression "*(uint *)(iVar9 + 0xc) & 0x4a" (pointer_expression "*(uint *)(iVar9 + 0xc)" * (cast_expression "(uint *)(iVar9 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" if (parenthesized_expression "(uVar7 == 0x40)" ( (binary_expression "uVar7 == 0x40" identifier == number_literal) )) (compound_statement "{\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }" { (expression_statement "local_30 = 8;" (assignment_expression "local_30 = 8" identifier = number_literal) ;) (labeled_statement "LAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);" statement_identifier : (expression_statement "local_32 = FUN_003c8240(&param_3,&param_5);" (assignment_expression "local_32 = FUN_003c8240(&param_3,&param_5)" identifier = (call_expression "FUN_003c8240(&param_3,&param_5)" identifier (argument_list "(&param_3,&param_5)" ( (pointer_expression "&param_3" & identifier) , (pointer_expression "&param_5" & identifier) )))) ;)) (if_statement "if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }" { (labeled_statement "LAB_003cbef5:\n      local_4c = &param_3;" statement_identifier : (expression_statement "local_4c = &param_3;" (assignment_expression "local_4c = &param_3" identifier = (pointer_expression "&param_3" & identifier)) ;)) (expression_statement "local_50 = &param_5;" (assignment_expression "local_50 = &param_5" identifier = (pointer_expression "&param_5" & identifier)) ;) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "cVar5 = (char)uVar8;" (assignment_expression "cVar5 = (char)uVar8" identifier = (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;" (assignment_expression "bVar15 = *(char *)(iVar6 + 0x4a) == cVar5" identifier = (binary_expression "*(char *)(iVar6 + 0x4a) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4a)" * (cast_expression "(char *)(iVar6 + 0x4a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4a)" ( (binary_expression "iVar6 + 0x4a" identifier + number_literal) )))) == identifier)) ;) (if_statement "if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" if (parenthesized_expression "((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5))" ( (binary_expression "(((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)" (parenthesized_expression "(((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5))))" ( (binary_expression "((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))" (parenthesized_expression "((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5))" ( (binary_expression "(bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)" (parenthesized_expression "(bVar15)" ( identifier )) || (parenthesized_expression "(*(char *)(iVar6 + 0x4b) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4b) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4b)" * (cast_expression "(char *)(iVar6 + 0x4b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4b)" ( (binary_expression "iVar6 + 0x4b" identifier + number_literal) )))) == identifier) ))) )) && (parenthesized_expression "((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))" ( (parenthesized_expression "(cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5))" ( (binary_expression "cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)" (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(char *)(iVar6 + 0x25) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x25) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) != identifier) ))) )) ))) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x24) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x24) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x24)" * (cast_expression "(char *)(iVar6 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }" { (expression_statement "FUN_003b97a0(param_3);" (call_expression "FUN_003b97a0(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_32 = FUN_003c8240(local_4c,local_50);" (assignment_expression "local_32 = FUN_003c8240(local_4c,local_50)" identifier = (call_expression "FUN_003c8240(local_4c,local_50)" identifier (argument_list "(local_4c,local_50)" ( identifier , identifier )))) ;) (if_statement "if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }" { (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_003cbfd8;" goto statement_identifier ;) })) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" else (compound_statement "{\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" { (labeled_statement "LAB_003cbfd8:\n        local_38 = 0;" statement_identifier : (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;)) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (do_statement "do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);" do (compound_statement "{\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        }" { (expression_statement "cVar5 = (char)uVar8;" (assignment_expression "cVar5 = (char)uVar8" identifier = (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;" if (parenthesized_expression "(((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5))" ( (binary_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)" (parenthesized_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5))" ( (binary_expression "(cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)" (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x25) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x25) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) == identifier) ))) )) || (parenthesized_expression "(*(char *)(iVar6 + 0x24) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x24) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x24)" * (cast_expression "(char *)(iVar6 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) == identifier) ))) )) (break_statement "break;" break ;)) (if_statement "if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" if (parenthesized_expression "(*(char *)(iVar6 + 0x4e) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4e) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4e)" * (cast_expression "(char *)(iVar6 + 0x4e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4e)" ( (binary_expression "iVar6 + 0x4e" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }" { (expression_statement "bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);" (assignment_expression "bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U)" identifier = (cast_expression "(bool)(local_30 == 10 | bVar2 ^ 1U)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(local_30 == 10 | bVar2 ^ 1U)" ( (binary_expression "local_30 == 10 | bVar2 ^ 1U" (binary_expression "local_30 == 10" identifier == number_literal) | (binary_expression "bVar2 ^ 1U" identifier ^ number_literal)) )))) ;) (if_statement "if (!bVar13) goto LAB_003cc011;" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (goto_statement "goto LAB_003cc011;" goto statement_identifier ;)) (expression_statement "bVar2 = uVar7 == 0 || local_30 == 8;" (assignment_expression "bVar2 = uVar7 == 0 || local_30 == 8" identifier = (binary_expression "uVar7 == 0 || local_30 == 8" (binary_expression "uVar7 == 0" identifier == number_literal) || (binary_expression "local_30 == 8" identifier == number_literal))) ;) (if_statement "if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }" if (parenthesized_expression "(uVar7 != 0 && local_30 != 8)" ( (binary_expression "uVar7 != 0 && local_30 != 8" (binary_expression "uVar7 != 0" identifier != number_literal) && (binary_expression "local_30 != 8" identifier != number_literal)) )) (compound_statement "{\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }" { (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_003cc048;" goto statement_identifier ;) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 8;" (assignment_expression "local_30 = 8" identifier = number_literal) ;) (expression_statement "uVar14 = param_3[2];" (assignment_expression "uVar14 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;" if (parenthesized_expression "((uint)param_3[3] <= uVar14)" ( (binary_expression "(uint)param_3[3] <= uVar14" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003cc270;" goto statement_identifier ;)) (labeled_statement "LAB_003cc057:\n            param_3[2] = uVar14 + 1;" statement_identifier : (expression_statement "param_3[2] = uVar14 + 1;" (assignment_expression "param_3[2] = uVar14 + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "uVar14 + 1" identifier + number_literal)) ;)) (labeled_statement "LAB_003cc064:\n            param_4 = 0xffffffff;" statement_identifier : (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (if_statement "if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }" if (parenthesized_expression "(((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1))" ( (binary_expression "((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" ( (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) )) && (parenthesized_expression "(iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" ( (comma_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1" (assignment_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) , (binary_expression "iVar9 == -1" identifier == number_literal)) ))) )) (compound_statement "{\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) })) }) (else_clause "else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" else (compound_statement "{\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" { (if_statement "if (!bVar2) break;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" statement_identifier : (if_statement "if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" if (parenthesized_expression "((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5))" ( (binary_expression "(*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)" (parenthesized_expression "(*(char *)(iVar6 + 0x4c) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4c) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x4c)" * (cast_expression "(char *)(iVar6 + 0x4c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4c)" ( (binary_expression "iVar6 + 0x4c" identifier + number_literal) )))) != identifier) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x4d) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4d) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x4d)" * (cast_expression "(char *)(iVar6 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4d)" ( (binary_expression "iVar6 + 0x4d" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" { (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (goto_statement "goto LAB_003cc0a0;" goto statement_identifier ;) }))) (expression_statement "local_32 = local_30 == 0x10 || uVar7 == 0;" (assignment_expression "local_32 = local_30 == 0x10 || uVar7 == 0" identifier = (binary_expression "local_30 == 0x10 || uVar7 == 0" (binary_expression "local_30 == 0x10" identifier == number_literal) || (binary_expression "uVar7 == 0" identifier == number_literal))) ;) (if_statement "if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }" if (parenthesized_expression "(local_30 != 0x10 && uVar7 != 0)" ( (binary_expression "local_30 != 0x10 && uVar7 != 0" (binary_expression "local_30 != 0x10" identifier != number_literal) && (binary_expression "uVar7 != 0" identifier != number_literal)) )) (compound_statement "{\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (goto_statement "goto LAB_003cc0ad;" goto statement_identifier ;) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "local_30 = 0x10;" (assignment_expression "local_30 = 0x10" identifier = number_literal) ;) (labeled_statement "LAB_003cc048:\n            uVar14 = param_3[2];" statement_identifier : (expression_statement "uVar14 = param_3[2];" (assignment_expression "uVar14 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;)) (expression_statement "bVar2 = bVar13;" (assignment_expression "bVar2 = bVar13" identifier = identifier) ;) (if_statement "if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;" if (parenthesized_expression "(uVar14 < (uint)param_3[3])" ( (binary_expression "uVar14 < (uint)param_3[3]" identifier < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003cc057;" goto statement_identifier ;)) (labeled_statement "LAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);" statement_identifier : (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" ( (pointer_expression "**(code **)(*param_3 + 0x28)" * (pointer_expression "*(code **)(*param_3 + 0x28)" * (cast_expression "(code **)(*param_3 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x28)" ( (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier ))) ;)) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_3 != (int *)0x0) goto LAB_003cc064;" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003cc064;" goto statement_identifier ;)) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) }))) (expression_statement "bVar11 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar11 = param_5 != (int *)0x0 && param_6 == -1" identifier = (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_6 == -1" identifier == number_literal))) ;) (expression_statement "local_40._0_1_ = param_6 == -1;" (assignment_expression "local_40._0_1_ = param_6 == -1" (field_expression "local_40._0_1_" identifier . field_identifier) = (binary_expression "param_6 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }" if (parenthesized_expression "((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2]))" ( (binary_expression "(bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])" (parenthesized_expression "(bVar11)" ( identifier )) && (parenthesized_expression "(local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])" ( (comma_expression "local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2]" (assignment_expression "local_40._0_1_ = false" (field_expression "local_40._0_1_" identifier . field_identifier) = false) , (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_5[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }" { (expression_statement "iVar9 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar9 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "local_40._0_1_ = false;" (assignment_expression "local_40._0_1_ = false" (field_expression "local_40._0_1_" identifier . field_identifier) = false) ;) (if_statement "if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }" { (expression_statement "param_5 = (int *)0x0;" (assignment_expression "param_5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_40._0_1_ = bVar11;" (assignment_expression "local_40._0_1_ = bVar11" (field_expression "local_40._0_1_" identifier . field_identifier) = identifier) ;) })) })) (if_statement "if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }" if (parenthesized_expression "((bool)(char)local_40 == bVar13)" ( (binary_expression "(bool)(char)local_40 == bVar13" (cast_expression "(bool)(char)local_40" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(char)local_40" ( (type_descriptor "char" primitive_type) ) identifier)) == identifier) )) (compound_statement "{\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }" { (expression_statement "local_32 = '\x01';" (assignment_expression "local_32 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_003cc0a0;" goto statement_identifier ;) })) (expression_statement "uVar8 = param_4;" (assignment_expression "uVar8 = param_4" identifier = identifier) ;) (if_statement "if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }" if (parenthesized_expression "((param_3 != (int *)0x0) && (param_4 == 0xffffffff))" ( (binary_expression "(param_3 != (int *)0x0) && (param_4 == 0xffffffff)" (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_4 == 0xffffffff)" ( (binary_expression "param_4 == 0xffffffff" identifier == number_literal) ))) )) (compound_statement "{\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }" { (if_statement "if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" if (parenthesized_expression "((byte *)param_3[2] < (byte *)param_3[3])" ( (binary_expression "(byte *)param_3[2] < (byte *)param_3[3]" (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n              uVar8 = (uint)*(byte *)param_3[2];\n            }" { (expression_statement "uVar8 = (uint)*(byte *)param_3[2];" (assignment_expression "uVar8 = (uint)*(byte *)param_3[2]" identifier = (binary_expression "(uint)*(byte *)param_3[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" else (compound_statement "{\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" { (expression_statement "uVar8 = (**(code **)(*param_3 + 0x24))(param_3);" (assignment_expression "uVar8 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(bVar2)" ( identifier )) ;) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (labeled_statement "LAB_003cc0a0:\n      local_40 = 0x16;" statement_identifier : (expression_statement "local_40 = 0x16;" (assignment_expression "local_40 = 0x16" identifier = number_literal) ;)) (if_statement "if (local_30 == 0x10) goto LAB_003cc0b3;" if (parenthesized_expression "(local_30 == 0x10)" ( (binary_expression "local_30 == 0x10" identifier == number_literal) )) (goto_statement "goto LAB_003cc0b3;" goto statement_identifier ;)) }) (else_clause "else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" else (compound_statement "{\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" { (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) }))) (labeled_statement "LAB_003cc0ad:\n    local_40 = local_30;" statement_identifier : (expression_statement "local_40 = local_30;" (assignment_expression "local_40 = local_30" identifier = identifier) ;)) }) (else_clause "else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" else (compound_statement "{\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" { (if_statement "if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }" if (parenthesized_expression "(uVar7 != 8)" ( (binary_expression "uVar7 != 8" identifier != number_literal) )) (compound_statement "{\n      local_30 = 10;\n      goto LAB_003cbece;\n    }" { (expression_statement "local_30 = 10;" (assignment_expression "local_30 = 10" identifier = number_literal) ;) (goto_statement "goto LAB_003cbece;" goto statement_identifier ;) })) (expression_statement "local_32 = FUN_003c8240(&param_3,&param_5);" (assignment_expression "local_32 = FUN_003c8240(&param_3,&param_5)" identifier = (call_expression "FUN_003c8240(&param_3,&param_5)" identifier (argument_list "(&param_3,&param_5)" ( (pointer_expression "&param_3" & identifier) , (pointer_expression "&param_5" & identifier) )))) ;) (expression_statement "local_30 = 0x10;" (assignment_expression "local_30 = 0x10" identifier = number_literal) ;) (if_statement "if (local_32 == '\0') goto LAB_003cbef5;" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_003cbef5;" goto statement_identifier ;)) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "local_40 = 0x16;" (assignment_expression "local_40 = 0x16" identifier = number_literal) ;) }))) (labeled_statement "LAB_003cc0b3:\n  cVar5 = local_32;" statement_identifier : (expression_statement "cVar5 = local_32;" (assignment_expression "cVar5 = local_32" identifier = identifier) ;)) (expression_statement "local_4c = &param_3;" (assignment_expression "local_4c = &param_3" identifier = (pointer_expression "&param_3" & identifier)) ;) (expression_statement "local_50 = &param_5;" (assignment_expression "local_50 = &param_5" identifier = (pointer_expression "&param_5" & identifier)) ;) (expression_statement "local_20[0] = &DAT_005f308c;" (assignment_expression "local_20[0] = &DAT_005f308c" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "&DAT_005f308c" & identifier)) ;) (if_statement "if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_003e6d30(local_20,0x20);\n  }" { (expression_statement "FUN_003e6d30(local_20,0x20);" (call_expression "FUN_003e6d30(local_20,0x20)" identifier (argument_list "(local_20,0x20)" ( identifier , number_literal ))) ;) })) (expression_statement "uVar7 = (uint)(0xffffffff / (ulonglong)local_30);" (assignment_expression "uVar7 = (uint)(0xffffffff / (ulonglong)local_30)" identifier = (call_expression "(uint)(0xffffffff / (ulonglong)local_30)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffffffff / (ulonglong)local_30)" ( (binary_expression "0xffffffff / (ulonglong)local_30" number_literal / (cast_expression "(ulonglong)local_30" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "bVar1 = *(byte *)(iVar6 + 100);" (assignment_expression "bVar1 = *(byte *)(iVar6 + 100)" identifier = (pointer_expression "*(byte *)(iVar6 + 100)" * (cast_expression "(byte *)(iVar6 + 100)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 100)" ( (binary_expression "iVar6 + 100" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" { (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" identifier = number_literal) ;) (if_statement "if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (do_statement "do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      } while( true );" do (compound_statement "{\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */\n        uVar8 = FUN_003c04a0();\n      }" { (expression_statement "cVar4 = (char)uVar8;" (assignment_expression "cVar4 = (char)uVar8" identifier = (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar9 = (int)cVar4;" (assignment_expression "iVar9 = (int)cVar4" identifier = (cast_expression "(int)cVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" if (parenthesized_expression "(local_40 < 0xb)" ( (binary_expression "local_40 < 0xb" identifier < number_literal) )) (compound_statement "{\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }" { (if_statement "if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;" if (parenthesized_expression "((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4))" ( (binary_expression "(cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)" (parenthesized_expression "(cVar4 < '0')" ( (binary_expression "cVar4 < '0'" identifier < (char_literal "'0'" ' character ')) )) || (parenthesized_expression "((char)((char)local_40 + '0') <= cVar4)" ( (binary_expression "(char)((char)local_40 + '0') <= cVar4" (cast_expression "(char)((char)local_40 + '0')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)local_40 + '0')" ( (binary_expression "(char)local_40 + '0'" (cast_expression "(char)local_40" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character ')) ))) <= identifier) ))) )) (goto_statement "goto LAB_003cc300;" goto statement_identifier ;)) (labeled_statement "LAB_003cc133:\n          uVar8 = iVar9 - 0x30;" statement_identifier : (expression_statement "uVar8 = iVar9 - 0x30;" (assignment_expression "uVar8 = iVar9 - 0x30" identifier = (binary_expression "iVar9 - 0x30" identifier - number_literal)) ;)) }) (else_clause "else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" else (compound_statement "{\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" { (if_statement "if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;" if (parenthesized_expression "((byte)(cVar4 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar4 - 0x30U) < 10" (call_expression "(byte)(cVar4 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar4 - 0x30U)" ( (binary_expression "cVar4 - 0x30U" identifier - number_literal) ))) < number_literal) )) (goto_statement "goto LAB_003cc133;" goto statement_identifier ;)) (if_statement "if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" if (parenthesized_expression "((byte)(cVar4 + 0x9fU) < 6)" ( (binary_expression "(byte)(cVar4 + 0x9fU) < 6" (call_expression "(byte)(cVar4 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar4 + 0x9fU)" ( (binary_expression "cVar4 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n            uVar8 = iVar9 - 0x57;\n          }" { (expression_statement "uVar8 = iVar9 - 0x57;" (assignment_expression "uVar8 = iVar9 - 0x57" identifier = (binary_expression "iVar9 - 0x57" identifier - number_literal)) ;) }) (else_clause "else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" else (compound_statement "{\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" { (if_statement "if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;" if (parenthesized_expression "(5 < (byte)(cVar4 + 0xbfU))" ( (binary_expression "5 < (byte)(cVar4 + 0xbfU)" number_literal < (call_expression "(byte)(cVar4 + 0xbfU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar4 + 0xbfU)" ( (binary_expression "cVar4 + 0xbfU" identifier + number_literal) )))) )) (goto_statement "goto LAB_003cc300;" goto statement_identifier ;)) (expression_statement "uVar8 = iVar9 - 0x37;" (assignment_expression "uVar8 = iVar9 - 0x37" identifier = (binary_expression "iVar9 - 0x37" identifier - number_literal)) ;) }))) }))) (if_statement "if (uVar8 == 0xffffffff) goto LAB_003cc300;" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_003cc300;" goto statement_identifier ;)) (if_statement "if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" if (parenthesized_expression "(uVar7 < local_3c)" ( (binary_expression "uVar7 < local_3c" identifier < identifier) )) (compound_statement "{\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */\n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }" { (expression_statement "local_33 = 1;" (assignment_expression "local_33 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;" if (parenthesized_expression "((uint)param_3[3] <= uVar8)" ( (binary_expression "(uint)param_3[3] <= uVar8" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003cc3a3;" goto statement_identifier ;)) (labeled_statement "LAB_003cc173:\n          param_3[2] = uVar8 + 1;" statement_identifier : (expression_statement "param_3[2] = uVar8 + 1;" (assignment_expression "param_3[2] = uVar8 + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "uVar8 + 1" identifier + number_literal)) ;)) (labeled_statement "LAB_003cc180:\n          param_4 = 0xffffffff;" statement_identifier : (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) comment (if_statement "if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }" if (parenthesized_expression "(((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1))" ( (binary_expression "((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" ( (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) )) && (parenthesized_expression "(iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" ( (comma_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1" (assignment_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) , (binary_expression "iVar9 == -1" identifier == number_literal)) ))) )) (compound_statement "{\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) })) }) (else_clause "else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" else (compound_statement "{\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" { (expression_statement "uVar14 = local_3c * local_30;" (assignment_expression "uVar14 = local_3c * local_30" identifier = (binary_expression "local_3c * local_30" identifier * identifier)) ;) (expression_statement "local_3c = uVar8 + uVar14;" (assignment_expression "local_3c = uVar8 + uVar14" identifier = (binary_expression "uVar8 + uVar14" identifier + identifier)) ;) (expression_statement "local_33 = local_33 | ~uVar8 < uVar14;" (assignment_expression "local_33 = local_33 | ~uVar8 < uVar14" identifier = (binary_expression "local_33 | ~uVar8 < uVar14" identifier | (binary_expression "~uVar8 < uVar14" (unary_expression "~uVar8" ~ identifier) < identifier))) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;" if (parenthesized_expression "(uVar8 < (uint)param_3[3])" ( (binary_expression "uVar8 < (uint)param_3[3]" identifier < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003cc173;" goto statement_identifier ;)) (labeled_statement "LAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);" statement_identifier : (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" ( (pointer_expression "**(code **)(*param_3 + 0x28)" * (pointer_expression "*(code **)(*param_3 + 0x28)" * (cast_expression "(code **)(*param_3 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x28)" ( (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier ))) ;)) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_3 != (int *)0x0) goto LAB_003cc180;" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003cc180;" goto statement_identifier ;)) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) }))) (expression_statement "bVar12 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar12 = param_5 != (int *)0x0 && param_6 == -1" identifier = (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_6 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = param_6 == -1;" (assignment_expression "bVar11 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }" if (parenthesized_expression "((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2]))" ( (binary_expression "(bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])" (parenthesized_expression "(bVar12)" ( identifier )) && (parenthesized_expression "(bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])" ( (comma_expression "bVar11 = false, (uint)param_5[3] <= (uint)param_5[2]" (assignment_expression "bVar11 = false" identifier = false) , (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_5[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }" { (expression_statement "iVar9 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar9 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }" { (expression_statement "param_5 = (int *)0x0;" (assignment_expression "param_5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar11 = bVar12;" (assignment_expression "bVar11 = bVar12" identifier = identifier) ;) })) })) (if_statement "if (bVar11 == bVar13) goto code_r0x003cc1af;" if (parenthesized_expression "(bVar11 == bVar13)" ( (binary_expression "bVar11 == bVar13" identifier == identifier) )) (goto_statement "goto code_r0x003cc1af;" goto statement_identifier ;)) comment (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;) })) (if_statement "if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" if (parenthesized_expression "(local_32 != '\0')" ( (binary_expression "local_32 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" identifier = number_literal) ;) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;) })) (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" identifier = number_literal) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (if_statement "if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;" if (parenthesized_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8))" ( (binary_expression "(cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)" (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x25) == (char)uVar8)" ( (binary_expression "*(char *)(iVar6 + 0x25) == (char)uVar8" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) == (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_003cc592;" goto statement_identifier ;)) (labeled_statement "LAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" statement_identifier : (if_statement "if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" if (parenthesized_expression "(((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0))" ( (binary_expression "((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)" (parenthesized_expression "((char)uVar8 != *(char *)(iVar6 + 0x24))" ( (binary_expression "(char)uVar8 != *(char *)(iVar6 + 0x24)" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) != (pointer_expression "*(char *)(iVar6 + 0x24)" * (cast_expression "(char *)(iVar6 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) ))))) )) && (parenthesized_expression "(pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)" ( (comma_expression "pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0" (assignment_expression "pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" identifier = (call_expression "memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" identifier (argument_list "((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" ( (cast_expression "(void *)(iVar6 + 0x4e)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4e)" ( (binary_expression "iVar6 + 0x4e" identifier + number_literal) ))) , (cast_expression "(int)(char)uVar8" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) , identifier )))) , (binary_expression "pvVar10 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" { (expression_statement "uVar8 = (int)pvVar10 - (iVar6 + 0x4e);" (assignment_expression "uVar8 = (int)pvVar10 - (iVar6 + 0x4e)" identifier = (binary_expression "(int)pvVar10 - (iVar6 + 0x4e)" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "(iVar6 + 0x4e)" ( (binary_expression "iVar6 + 0x4e" identifier + number_literal) )))) ;) (if_statement "if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }" if (parenthesized_expression "(0xf < (int)uVar8)" ( (binary_expression "0xf < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar8 = uVar8 - 6;\n    }" { (expression_statement "uVar8 = uVar8 - 6;" (assignment_expression "uVar8 = uVar8 - 6" identifier = (binary_expression "uVar8 - 6" identifier - number_literal)) ;) })) (expression_statement "bVar3 = bVar1;" (assignment_expression "bVar3 = bVar1" identifier = identifier) ;) (if_statement "if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }" if (parenthesized_expression "(local_3c <= uVar7)" ( (binary_expression "local_3c <= uVar7" identifier <= identifier) )) (compound_statement "{\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }" { (expression_statement "uVar14 = local_3c * local_30;" (assignment_expression "uVar14 = local_3c * local_30" identifier = (binary_expression "local_3c * local_30" identifier * identifier)) ;) (expression_statement "local_3c = uVar8 + uVar14;" (assignment_expression "local_3c = uVar8 + uVar14" identifier = (binary_expression "uVar8 + uVar14" identifier + identifier)) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = local_33 | ~uVar8 < uVar14;" (assignment_expression "bVar3 = local_33 | ~uVar8 < uVar14" identifier = (binary_expression "local_33 | ~uVar8 < uVar14" identifier | (binary_expression "~uVar8 < uVar14" (unary_expression "~uVar8" ~ identifier) < identifier))) ;) })) (expression_statement "local_33 = bVar3;" (assignment_expression "local_33 = bVar3" identifier = identifier) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;" if (parenthesized_expression "((uint)param_3[3] <= uVar8)" ( (binary_expression "(uint)param_3[3] <= uVar8" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003cc5c8;" goto statement_identifier ;)) (do_statement "do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );" do (compound_statement "{\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    }" { (expression_statement "param_3[2] = uVar8 + 1;" (assignment_expression "param_3[2] = uVar8 + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }" { (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "cVar5 = FUN_003c8240(local_4c,local_50);" (assignment_expression "cVar5 = FUN_003c8240(local_4c,local_50)" identifier = (call_expression "FUN_003c8240(local_4c,local_50)" identifier (argument_list "(local_4c,local_50)" ( identifier , identifier )))) ;) (if_statement "if (cVar5 != '\0') goto LAB_003cc1b4;" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;)) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;" if (parenthesized_expression "((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8))" ( (binary_expression "(cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)" (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(iVar6 + 0x25) != (char)uVar8)" ( (binary_expression "*(char *)(iVar6 + 0x25) != (char)uVar8" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) != (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_003cc4d4;" goto statement_identifier ;)) (labeled_statement "LAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" statement_identifier : (if_statement "if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" if (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) (compound_statement "{\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" { (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_32 = cVar4;" (assignment_expression "local_32 = cVar4" identifier = identifier) ;) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;) }))) (expression_statement "FUN_003e7350(local_20,(int)(char)local_38);" (call_expression "FUN_003e7350(local_20,(int)(char)local_38)" identifier (argument_list "(local_20,(int)(char)local_38)" ( identifier , (cast_expression "(int)(char)local_38" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)local_38" ( (type_descriptor "char" primitive_type) ) identifier)) ))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar8 < (uint)param_3[3]) break;" if (parenthesized_expression "(uVar8 < (uint)param_3[3])" ( (binary_expression "uVar8 < (uint)param_3[3]" identifier < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);" statement_identifier : (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" ( (pointer_expression "**(code **)(*param_3 + 0x28)" * (pointer_expression "*(code **)(*param_3 + 0x28)" * (cast_expression "(code **)(*param_3 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x28)" ( (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier ))) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (labeled_statement "LAB_003cc300:\n  cVar5 = '\0';" statement_identifier : (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;" if (parenthesized_expression "(*(int *)(local_20[0] + -0xc) != 0)" ( (binary_expression "*(int *)(local_20[0] + -0xc) != 0" (pointer_expression "*(int *)(local_20[0] + -0xc)" * (cast_expression "(int *)(local_20[0] + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20[0] + -0xc)" ( (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_003cc310;" goto statement_identifier ;)) (labeled_statement "LAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;" statement_identifier : (if_statement "if (bVar2) goto LAB_003cc361;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_003cc361;" goto statement_identifier ;))) (labeled_statement "joined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;" statement_identifier : (if_statement "if (local_38 != 0) goto LAB_003cc361;" if (parenthesized_expression "(local_38 != 0)" ( (binary_expression "local_38 != 0" identifier != number_literal) )) (goto_statement "goto LAB_003cc361;" goto statement_identifier ;))) (goto_statement "goto LAB_003cc1d7;" goto statement_identifier ;) (labeled_statement "code_r0x003cc1af:\n  cVar5 = '\x01';" statement_identifier : (expression_statement "cVar5 = '\x01';" (assignment_expression "cVar5 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;)) (labeled_statement "LAB_003cc1b4:\n  cVar4 = cVar5;" statement_identifier : (expression_statement "cVar4 = cVar5;" (assignment_expression "cVar4 = cVar5" identifier = identifier) ;)) (if_statement "if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;" if (parenthesized_expression "(*(int *)(local_20[0] + -0xc) == 0)" ( (binary_expression "*(int *)(local_20[0] + -0xc) == 0" (pointer_expression "*(int *)(local_20[0] + -0xc)" * (cast_expression "(int *)(local_20[0] + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20[0] + -0xc)" ( (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_003cc1c2;" goto statement_identifier ;)) (labeled_statement "LAB_003cc310:\n  cVar5 = cVar4;" statement_identifier : (expression_statement "cVar5 = cVar4;" (assignment_expression "cVar5 = cVar4" identifier = identifier) ;)) comment (expression_statement "FUN_003e7350(local_20,(int)(char)local_38);" (call_expression "FUN_003e7350(local_20,(int)(char)local_38)" identifier (argument_list "(local_20,(int)(char)local_38)" ( identifier , (cast_expression "(int)(char)local_38" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)local_38" ( (type_descriptor "char" primitive_type) ) identifier)) ))) ;) (expression_statement "cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);" (assignment_expression "cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" identifier = (call_expression "FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" identifier (argument_list "(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" ( (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" * (cast_expression "(undefined4 *)(iVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (cVar4 == '\0') {\n    *param_8 = 4;\n  }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_8 = 4;\n  }" { (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" * identifier) = number_literal) ;) })) (if_statement "if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }" if (parenthesized_expression "((local_38 == 0) && (!bVar2))" ( (binary_expression "(local_38 == 0) && (!bVar2)" (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) && (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) ))) )) (compound_statement "{\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }" { (expression_statement "local_38 = *(int *)(local_20[0] + -0xc);" (assignment_expression "local_38 = *(int *)(local_20[0] + -0xc)" identifier = (pointer_expression "*(int *)(local_20[0] + -0xc)" * (cast_expression "(int *)(local_20[0] + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20[0] + -0xc)" ( (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (goto_statement "goto joined_r0x003cc35b;" goto statement_identifier ;) })) (labeled_statement "LAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" statement_identifier : (if_statement "if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" { (if_statement "if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" if (parenthesized_expression "(local_33 == 0)" ( (binary_expression "local_33 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }" { (expression_statement "uVar7 = -local_3c;" (assignment_expression "uVar7 = -local_3c" identifier = (unary_expression "-local_3c" - identifier)) ;) (if_statement "if (!bVar15) {\n        uVar7 = local_3c;\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        uVar7 = local_3c;\n      }" { (expression_statement "uVar7 = local_3c;" (assignment_expression "uVar7 = local_3c" identifier = identifier) ;) })) (expression_statement "*param_9 = uVar7;" (assignment_expression "*param_9 = uVar7" (pointer_expression "*param_9" * identifier) = identifier) ;) }) (else_clause "else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" else (compound_statement "{\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" { (expression_statement "*param_9 = 0xffffffff;" (assignment_expression "*param_9 = 0xffffffff" (pointer_expression "*param_9" * identifier) = number_literal) ;) (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" * identifier) = number_literal) ;) }))) (goto_statement "goto LAB_003cc1e9;" goto statement_identifier ;) }))) (labeled_statement "LAB_003cc1d7:\n  *param_9 = 0;" statement_identifier : (expression_statement "*param_9 = 0;" (assignment_expression "*param_9 = 0" (pointer_expression "*param_9" * identifier) = number_literal) ;)) (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" * identifier) = number_literal) ;) (labeled_statement "LAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" statement_identifier : (if_statement "if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) }))) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }" if (parenthesized_expression "(local_20[0] == &DAT_005f308c)" ( (binary_expression "local_20[0] == &DAT_005f308c" (subscript_expression "local_20[0]" identifier [ number_literal ]) == (pointer_expression "&DAT_005f308c" & identifier)) )) (compound_statement "{\n    return param_1;\n  }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_003c0300();" (call_expression "FUN_003c0300()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char,\n   std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned\n   int>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,\n   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned int&) const */\n\nvoid std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::\n     _M_extract_int<unsigned_int>(void)\n\n{\n}\n\n" comment comment (ERROR "void std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::\n     _M_extract_int<unsigned_int>(void)" primitive_type (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::" identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "std::char_traits<char>>>::\n     _M_extract_int<" identifier : : identifier < primitive_type >> > : : identifier <) identifier > ( primitive_type )) (compound_statement "{\n}" { }))
(translation_unit "undefined4 *\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    \n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}\n\n" (function_definition "undefined4 *\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    \n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}" type_identifier (pointer_declarator "*\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" * (function_declarator "FUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "int param_7" primitive_type identifier) , (parameter_declaration "uint *param_8" type_identifier (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "uint *param_9" type_identifier (pointer_declarator "*param_9" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    \n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "undefined4 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined4 *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "byte local_33;" type_identifier identifier ;) (declaration "char local_32;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined1 local_22 [2];" type_identifier (array_declarator "local_22 [2]" identifier [ number_literal ]) ;) (declaration "undefined *local_20 [3];" type_identifier (pointer_declarator "*local_20 [3]" * (array_declarator "local_20 [3]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "iVar9 = param_7;" (assignment_expression "iVar9 = param_7" identifier = identifier) ;) (expression_statement "uStack_14 = 0x3cbe8b;" (assignment_expression "uStack_14 = 0x3cbe8b" identifier = number_literal) ;) (expression_statement "iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);" (assignment_expression "iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c)" identifier = (call_expression "FUN_003c6ba0(local_22,param_7 + 0x6c)" identifier (argument_list "(local_22,param_7 + 0x6c)" ( identifier , (binary_expression "param_7 + 0x6c" identifier + number_literal) )))) ;) (expression_statement "uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;" (assignment_expression "uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a" identifier = (binary_expression "*(uint *)(iVar9 + 0xc) & 0x4a" (pointer_expression "*(uint *)(iVar9 + 0xc)" * (cast_expression "(uint *)(iVar9 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xc)" ( (binary_expression "iVar9 + 0xc" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" if (parenthesized_expression "(uVar7 == 0x40)" ( (binary_expression "uVar7 == 0x40" identifier == number_literal) )) (compound_statement "{\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }" { (expression_statement "local_30 = 8;" (assignment_expression "local_30 = 8" identifier = number_literal) ;) (labeled_statement "LAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);" statement_identifier : (expression_statement "local_32 = FUN_003c8240(&param_3,&param_5);" (assignment_expression "local_32 = FUN_003c8240(&param_3,&param_5)" identifier = (call_expression "FUN_003c8240(&param_3,&param_5)" identifier (argument_list "(&param_3,&param_5)" ( (pointer_expression "&param_3" & identifier) , (pointer_expression "&param_5" & identifier) )))) ;)) (if_statement "if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }" { (labeled_statement "LAB_003cbef5:\n      local_4c = &param_3;" statement_identifier : (expression_statement "local_4c = &param_3;" (assignment_expression "local_4c = &param_3" identifier = (pointer_expression "&param_3" & identifier)) ;)) (expression_statement "local_50 = &param_5;" (assignment_expression "local_50 = &param_5" identifier = (pointer_expression "&param_5" & identifier)) ;) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "cVar5 = (char)uVar8;" (assignment_expression "cVar5 = (char)uVar8" identifier = (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;" (assignment_expression "bVar15 = *(char *)(iVar6 + 0x4a) == cVar5" identifier = (binary_expression "*(char *)(iVar6 + 0x4a) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4a)" * (cast_expression "(char *)(iVar6 + 0x4a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4a)" ( (binary_expression "iVar6 + 0x4a" identifier + number_literal) )))) == identifier)) ;) (if_statement "if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" if (parenthesized_expression "((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5))" ( (binary_expression "(((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)" (parenthesized_expression "(((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5))))" ( (binary_expression "((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))" (parenthesized_expression "((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5))" ( (binary_expression "(bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)" (parenthesized_expression "(bVar15)" ( identifier )) || (parenthesized_expression "(*(char *)(iVar6 + 0x4b) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4b) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4b)" * (cast_expression "(char *)(iVar6 + 0x4b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4b)" ( (binary_expression "iVar6 + 0x4b" identifier + number_literal) )))) == identifier) ))) )) && (parenthesized_expression "((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))" ( (parenthesized_expression "(cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5))" ( (binary_expression "cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)" (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) || (parenthesized_expression "(*(char *)(iVar6 + 0x25) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x25) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) != identifier) ))) )) ))) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x24) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x24) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x24)" * (cast_expression "(char *)(iVar6 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }" { (expression_statement "FUN_003b97a0(param_3);" (call_expression "FUN_003b97a0(param_3)" identifier (argument_list "(param_3)" ( identifier ))) ;) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "local_32 = FUN_003c8240(local_4c,local_50);" (assignment_expression "local_32 = FUN_003c8240(local_4c,local_50)" identifier = (call_expression "FUN_003c8240(local_4c,local_50)" identifier (argument_list "(local_4c,local_50)" ( identifier , identifier )))) ;) (if_statement "if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }" { (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_003cbfd8;" goto statement_identifier ;) })) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) }) (else_clause "else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" else (compound_statement "{\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" { (labeled_statement "LAB_003cbfd8:\n        local_38 = 0;" statement_identifier : (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;)) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (do_statement "do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);" do (compound_statement "{\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        }" { (expression_statement "cVar5 = (char)uVar8;" (assignment_expression "cVar5 = (char)uVar8" identifier = (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;" if (parenthesized_expression "(((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5))" ( (binary_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)" (parenthesized_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5))" ( (binary_expression "(cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)" (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x25) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x25) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) == identifier) ))) )) || (parenthesized_expression "(*(char *)(iVar6 + 0x24) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x24) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x24)" * (cast_expression "(char *)(iVar6 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) )))) == identifier) ))) )) (break_statement "break;" break ;)) (if_statement "if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" if (parenthesized_expression "(*(char *)(iVar6 + 0x4e) == cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4e) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4e)" * (cast_expression "(char *)(iVar6 + 0x4e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4e)" ( (binary_expression "iVar6 + 0x4e" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }" { (expression_statement "bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);" (assignment_expression "bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U)" identifier = (cast_expression "(bool)(local_30 == 10 | bVar2 ^ 1U)" ( (type_descriptor "bool" primitive_type) ) (parenthesized_expression "(local_30 == 10 | bVar2 ^ 1U)" ( (binary_expression "local_30 == 10 | bVar2 ^ 1U" (binary_expression "local_30 == 10" identifier == number_literal) | (binary_expression "bVar2 ^ 1U" identifier ^ number_literal)) )))) ;) (if_statement "if (!bVar13) goto LAB_003cc011;" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (goto_statement "goto LAB_003cc011;" goto statement_identifier ;)) (expression_statement "bVar2 = uVar7 == 0 || local_30 == 8;" (assignment_expression "bVar2 = uVar7 == 0 || local_30 == 8" identifier = (binary_expression "uVar7 == 0 || local_30 == 8" (binary_expression "uVar7 == 0" identifier == number_literal) || (binary_expression "local_30 == 8" identifier == number_literal))) ;) (if_statement "if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }" if (parenthesized_expression "(uVar7 != 0 && local_30 != 8)" ( (binary_expression "uVar7 != 0 && local_30 != 8" (binary_expression "uVar7 != 0" identifier != number_literal) && (binary_expression "local_30 != 8" identifier != number_literal)) )) (compound_statement "{\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }" { (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_003cc048;" goto statement_identifier ;) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "local_30 = 8;" (assignment_expression "local_30 = 8" identifier = number_literal) ;) (expression_statement "uVar14 = param_3[2];" (assignment_expression "uVar14 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;" if (parenthesized_expression "((uint)param_3[3] <= uVar14)" ( (binary_expression "(uint)param_3[3] <= uVar14" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003cc270;" goto statement_identifier ;)) (labeled_statement "LAB_003cc057:\n            param_3[2] = uVar14 + 1;" statement_identifier : (expression_statement "param_3[2] = uVar14 + 1;" (assignment_expression "param_3[2] = uVar14 + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "uVar14 + 1" identifier + number_literal)) ;)) (labeled_statement "LAB_003cc064:\n            param_4 = 0xffffffff;" statement_identifier : (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (if_statement "if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }" if (parenthesized_expression "(((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1))" ( (binary_expression "((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" ( (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) )) && (parenthesized_expression "(iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" ( (comma_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1" (assignment_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) , (binary_expression "iVar9 == -1" identifier == number_literal)) ))) )) (compound_statement "{\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) })) }) (else_clause "else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" else (compound_statement "{\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" { (if_statement "if (!bVar2) break;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" statement_identifier : (if_statement "if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" if (parenthesized_expression "((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5))" ( (binary_expression "(*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)" (parenthesized_expression "(*(char *)(iVar6 + 0x4c) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4c) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x4c)" * (cast_expression "(char *)(iVar6 + 0x4c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4c)" ( (binary_expression "iVar6 + 0x4c" identifier + number_literal) )))) != identifier) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x4d) != cVar5)" ( (binary_expression "*(char *)(iVar6 + 0x4d) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x4d)" * (cast_expression "(char *)(iVar6 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4d)" ( (binary_expression "iVar6 + 0x4d" identifier + number_literal) )))) != identifier) ))) )) (compound_statement "{\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" { (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (goto_statement "goto LAB_003cc0a0;" goto statement_identifier ;) }))) (expression_statement "local_32 = local_30 == 0x10 || uVar7 == 0;" (assignment_expression "local_32 = local_30 == 0x10 || uVar7 == 0" identifier = (binary_expression "local_30 == 0x10 || uVar7 == 0" (binary_expression "local_30 == 0x10" identifier == number_literal) || (binary_expression "uVar7 == 0" identifier == number_literal))) ;) (if_statement "if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }" if (parenthesized_expression "(local_30 != 0x10 && uVar7 != 0)" ( (binary_expression "local_30 != 0x10 && uVar7 != 0" (binary_expression "local_30 != 0x10" identifier != number_literal) && (binary_expression "uVar7 != 0" identifier != number_literal)) )) (compound_statement "{\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }" { (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (goto_statement "goto LAB_003cc0ad;" goto statement_identifier ;) })) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "local_30 = 0x10;" (assignment_expression "local_30 = 0x10" identifier = number_literal) ;) (labeled_statement "LAB_003cc048:\n            uVar14 = param_3[2];" statement_identifier : (expression_statement "uVar14 = param_3[2];" (assignment_expression "uVar14 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;)) (expression_statement "bVar2 = bVar13;" (assignment_expression "bVar2 = bVar13" identifier = identifier) ;) (if_statement "if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;" if (parenthesized_expression "(uVar14 < (uint)param_3[3])" ( (binary_expression "uVar14 < (uint)param_3[3]" identifier < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003cc057;" goto statement_identifier ;)) (labeled_statement "LAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);" statement_identifier : (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" ( (pointer_expression "**(code **)(*param_3 + 0x28)" * (pointer_expression "*(code **)(*param_3 + 0x28)" * (cast_expression "(code **)(*param_3 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x28)" ( (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier ))) ;)) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_3 != (int *)0x0) goto LAB_003cc064;" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003cc064;" goto statement_identifier ;)) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) }))) (expression_statement "bVar11 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar11 = param_5 != (int *)0x0 && param_6 == -1" identifier = (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_6 == -1" identifier == number_literal))) ;) (expression_statement "local_40._0_1_ = param_6 == -1;" (assignment_expression "local_40._0_1_ = param_6 == -1" (field_expression "local_40._0_1_" identifier . field_identifier) = (binary_expression "param_6 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }" if (parenthesized_expression "((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2]))" ( (binary_expression "(bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])" (parenthesized_expression "(bVar11)" ( identifier )) && (parenthesized_expression "(local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])" ( (comma_expression "local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2]" (assignment_expression "local_40._0_1_ = false" (field_expression "local_40._0_1_" identifier . field_identifier) = false) , (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_5[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }" { (expression_statement "iVar9 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar9 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "local_40._0_1_ = false;" (assignment_expression "local_40._0_1_ = false" (field_expression "local_40._0_1_" identifier . field_identifier) = false) ;) (if_statement "if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }" { (expression_statement "param_5 = (int *)0x0;" (assignment_expression "param_5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_40._0_1_ = bVar11;" (assignment_expression "local_40._0_1_ = bVar11" (field_expression "local_40._0_1_" identifier . field_identifier) = identifier) ;) })) })) (if_statement "if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }" if (parenthesized_expression "((bool)(char)local_40 == bVar13)" ( (binary_expression "(bool)(char)local_40 == bVar13" (cast_expression "(bool)(char)local_40" ( (type_descriptor "bool" primitive_type) ) (cast_expression "(char)local_40" ( (type_descriptor "char" primitive_type) ) identifier)) == identifier) )) (compound_statement "{\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }" { (expression_statement "local_32 = '\x01';" (assignment_expression "local_32 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_003cc0a0;" goto statement_identifier ;) })) (expression_statement "uVar8 = param_4;" (assignment_expression "uVar8 = param_4" identifier = identifier) ;) (if_statement "if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }" if (parenthesized_expression "((param_3 != (int *)0x0) && (param_4 == 0xffffffff))" ( (binary_expression "(param_3 != (int *)0x0) && (param_4 == 0xffffffff)" (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(param_4 == 0xffffffff)" ( (binary_expression "param_4 == 0xffffffff" identifier == number_literal) ))) )) (compound_statement "{\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }" { (if_statement "if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" if (parenthesized_expression "((byte *)param_3[2] < (byte *)param_3[3])" ( (binary_expression "(byte *)param_3[2] < (byte *)param_3[3]" (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_3[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (compound_statement "{\n              uVar8 = (uint)*(byte *)param_3[2];\n            }" { (expression_statement "uVar8 = (uint)*(byte *)param_3[2];" (assignment_expression "uVar8 = (uint)*(byte *)param_3[2]" identifier = (binary_expression "(uint)*(byte *)param_3[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_3[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_3[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" else (compound_statement "{\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" { (expression_statement "uVar8 = (**(code **)(*param_3 + 0x24))(param_3);" (assignment_expression "uVar8 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) ;) (if_statement "if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(bVar2)" ( identifier )) ;) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (labeled_statement "LAB_003cc0a0:\n      local_40 = 0x16;" statement_identifier : (expression_statement "local_40 = 0x16;" (assignment_expression "local_40 = 0x16" identifier = number_literal) ;)) (if_statement "if (local_30 == 0x10) goto LAB_003cc0b3;" if (parenthesized_expression "(local_30 == 0x10)" ( (binary_expression "local_30 == 0x10" identifier == number_literal) )) (goto_statement "goto LAB_003cc0b3;" goto statement_identifier ;)) }) (else_clause "else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" else (compound_statement "{\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" { (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) }))) (labeled_statement "LAB_003cc0ad:\n    local_40 = local_30;" statement_identifier : (expression_statement "local_40 = local_30;" (assignment_expression "local_40 = local_30" identifier = identifier) ;)) }) (else_clause "else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" else (compound_statement "{\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" { (if_statement "if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }" if (parenthesized_expression "(uVar7 != 8)" ( (binary_expression "uVar7 != 8" identifier != number_literal) )) (compound_statement "{\n      local_30 = 10;\n      goto LAB_003cbece;\n    }" { (expression_statement "local_30 = 10;" (assignment_expression "local_30 = 10" identifier = number_literal) ;) (goto_statement "goto LAB_003cbece;" goto statement_identifier ;) })) (expression_statement "local_32 = FUN_003c8240(&param_3,&param_5);" (assignment_expression "local_32 = FUN_003c8240(&param_3,&param_5)" identifier = (call_expression "FUN_003c8240(&param_3,&param_5)" identifier (argument_list "(&param_3,&param_5)" ( (pointer_expression "&param_3" & identifier) , (pointer_expression "&param_5" & identifier) )))) ;) (expression_statement "local_30 = 0x10;" (assignment_expression "local_30 = 0x10" identifier = number_literal) ;) (if_statement "if (local_32 == '\0') goto LAB_003cbef5;" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_003cbef5;" goto statement_identifier ;)) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "local_40 = 0x16;" (assignment_expression "local_40 = 0x16" identifier = number_literal) ;) }))) (labeled_statement "LAB_003cc0b3:\n  cVar5 = local_32;" statement_identifier : (expression_statement "cVar5 = local_32;" (assignment_expression "cVar5 = local_32" identifier = identifier) ;)) (expression_statement "local_4c = &param_3;" (assignment_expression "local_4c = &param_3" identifier = (pointer_expression "&param_3" & identifier)) ;) (expression_statement "local_50 = &param_5;" (assignment_expression "local_50 = &param_5" identifier = (pointer_expression "&param_5" & identifier)) ;) (expression_statement "local_20[0] = &DAT_005f308c;" (assignment_expression "local_20[0] = &DAT_005f308c" (subscript_expression "local_20[0]" identifier [ number_literal ]) = (pointer_expression "&DAT_005f308c" & identifier)) ;) (if_statement "if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_003e6d30(local_20,0x20);\n  }" { (expression_statement "FUN_003e6d30(local_20,0x20);" (call_expression "FUN_003e6d30(local_20,0x20)" identifier (argument_list "(local_20,0x20)" ( identifier , number_literal ))) ;) })) (expression_statement "uVar7 = (uint)(0xffffffff / (ulonglong)local_30);" (assignment_expression "uVar7 = (uint)(0xffffffff / (ulonglong)local_30)" identifier = (call_expression "(uint)(0xffffffff / (ulonglong)local_30)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffffffff / (ulonglong)local_30)" ( (binary_expression "0xffffffff / (ulonglong)local_30" number_literal / (cast_expression "(ulonglong)local_30" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "bVar1 = *(byte *)(iVar6 + 100);" (assignment_expression "bVar1 = *(byte *)(iVar6 + 100)" identifier = (pointer_expression "*(byte *)(iVar6 + 100)" * (cast_expression "(byte *)(iVar6 + 100)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 100)" ( (binary_expression "iVar6 + 100" identifier + number_literal) ))))) ;) (if_statement "if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" if (parenthesized_expression "(bVar1 == 0)" ( (binary_expression "bVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" { (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" identifier = number_literal) ;) (if_statement "if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (do_statement "do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );" do (compound_statement "{\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      }" { (expression_statement "cVar4 = (char)uVar8;" (assignment_expression "cVar4 = (char)uVar8" identifier = (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar9 = (int)cVar4;" (assignment_expression "iVar9 = (int)cVar4" identifier = (cast_expression "(int)cVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" if (parenthesized_expression "(local_40 < 0xb)" ( (binary_expression "local_40 < 0xb" identifier < number_literal) )) (compound_statement "{\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }" { (if_statement "if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;" if (parenthesized_expression "((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4))" ( (binary_expression "(cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)" (parenthesized_expression "(cVar4 < '0')" ( (binary_expression "cVar4 < '0'" identifier < (char_literal "'0'" ' character ')) )) || (parenthesized_expression "((char)((char)local_40 + '0') <= cVar4)" ( (binary_expression "(char)((char)local_40 + '0') <= cVar4" (cast_expression "(char)((char)local_40 + '0')" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((char)local_40 + '0')" ( (binary_expression "(char)local_40 + '0'" (cast_expression "(char)local_40" ( (type_descriptor "char" primitive_type) ) identifier) + (char_literal "'0'" ' character ')) ))) <= identifier) ))) )) (goto_statement "goto LAB_003cc300;" goto statement_identifier ;)) (labeled_statement "LAB_003cc133:\n          uVar8 = iVar9 - 0x30;" statement_identifier : (expression_statement "uVar8 = iVar9 - 0x30;" (assignment_expression "uVar8 = iVar9 - 0x30" identifier = (binary_expression "iVar9 - 0x30" identifier - number_literal)) ;)) }) (else_clause "else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" else (compound_statement "{\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" { (if_statement "if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;" if (parenthesized_expression "((byte)(cVar4 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar4 - 0x30U) < 10" (call_expression "(byte)(cVar4 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar4 - 0x30U)" ( (binary_expression "cVar4 - 0x30U" identifier - number_literal) ))) < number_literal) )) (goto_statement "goto LAB_003cc133;" goto statement_identifier ;)) (if_statement "if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" if (parenthesized_expression "((byte)(cVar4 + 0x9fU) < 6)" ( (binary_expression "(byte)(cVar4 + 0x9fU) < 6" (call_expression "(byte)(cVar4 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar4 + 0x9fU)" ( (binary_expression "cVar4 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n            uVar8 = iVar9 - 0x57;\n          }" { (expression_statement "uVar8 = iVar9 - 0x57;" (assignment_expression "uVar8 = iVar9 - 0x57" identifier = (binary_expression "iVar9 - 0x57" identifier - number_literal)) ;) }) (else_clause "else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" else (compound_statement "{\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" { (if_statement "if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;" if (parenthesized_expression "(5 < (byte)(cVar4 + 0xbfU))" ( (binary_expression "5 < (byte)(cVar4 + 0xbfU)" number_literal < (call_expression "(byte)(cVar4 + 0xbfU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar4 + 0xbfU)" ( (binary_expression "cVar4 + 0xbfU" identifier + number_literal) )))) )) (goto_statement "goto LAB_003cc300;" goto statement_identifier ;)) (expression_statement "uVar8 = iVar9 - 0x37;" (assignment_expression "uVar8 = iVar9 - 0x37" identifier = (binary_expression "iVar9 - 0x37" identifier - number_literal)) ;) }))) }))) (if_statement "if (uVar8 == 0xffffffff) goto LAB_003cc300;" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_003cc300;" goto statement_identifier ;)) (if_statement "if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" if (parenthesized_expression "(uVar7 < local_3c)" ( (binary_expression "uVar7 < local_3c" identifier < identifier) )) (compound_statement "{\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }" { (expression_statement "local_33 = 1;" (assignment_expression "local_33 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;" if (parenthesized_expression "((uint)param_3[3] <= uVar8)" ( (binary_expression "(uint)param_3[3] <= uVar8" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003cc3a3;" goto statement_identifier ;)) (labeled_statement "LAB_003cc173:\n          param_3[2] = uVar8 + 1;" statement_identifier : (expression_statement "param_3[2] = uVar8 + 1;" (assignment_expression "param_3[2] = uVar8 + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "uVar8 + 1" identifier + number_literal)) ;)) (labeled_statement "LAB_003cc180:\n          param_4 = 0xffffffff;" statement_identifier : (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (if_statement "if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }" if (parenthesized_expression "(((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1))" ( (binary_expression "((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" ( (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_3[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[2]" identifier [ number_literal ]))) )) && (parenthesized_expression "(iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" ( (comma_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1" (assignment_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3)" identifier = (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" ( (pointer_expression "**(code **)(*param_3 + 0x24)" * (pointer_expression "*(code **)(*param_3 + 0x24)" * (cast_expression "(code **)(*param_3 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x24)" ( (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier )))) , (binary_expression "iVar9 == -1" identifier == number_literal)) ))) )) (compound_statement "{\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }" { (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) })) }) (else_clause "else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" else (compound_statement "{\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" { (expression_statement "uVar14 = local_3c * local_30;" (assignment_expression "uVar14 = local_3c * local_30" identifier = (binary_expression "local_3c * local_30" identifier * identifier)) ;) (expression_statement "local_3c = uVar8 + uVar14;" (assignment_expression "local_3c = uVar8 + uVar14" identifier = (binary_expression "uVar8 + uVar14" identifier + identifier)) ;) (expression_statement "local_33 = local_33 | ~uVar8 < uVar14;" (assignment_expression "local_33 = local_33 | ~uVar8 < uVar14" identifier = (binary_expression "local_33 | ~uVar8 < uVar14" identifier | (binary_expression "~uVar8 < uVar14" (unary_expression "~uVar8" ~ identifier) < identifier))) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;" if (parenthesized_expression "(uVar8 < (uint)param_3[3])" ( (binary_expression "uVar8 < (uint)param_3[3]" identifier < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_003cc173;" goto statement_identifier ;)) (labeled_statement "LAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);" statement_identifier : (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" ( (pointer_expression "**(code **)(*param_3 + 0x28)" * (pointer_expression "*(code **)(*param_3 + 0x28)" * (cast_expression "(code **)(*param_3 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x28)" ( (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier ))) ;)) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (if_statement "if (param_3 != (int *)0x0) goto LAB_003cc180;" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_003cc180;" goto statement_identifier ;)) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" identifier = true) ;) }))) (expression_statement "bVar12 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar12 = param_5 != (int *)0x0 && param_6 == -1" identifier = (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "param_6 == -1" identifier == number_literal))) ;) (expression_statement "bVar11 = param_6 == -1;" (assignment_expression "bVar11 = param_6 == -1" identifier = (binary_expression "param_6 == -1" identifier == number_literal)) ;) (if_statement "if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }" if (parenthesized_expression "((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2]))" ( (binary_expression "(bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])" (parenthesized_expression "(bVar12)" ( identifier )) && (parenthesized_expression "(bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])" ( (comma_expression "bVar11 = false, (uint)param_5[3] <= (uint)param_5[2]" (assignment_expression "bVar11 = false" identifier = false) , (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[3]" identifier [ number_literal ])) <= (cast_expression "(uint)param_5[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_5[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }" { (expression_statement "iVar9 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar9 = (**(code **)(*param_5 + 0x24))(param_5)" identifier = (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" ( (pointer_expression "**(code **)(*param_5 + 0x24)" * (pointer_expression "*(code **)(*param_5 + 0x24)" * (cast_expression "(code **)(*param_5 + 0x24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x24)" ( (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" * identifier) + number_literal) ))))) )) (argument_list "(param_5)" ( identifier )))) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (if_statement "if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }" if (parenthesized_expression "(iVar9 == -1)" ( (binary_expression "iVar9 == -1" identifier == number_literal) )) (compound_statement "{\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }" { (expression_statement "param_5 = (int *)0x0;" (assignment_expression "param_5 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar11 = bVar12;" (assignment_expression "bVar11 = bVar12" identifier = identifier) ;) })) })) (if_statement "if (bVar11 == bVar13) goto code_r0x003cc1af;" if (parenthesized_expression "(bVar11 == bVar13)" ( (binary_expression "bVar11 == bVar13" identifier == identifier) )) (goto_statement "goto code_r0x003cc1af;" goto statement_identifier ;)) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;) })) (if_statement "if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" if (parenthesized_expression "(local_32 != '\0')" ( (binary_expression "local_32 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" identifier = number_literal) ;) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;) })) (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" identifier = number_literal) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (if_statement "if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;" if (parenthesized_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8))" ( (binary_expression "(cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)" (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char *)(iVar6 + 0x25) == (char)uVar8)" ( (binary_expression "*(char *)(iVar6 + 0x25) == (char)uVar8" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) == (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_003cc592;" goto statement_identifier ;)) (labeled_statement "LAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" statement_identifier : (if_statement "if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" if (parenthesized_expression "(((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0))" ( (binary_expression "((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)" (parenthesized_expression "((char)uVar8 != *(char *)(iVar6 + 0x24))" ( (binary_expression "(char)uVar8 != *(char *)(iVar6 + 0x24)" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) != (pointer_expression "*(char *)(iVar6 + 0x24)" * (cast_expression "(char *)(iVar6 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x24)" ( (binary_expression "iVar6 + 0x24" identifier + number_literal) ))))) )) && (parenthesized_expression "(pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)" ( (comma_expression "pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0" (assignment_expression "pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" identifier = (call_expression "memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" identifier (argument_list "((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" ( (cast_expression "(void *)(iVar6 + 0x4e)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x4e)" ( (binary_expression "iVar6 + 0x4e" identifier + number_literal) ))) , (cast_expression "(int)(char)uVar8" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) , identifier )))) , (binary_expression "pvVar10 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" { (expression_statement "uVar8 = (int)pvVar10 - (iVar6 + 0x4e);" (assignment_expression "uVar8 = (int)pvVar10 - (iVar6 + 0x4e)" identifier = (binary_expression "(int)pvVar10 - (iVar6 + 0x4e)" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) - (parenthesized_expression "(iVar6 + 0x4e)" ( (binary_expression "iVar6 + 0x4e" identifier + number_literal) )))) ;) (if_statement "if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }" if (parenthesized_expression "(0xf < (int)uVar8)" ( (binary_expression "0xf < (int)uVar8" number_literal < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar8 = uVar8 - 6;\n    }" { (expression_statement "uVar8 = uVar8 - 6;" (assignment_expression "uVar8 = uVar8 - 6" identifier = (binary_expression "uVar8 - 6" identifier - number_literal)) ;) })) (expression_statement "bVar3 = bVar1;" (assignment_expression "bVar3 = bVar1" identifier = identifier) ;) (if_statement "if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }" if (parenthesized_expression "(local_3c <= uVar7)" ( (binary_expression "local_3c <= uVar7" identifier <= identifier) )) (compound_statement "{\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }" { (expression_statement "uVar14 = local_3c * local_30;" (assignment_expression "uVar14 = local_3c * local_30" identifier = (binary_expression "local_3c * local_30" identifier * identifier)) ;) (expression_statement "local_3c = uVar8 + uVar14;" (assignment_expression "local_3c = uVar8 + uVar14" identifier = (binary_expression "uVar8 + uVar14" identifier + identifier)) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "bVar3 = local_33 | ~uVar8 < uVar14;" (assignment_expression "bVar3 = local_33 | ~uVar8 < uVar14" identifier = (binary_expression "local_33 | ~uVar8 < uVar14" identifier | (binary_expression "~uVar8 < uVar14" (unary_expression "~uVar8" ~ identifier) < identifier))) ;) })) (expression_statement "local_33 = bVar3;" (assignment_expression "local_33 = bVar3" identifier = identifier) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;" if (parenthesized_expression "((uint)param_3[3] <= uVar8)" ( (binary_expression "(uint)param_3[3] <= uVar8" (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ])) <= identifier) )) (goto_statement "goto LAB_003cc5c8;" goto statement_identifier ;)) (do_statement "do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );" do (compound_statement "{\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    }" { (expression_statement "param_3[2] = uVar8 + 1;" (assignment_expression "param_3[2] = uVar8 + 1" (subscript_expression "param_3[2]" identifier [ number_literal ]) = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (while_statement "while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }" { (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" identifier = number_literal) ;) (expression_statement "cVar5 = FUN_003c8240(local_4c,local_50);" (assignment_expression "cVar5 = FUN_003c8240(local_4c,local_50)" identifier = (call_expression "FUN_003c8240(local_4c,local_50)" identifier (argument_list "(local_4c,local_50)" ( identifier , identifier )))) ;) (if_statement "if (cVar5 != '\0') goto LAB_003cc1b4;" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;)) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" identifier = (call_expression "FUN_003c04a0()" identifier (argument_list "()" ( )))) ;) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" identifier = (pointer_expression "*(char *)(iVar6 + 0x10)" * (cast_expression "(char *)(iVar6 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x10)" ( (binary_expression "iVar6 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;" if (parenthesized_expression "((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8))" ( (binary_expression "(cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)" (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)(iVar6 + 0x25) != (char)uVar8)" ( (binary_expression "*(char *)(iVar6 + 0x25) != (char)uVar8" (pointer_expression "*(char *)(iVar6 + 0x25)" * (cast_expression "(char *)(iVar6 + 0x25)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x25)" ( (binary_expression "iVar6 + 0x25" identifier + number_literal) )))) != (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ))) )) (goto_statement "goto LAB_003cc4d4;" goto statement_identifier ;)) (labeled_statement "LAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" statement_identifier : (if_statement "if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" if (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) (compound_statement "{\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" { (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "local_32 = cVar4;" (assignment_expression "local_32 = cVar4" identifier = identifier) ;) (goto_statement "goto LAB_003cc1b4;" goto statement_identifier ;) }))) (expression_statement "FUN_003e7350(local_20,(int)(char)local_38);" (call_expression "FUN_003e7350(local_20,(int)(char)local_38)" identifier (argument_list "(local_20,(int)(char)local_38)" ( identifier , (cast_expression "(int)(char)local_38" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)local_38" ( (type_descriptor "char" primitive_type) ) identifier)) ))) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" identifier = (subscript_expression "param_3[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar8 < (uint)param_3[3]) break;" if (parenthesized_expression "(uVar8 < (uint)param_3[3])" ( (binary_expression "uVar8 < (uint)param_3[3]" identifier < (cast_expression "(uint)param_3[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_3[3]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);" statement_identifier : (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" ( (pointer_expression "**(code **)(*param_3 + 0x28)" * (pointer_expression "*(code **)(*param_3 + 0x28)" * (cast_expression "(code **)(*param_3 + 0x28)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_3 + 0x28)" ( (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" * identifier) + number_literal) ))))) )) (argument_list "(param_3)" ( identifier ))) ;)) })) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (labeled_statement "LAB_003cc300:\n  cVar5 = '\0';" statement_identifier : (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;)) (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;" if (parenthesized_expression "(*(int *)(local_20[0] + -0xc) != 0)" ( (binary_expression "*(int *)(local_20[0] + -0xc) != 0" (pointer_expression "*(int *)(local_20[0] + -0xc)" * (cast_expression "(int *)(local_20[0] + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20[0] + -0xc)" ( (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_003cc310;" goto statement_identifier ;)) (labeled_statement "LAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;" statement_identifier : (if_statement "if (bVar2) goto LAB_003cc361;" if (parenthesized_expression "(bVar2)" ( identifier )) (goto_statement "goto LAB_003cc361;" goto statement_identifier ;))) (labeled_statement "joined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;" statement_identifier : (if_statement "if (local_38 != 0) goto LAB_003cc361;" if (parenthesized_expression "(local_38 != 0)" ( (binary_expression "local_38 != 0" identifier != number_literal) )) (goto_statement "goto LAB_003cc361;" goto statement_identifier ;))) (goto_statement "goto LAB_003cc1d7;" goto statement_identifier ;) (labeled_statement "code_r0x003cc1af:\n  cVar5 = '\x01';" statement_identifier : (expression_statement "cVar5 = '\x01';" (assignment_expression "cVar5 = '\x01'" identifier = (char_literal "'\x01'" ' escape_sequence ')) ;)) (labeled_statement "LAB_003cc1b4:\n  cVar4 = cVar5;" statement_identifier : (expression_statement "cVar4 = cVar5;" (assignment_expression "cVar4 = cVar5" identifier = identifier) ;)) (if_statement "if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;" if (parenthesized_expression "(*(int *)(local_20[0] + -0xc) == 0)" ( (binary_expression "*(int *)(local_20[0] + -0xc) == 0" (pointer_expression "*(int *)(local_20[0] + -0xc)" * (cast_expression "(int *)(local_20[0] + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20[0] + -0xc)" ( (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_003cc1c2;" goto statement_identifier ;)) (labeled_statement "LAB_003cc310:\n  cVar5 = cVar4;" statement_identifier : (expression_statement "cVar5 = cVar4;" (assignment_expression "cVar5 = cVar4" identifier = identifier) ;)) (expression_statement "FUN_003e7350(local_20,(int)(char)local_38);" (call_expression "FUN_003e7350(local_20,(int)(char)local_38)" identifier (argument_list "(local_20,(int)(char)local_38)" ( identifier , (cast_expression "(int)(char)local_38" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)local_38" ( (type_descriptor "char" primitive_type) ) identifier)) ))) ;) (expression_statement "cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);" (assignment_expression "cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" identifier = (call_expression "FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" identifier (argument_list "(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" ( (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" * (cast_expression "(undefined4 *)(iVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (cVar4 == '\0') {\n    *param_8 = 4;\n  }" if (parenthesized_expression "(cVar4 == '\0')" ( (binary_expression "cVar4 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_8 = 4;\n  }" { (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" * identifier) = number_literal) ;) })) (if_statement "if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }" if (parenthesized_expression "((local_38 == 0) && (!bVar2))" ( (binary_expression "(local_38 == 0) && (!bVar2)" (parenthesized_expression "(local_38 == 0)" ( (binary_expression "local_38 == 0" identifier == number_literal) )) && (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) ))) )) (compound_statement "{\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }" { (expression_statement "local_38 = *(int *)(local_20[0] + -0xc);" (assignment_expression "local_38 = *(int *)(local_20[0] + -0xc)" identifier = (pointer_expression "*(int *)(local_20[0] + -0xc)" * (cast_expression "(int *)(local_20[0] + -0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_20[0] + -0xc)" ( (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (goto_statement "goto joined_r0x003cc35b;" goto statement_identifier ;) })) (labeled_statement "LAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" statement_identifier : (if_statement "if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" if (parenthesized_expression "(local_32 == '\0')" ( (binary_expression "local_32 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" { (if_statement "if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" if (parenthesized_expression "(local_33 == 0)" ( (binary_expression "local_33 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }" { (expression_statement "uVar7 = -local_3c;" (assignment_expression "uVar7 = -local_3c" identifier = (unary_expression "-local_3c" - identifier)) ;) (if_statement "if (!bVar15) {\n        uVar7 = local_3c;\n      }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n        uVar7 = local_3c;\n      }" { (expression_statement "uVar7 = local_3c;" (assignment_expression "uVar7 = local_3c" identifier = identifier) ;) })) (expression_statement "*param_9 = uVar7;" (assignment_expression "*param_9 = uVar7" (pointer_expression "*param_9" * identifier) = identifier) ;) }) (else_clause "else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" else (compound_statement "{\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" { (expression_statement "*param_9 = 0xffffffff;" (assignment_expression "*param_9 = 0xffffffff" (pointer_expression "*param_9" * identifier) = number_literal) ;) (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" * identifier) = number_literal) ;) }))) (goto_statement "goto LAB_003cc1e9;" goto statement_identifier ;) }))) (labeled_statement "LAB_003cc1d7:\n  *param_9 = 0;" statement_identifier : (expression_statement "*param_9 = 0;" (assignment_expression "*param_9 = 0" (pointer_expression "*param_9" * identifier) = number_literal) ;)) (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" * identifier) = number_literal) ;) (labeled_statement "LAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" statement_identifier : (if_statement "if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" { (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" * identifier) = (binary_expression "*param_8 | 2" (pointer_expression "*param_8" * identifier) | number_literal)) ;) }))) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }" if (parenthesized_expression "(local_20[0] == &DAT_005f308c)" ( (binary_expression "local_20[0] == &DAT_005f308c" (subscript_expression "local_20[0]" identifier [ number_literal ]) == (pointer_expression "&DAT_005f308c" & identifier)) )) (compound_statement "{\n    return param_1;\n  }" { (return_statement "return param_1;" return identifier ;) })) (expression_statement "FUN_003c0300();" (call_expression "FUN_003c0300()" identifier (argument_list "()" ( ))) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (char_literal ' escape_sequence ')) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) | (binary_expression IDENT ^ LIT)) )))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression (field_expression IDENT . field_identifier) = BOOL) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT / (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (char_literal ' character ')) ))) <= IDENT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) )))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (unary_expression ~ IDENT) < IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = BOOL) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT )))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | (binary_expression (unary_expression ~ IDENT) < IDENT))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT ))) ;)) })) }) while (parenthesized_expression ( BOOL )) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;)) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (unary_expression ! IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (pointer_expression & IDENT)) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return IDENT ;) })))
(function_definition "undefined4 *\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)\n\n{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    \n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" (* "*") (function_declarator "FUN_003cbe80(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" (identifier "FUN_003cbe80") (parameter_list "(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,\n            int param_6,int param_7,uint *param_8,uint *param_9)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "int param_7" (primitive_type "int") (identifier "param_7")) (, ",") (parameter_declaration "uint *param_8" (type_identifier "uint") (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "uint *param_9" (type_identifier "uint") (pointer_declarator "*param_9" (* "*") (identifier "param_9"))) () ")")))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  byte bVar3;\n  char cVar4;\n  char cVar5;\n  int iVar6;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  void *pvVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  uint uVar14;\n  bool bVar15;\n  undefined4 *local_50;\n  undefined4 *local_4c;\n  uint local_40;\n  uint local_3c;\n  int local_38;\n  byte local_33;\n  char local_32;\n  uint local_30;\n  undefined1 local_22 [2];\n  undefined *local_20 [3];\n  undefined4 uStack_14;\n  \n  iVar9 = param_7;\n  uStack_14 = 0x3cbe8b;\n  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);\n  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;\n  if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }\nLAB_003cc0b3:\n  cVar5 = local_32;\n  local_4c = &param_3;\n  local_50 = &param_5;\n  local_20[0] = &DAT_005f308c;\n  if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }\n  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);\n  bVar1 = *(byte *)(iVar6 + 100);\n  if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }\n  local_33 = 0;\n  cVar4 = *(char *)(iVar6 + 0x10);\n  local_3c = 0;\n  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;\nLAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }\nLAB_003cc300:\n  cVar5 = '\0';\n  cVar4 = '\0';\n  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;\nLAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;\njoined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;\n  goto LAB_003cc1d7;\ncode_r0x003cc1af:\n  cVar5 = '\x01';\nLAB_003cc1b4:\n  cVar4 = cVar5;\n  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;\nLAB_003cc310:\n  cVar5 = cVar4;\n                    \n  FUN_003e7350(local_20,(int)(char)local_38);\n  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);\n  if (cVar4 == '\0') {\n    *param_8 = 4;\n  }\n  if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }\nLAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }\nLAB_003cc1d7:\n  *param_9 = 0;\n  *param_8 = 4;\nLAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }\n  *param_1 = param_3;\n  param_1[1] = param_4;\n  if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }\n  FUN_003c0300();\n  return param_1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "char cVar4;" (primitive_type "char") (identifier "cVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "void *pvVar10;" (primitive_type "void") (pointer_declarator "*pvVar10" (* "*") (identifier "pvVar10")) (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "undefined4 *local_50;" (type_identifier "undefined4") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined4 *local_4c;" (type_identifier "undefined4") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "uint local_3c;" (type_identifier "uint") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "byte local_33;" (type_identifier "byte") (identifier "local_33") (; ";")) (declaration "char local_32;" (primitive_type "char") (identifier "local_32") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "undefined1 local_22 [2];" (type_identifier "undefined1") (array_declarator "local_22 [2]" (identifier "local_22") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "undefined *local_20 [3];" (type_identifier "undefined") (pointer_declarator "*local_20 [3]" (* "*") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]"))) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "iVar9 = param_7;" (assignment_expression "iVar9 = param_7" (identifier "iVar9") (= "=") (identifier "param_7")) (; ";")) (expression_statement "uStack_14 = 0x3cbe8b;" (assignment_expression "uStack_14 = 0x3cbe8b" (identifier "uStack_14") (= "=") (number_literal "0x3cbe8b")) (; ";")) (expression_statement "iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);" (assignment_expression "iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c)" (identifier "iVar6") (= "=") (call_expression "FUN_003c6ba0(local_22,param_7 + 0x6c)" (identifier "FUN_003c6ba0") (argument_list "(local_22,param_7 + 0x6c)" (( "(") (identifier "local_22") (, ",") (binary_expression "param_7 + 0x6c" (identifier "param_7") (+ "+") (number_literal "0x6c")) () ")")))) (; ";")) (expression_statement "uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;" (assignment_expression "uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a" (identifier "uVar7") (= "=") (binary_expression "*(uint *)(iVar9 + 0xc) & 0x4a" (pointer_expression "*(uint *)(iVar9 + 0xc)" (* "*") (cast_expression "(uint *)(iVar9 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xc)" (( "(") (binary_expression "iVar9 + 0xc" (identifier "iVar9") (+ "+") (number_literal "0xc")) () ")")))) (& "&") (number_literal "0x4a"))) (; ";")) (if_statement "if (uVar7 == 0x40) {\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }\n  else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" (if "if") (parenthesized_expression "(uVar7 == 0x40)" (( "(") (binary_expression "uVar7 == 0x40" (identifier "uVar7") (== "==") (number_literal "0x40")) () ")")) (compound_statement "{\n    local_30 = 8;\nLAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }\nLAB_003cc0ad:\n    local_40 = local_30;\n  }" ({ "{") (expression_statement "local_30 = 8;" (assignment_expression "local_30 = 8" (identifier "local_30") (= "=") (number_literal "8")) (; ";")) (labeled_statement "LAB_003cbece:\n    local_32 = FUN_003c8240(&param_3,&param_5);" (statement_identifier "LAB_003cbece") (: ":") (expression_statement "local_32 = FUN_003c8240(&param_3,&param_5);" (assignment_expression "local_32 = FUN_003c8240(&param_3,&param_5)" (identifier "local_32") (= "=") (call_expression "FUN_003c8240(&param_3,&param_5)" (identifier "FUN_003c8240") (argument_list "(&param_3,&param_5)" (( "(") (pointer_expression "&param_3" (& "&") (identifier "param_3")) (, ",") (pointer_expression "&param_5" (& "&") (identifier "param_5")) () ")")))) (; ";"))) (if_statement "if (local_32 == '\0') {\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }\n    else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" (if "if") (parenthesized_expression "(local_32 == '\0')" (( "(") (binary_expression "local_32 == '\0'" (identifier "local_32") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\nLAB_003cbef5:\n      local_4c = &param_3;\n      local_50 = &param_5;\n      uVar8 = FUN_003c04a0();\n      cVar4 = *(char *)(iVar6 + 0x10);\n      cVar5 = (char)uVar8;\n      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;\n      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }\nLAB_003cc0a0:\n      local_40 = 0x16;\n      if (local_30 == 0x10) goto LAB_003cc0b3;\n    }" ({ "{") (labeled_statement "LAB_003cbef5:\n      local_4c = &param_3;" (statement_identifier "LAB_003cbef5") (: ":") (expression_statement "local_4c = &param_3;" (assignment_expression "local_4c = &param_3" (identifier "local_4c") (= "=") (pointer_expression "&param_3" (& "&") (identifier "param_3"))) (; ";"))) (expression_statement "local_50 = &param_5;" (assignment_expression "local_50 = &param_5" (identifier "local_50") (= "=") (pointer_expression "&param_5" (& "&") (identifier "param_5"))) (; ";")) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" (identifier "uVar8") (= "=") (call_expression "FUN_003c04a0()" (identifier "FUN_003c04a0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "cVar5 = (char)uVar8;" (assignment_expression "cVar5 = (char)uVar8" (identifier "cVar5") (= "=") (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8"))) (; ";")) (expression_statement "bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;" (assignment_expression "bVar15 = *(char *)(iVar6 + 0x4a) == cVar5" (identifier "bVar15") (= "=") (binary_expression "*(char *)(iVar6 + 0x4a) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4a)" (* "*") (cast_expression "(char *)(iVar6 + 0x4a)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x4a)" (( "(") (binary_expression "iVar6 + 0x4a" (identifier "iVar6") (+ "+") (number_literal "0x4a")) () ")")))) (== "==") (identifier "cVar5"))) (; ";")) (if_statement "if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)) {\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }\n      else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" (if "if") (parenthesized_expression "((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5))" (( "(") (binary_expression "(((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&\n         (*(char *)(iVar6 + 0x24) != cVar5)" (parenthesized_expression "(((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5))))" (( "(") (binary_expression "((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&\n          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))" (parenthesized_expression "((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5))" (( "(") (binary_expression "(bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)" (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar6 + 0x4b) == cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x4b) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4b)" (* "*") (cast_expression "(char *)(iVar6 + 0x4b)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x4b)" (( "(") (binary_expression "iVar6 + 0x4b" (identifier "iVar6") (+ "+") (number_literal "0x4b")) () ")")))) (== "==") (identifier "cVar5")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))" (( "(") (parenthesized_expression "(cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5))" (( "(") (binary_expression "cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)" (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (|| "||") (parenthesized_expression "(*(char *)(iVar6 + 0x25) != cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x25) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x25)" (* "*") (cast_expression "(char *)(iVar6 + 0x25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x25)" (( "(") (binary_expression "iVar6 + 0x25" (identifier "iVar6") (+ "+") (number_literal "0x25")) () ")")))) (!= "!=") (identifier "cVar5")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar6 + 0x24) != cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x24) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x24)" (* "*") (cast_expression "(char *)(iVar6 + 0x24)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x24)" (( "(") (binary_expression "iVar6 + 0x24" (identifier "iVar6") (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (identifier "cVar5")) () ")"))) () ")")) (compound_statement "{\n        FUN_003b97a0(param_3);\n        param_4 = 0xffffffff;\n        local_32 = FUN_003c8240(local_4c,local_50);\n        if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }\n        cVar4 = *(char *)(iVar6 + 0x10);\n        local_38 = 0;\n        bVar2 = false;\n      }" ({ "{") (expression_statement "FUN_003b97a0(param_3);" (call_expression "FUN_003b97a0(param_3)" (identifier "FUN_003b97a0") (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";")) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" (identifier "param_4") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "local_32 = FUN_003c8240(local_4c,local_50);" (assignment_expression "local_32 = FUN_003c8240(local_4c,local_50)" (identifier "local_32") (= "=") (call_expression "FUN_003c8240(local_4c,local_50)" (identifier "FUN_003c8240") (argument_list "(local_4c,local_50)" (( "(") (identifier "local_4c") (, ",") (identifier "local_50") () ")")))) (; ";")) (if_statement "if (local_32 == '\0') {\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }" (if "if") (parenthesized_expression "(local_32 == '\0')" (( "(") (binary_expression "local_32 == '\0'" (identifier "local_32") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar8 = FUN_003c04a0();\n          cVar4 = *(char *)(iVar6 + 0x10);\n          goto LAB_003cbfd8;\n        }" ({ "{") (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" (identifier "uVar8") (= "=") (call_expression "FUN_003c04a0()" (identifier "FUN_003c04a0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (goto_statement "goto LAB_003cbfd8;" (goto "goto") (statement_identifier "LAB_003cbfd8") (; ";")) (} "}"))) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" (else "else") (compound_statement "{\nLAB_003cbfd8:\n        local_38 = 0;\n        bVar2 = false;\n        do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);\n        local_32 = '\0';\n      }" ({ "{") (labeled_statement "LAB_003cbfd8:\n        local_38 = 0;" (statement_identifier "LAB_003cbfd8") (: ":") (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";"))) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (do_statement "do {\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        } while (bVar2);" (do "do") (compound_statement "{\n          cVar5 = (char)uVar8;\n          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;\n          if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }\n          bVar11 = param_5 != (int *)0x0 && param_6 == -1;\n          local_40._0_1_ = param_6 == -1;\n          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }\n          if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }\n          uVar8 = param_4;\n          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }\n          cVar4 = *(char *)(iVar6 + 0x10);\n        }" ({ "{") (expression_statement "cVar5 = (char)uVar8;" (assignment_expression "cVar5 = (char)uVar8" (identifier "cVar5") (= "=") (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8"))) (; ";")) (if_statement "if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)) break;" (if "if") (parenthesized_expression "(((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5))" (( "(") (binary_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||\n             (*(char *)(iVar6 + 0x24) == cVar5)" (parenthesized_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5))" (( "(") (binary_expression "(cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)" (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar6 + 0x25) == cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x25) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x25)" (* "*") (cast_expression "(char *)(iVar6 + 0x25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x25)" (( "(") (binary_expression "iVar6 + 0x25" (identifier "iVar6") (+ "+") (number_literal "0x25")) () ")")))) (== "==") (identifier "cVar5")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar6 + 0x24) == cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x24) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x24)" (* "*") (cast_expression "(char *)(iVar6 + 0x24)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x24)" (( "(") (binary_expression "iVar6 + 0x24" (identifier "iVar6") (+ "+") (number_literal "0x24")) () ")")))) (== "==") (identifier "cVar5")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*(char *)(iVar6 + 0x4e) == cVar5) {\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }\n          else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" (if "if") (parenthesized_expression "(*(char *)(iVar6 + 0x4e) == cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x4e) == cVar5" (pointer_expression "*(char *)(iVar6 + 0x4e)" (* "*") (cast_expression "(char *)(iVar6 + 0x4e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x4e)" (( "(") (binary_expression "iVar6 + 0x4e" (identifier "iVar6") (+ "+") (number_literal "0x4e")) () ")")))) (== "==") (identifier "cVar5")) () ")")) (compound_statement "{\n            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);\n            if (!bVar13) goto LAB_003cc011;\n            bVar2 = uVar7 == 0 || local_30 == 8;\n            if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }\n            local_38 = 0;\n            local_30 = 8;\n            uVar14 = param_3[2];\n            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;\nLAB_003cc057:\n            param_3[2] = uVar14 + 1;\nLAB_003cc064:\n            param_4 = 0xffffffff;\n            bVar13 = false;\n            if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }\n          }" ({ "{") (expression_statement "bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);" (assignment_expression "bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U)" (identifier "bVar13") (= "=") (cast_expression "(bool)(local_30 == 10 | bVar2 ^ 1U)" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (parenthesized_expression "(local_30 == 10 | bVar2 ^ 1U)" (( "(") (binary_expression "local_30 == 10 | bVar2 ^ 1U" (binary_expression "local_30 == 10" (identifier "local_30") (== "==") (number_literal "10")) (| "|") (binary_expression "bVar2 ^ 1U" (identifier "bVar2") (^ "^") (number_literal "1U"))) () ")")))) (; ";")) (if_statement "if (!bVar13) goto LAB_003cc011;" (if "if") (parenthesized_expression "(!bVar13)" (( "(") (unary_expression "!bVar13" (! "!") (identifier "bVar13")) () ")")) (goto_statement "goto LAB_003cc011;" (goto "goto") (statement_identifier "LAB_003cc011") (; ";"))) (expression_statement "bVar2 = uVar7 == 0 || local_30 == 8;" (assignment_expression "bVar2 = uVar7 == 0 || local_30 == 8" (identifier "bVar2") (= "=") (binary_expression "uVar7 == 0 || local_30 == 8" (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) (|| "||") (binary_expression "local_30 == 8" (identifier "local_30") (== "==") (number_literal "8")))) (; ";")) (if_statement "if (uVar7 != 0 && local_30 != 8) {\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }" (if "if") (parenthesized_expression "(uVar7 != 0 && local_30 != 8)" (( "(") (binary_expression "uVar7 != 0 && local_30 != 8" (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) (&& "&&") (binary_expression "local_30 != 8" (identifier "local_30") (!= "!=") (number_literal "8"))) () ")")) (compound_statement "{\n              local_38 = local_38 + 1;\n              goto LAB_003cc048;\n            }" ({ "{") (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_003cc048;" (goto "goto") (statement_identifier "LAB_003cc048") (; ";")) (} "}"))) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = 8;" (assignment_expression "local_30 = 8" (identifier "local_30") (= "=") (number_literal "8")) (; ";")) (expression_statement "uVar14 = param_3[2];" (assignment_expression "uVar14 = param_3[2]" (identifier "uVar14") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;" (if "if") (parenthesized_expression "((uint)param_3[3] <= uVar14)" (( "(") (binary_expression "(uint)param_3[3] <= uVar14" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "uVar14")) () ")")) (goto_statement "goto LAB_003cc270;" (goto "goto") (statement_identifier "LAB_003cc270") (; ";"))) (labeled_statement "LAB_003cc057:\n            param_3[2] = uVar14 + 1;" (statement_identifier "LAB_003cc057") (: ":") (expression_statement "param_3[2] = uVar14 + 1;" (assignment_expression "param_3[2] = uVar14 + 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";"))) (labeled_statement "LAB_003cc064:\n            param_4 = 0xffffffff;" (statement_identifier "LAB_003cc064") (: ":") (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" (identifier "param_4") (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (if_statement "if (((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }" (if "if") (parenthesized_expression "(((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1))" (( "(") (binary_expression "((uint)param_3[3] <= (uint)param_3[2]) &&\n               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" (( "(") (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)param_3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (( "(") (comma_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1" (assignment_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x24)" (* "*") (cast_expression "(code **)(*param_3 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x24)" (( "(") (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (, ",") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1"))) () ")"))) () ")")) (compound_statement "{\n              param_3 = (int *)0x0;\n              bVar13 = true;\n            }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" (identifier "bVar13") (= "=") (true "true")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" (else "else") (compound_statement "{\n            if (!bVar2) break;\nLAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }\n            local_32 = local_30 == 0x10 || uVar7 == 0;\n            if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }\n            local_38 = 0;\n            bVar13 = false;\n            local_30 = 0x10;\nLAB_003cc048:\n            uVar14 = param_3[2];\n            bVar2 = bVar13;\n            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;\nLAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);\n            param_4 = 0xffffffff;\n            if (param_3 != (int *)0x0) goto LAB_003cc064;\n            bVar13 = true;\n          }" ({ "{") (if_statement "if (!bVar2) break;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_003cc011:\n            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" (statement_identifier "LAB_003cc011") (: ":") (if_statement "if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" (if "if") (parenthesized_expression "((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5))" (( "(") (binary_expression "(*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)" (parenthesized_expression "(*(char *)(iVar6 + 0x4c) != cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x4c) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x4c)" (* "*") (cast_expression "(char *)(iVar6 + 0x4c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x4c)" (( "(") (binary_expression "iVar6 + 0x4c" (identifier "iVar6") (+ "+") (number_literal "0x4c")) () ")")))) (!= "!=") (identifier "cVar5")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar6 + 0x4d) != cVar5)" (( "(") (binary_expression "*(char *)(iVar6 + 0x4d) != cVar5" (pointer_expression "*(char *)(iVar6 + 0x4d)" (* "*") (cast_expression "(char *)(iVar6 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x4d)" (( "(") (binary_expression "iVar6 + 0x4d" (identifier "iVar6") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (identifier "cVar5")) () ")"))) () ")")) (compound_statement "{\n              local_32 = '\0';\n              bVar2 = true;\n              goto LAB_003cc0a0;\n            }" ({ "{") (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" (identifier "local_32") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_003cc0a0;" (goto "goto") (statement_identifier "LAB_003cc0a0") (; ";")) (} "}")))) (expression_statement "local_32 = local_30 == 0x10 || uVar7 == 0;" (assignment_expression "local_32 = local_30 == 0x10 || uVar7 == 0" (identifier "local_32") (= "=") (binary_expression "local_30 == 0x10 || uVar7 == 0" (binary_expression "local_30 == 0x10" (identifier "local_30") (== "==") (number_literal "0x10")) (|| "||") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")))) (; ";")) (if_statement "if (local_30 != 0x10 && uVar7 != 0) {\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }" (if "if") (parenthesized_expression "(local_30 != 0x10 && uVar7 != 0)" (( "(") (binary_expression "local_30 != 0x10 && uVar7 != 0" (binary_expression "local_30 != 0x10" (identifier "local_30") (!= "!=") (number_literal "0x10")) (&& "&&") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n              bVar2 = true;\n              goto LAB_003cc0ad;\n            }" ({ "{") (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_003cc0ad;" (goto "goto") (statement_identifier "LAB_003cc0ad") (; ";")) (} "}"))) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "local_30 = 0x10;" (assignment_expression "local_30 = 0x10" (identifier "local_30") (= "=") (number_literal "0x10")) (; ";")) (labeled_statement "LAB_003cc048:\n            uVar14 = param_3[2];" (statement_identifier "LAB_003cc048") (: ":") (expression_statement "uVar14 = param_3[2];" (assignment_expression "uVar14 = param_3[2]" (identifier "uVar14") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";"))) (expression_statement "bVar2 = bVar13;" (assignment_expression "bVar2 = bVar13" (identifier "bVar2") (= "=") (identifier "bVar13")) (; ";")) (if_statement "if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;" (if "if") (parenthesized_expression "(uVar14 < (uint)param_3[3])" (( "(") (binary_expression "uVar14 < (uint)param_3[3]" (identifier "uVar14") (< "<") (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_003cc057;" (goto "goto") (statement_identifier "LAB_003cc057") (; ";"))) (labeled_statement "LAB_003cc270:\n            (**(code **)(*param_3 + 0x28))(param_3);" (statement_identifier "LAB_003cc270") (: ":") (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x28)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x28)" (* "*") (cast_expression "(code **)(*param_3 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x28)" (( "(") (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";"))) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" (identifier "param_4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (param_3 != (int *)0x0) goto LAB_003cc064;" (if "if") (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_003cc064;" (goto "goto") (statement_identifier "LAB_003cc064") (; ";"))) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" (identifier "bVar13") (= "=") (true "true")) (; ";")) (} "}")))) (expression_statement "bVar11 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar11 = param_5 != (int *)0x0 && param_6 == -1" (identifier "bVar11") (= "=") (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "local_40._0_1_ = param_6 == -1;" (assignment_expression "local_40._0_1_ = param_6 == -1" (field_expression "local_40._0_1_" (identifier "local_40") (. ".") (field_identifier "_0_1_")) (= "=") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }" (if "if") (parenthesized_expression "((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2]))" (( "(") (binary_expression "(bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])" (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (&& "&&") (parenthesized_expression "(local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])" (( "(") (comma_expression "local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2]" (assignment_expression "local_40._0_1_ = false" (field_expression "local_40._0_1_" (identifier "local_40") (. ".") (field_identifier "_0_1_")) (= "=") (false "false")) (, ",") (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)param_5[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))))) () ")"))) () ")")) (compound_statement "{\n            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n            local_40._0_1_ = false;\n            if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }\n          }" ({ "{") (expression_statement "iVar9 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar9 = (**(code **)(*param_5 + 0x24))(param_5)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_5 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_5 + 0x24)" (* "*") (cast_expression "(code **)(*param_5 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x24)" (( "(") (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (expression_statement "local_40._0_1_ = false;" (assignment_expression "local_40._0_1_ = false" (field_expression "local_40._0_1_" (identifier "local_40") (. ".") (field_identifier "_0_1_")) (= "=") (false "false")) (; ";")) (if_statement "if (iVar9 == -1) {\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n              param_5 = (int *)0x0;\n              local_40._0_1_ = bVar11;\n            }" ({ "{") (expression_statement "param_5 = (int *)0x0;" (assignment_expression "param_5 = (int *)0x0" (identifier "param_5") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_40._0_1_ = bVar11;" (assignment_expression "local_40._0_1_ = bVar11" (field_expression "local_40._0_1_" (identifier "local_40") (. ".") (field_identifier "_0_1_")) (= "=") (identifier "bVar11")) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((bool)(char)local_40 == bVar13) {\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }" (if "if") (parenthesized_expression "((bool)(char)local_40 == bVar13)" (( "(") (binary_expression "(bool)(char)local_40 == bVar13" (cast_expression "(bool)(char)local_40" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (cast_expression "(char)local_40" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_40"))) (== "==") (identifier "bVar13")) () ")")) (compound_statement "{\n            local_32 = '\x01';\n            cVar4 = *(char *)(iVar6 + 0x10);\n            goto LAB_003cc0a0;\n          }" ({ "{") (expression_statement "local_32 = '\x01';" (assignment_expression "local_32 = '\x01'" (identifier "local_32") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";")) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (goto_statement "goto LAB_003cc0a0;" (goto "goto") (statement_identifier "LAB_003cc0a0") (; ";")) (} "}"))) (expression_statement "uVar8 = param_4;" (assignment_expression "uVar8 = param_4" (identifier "uVar8") (= "=") (identifier "param_4")) (; ";")) (if_statement "if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }" (if "if") (parenthesized_expression "((param_3 != (int *)0x0) && (param_4 == 0xffffffff))" (( "(") (binary_expression "(param_3 != (int *)0x0) && (param_4 == 0xffffffff)" (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(param_4 == 0xffffffff)" (( "(") (binary_expression "param_4 == 0xffffffff" (identifier "param_4") (== "==") (number_literal "0xffffffff")) () ")"))) () ")")) (compound_statement "{\n            if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }\n          }" ({ "{") (if_statement "if ((byte *)param_3[2] < (byte *)param_3[3]) {\n              uVar8 = (uint)*(byte *)param_3[2];\n            }\n            else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" (if "if") (parenthesized_expression "((byte *)param_3[2] < (byte *)param_3[3])" (( "(") (binary_expression "(byte *)param_3[2] < (byte *)param_3[3]" (cast_expression "(byte *)param_3[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)param_3[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n              uVar8 = (uint)*(byte *)param_3[2];\n            }" ({ "{") (expression_statement "uVar8 = (uint)*(byte *)param_3[2];" (assignment_expression "uVar8 = (uint)*(byte *)param_3[2]" (identifier "uVar8") (= "=") (binary_expression "(uint)*(byte *)param_3[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_3[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" (else "else") (compound_statement "{\n              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);\n              if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }\n            }" ({ "{") (expression_statement "uVar8 = (**(code **)(*param_3 + 0x24))(param_3);" (assignment_expression "uVar8 = (**(code **)(*param_3 + 0x24))(param_3)" (identifier "uVar8") (= "=") (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x24)" (* "*") (cast_expression "(code **)(*param_3 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x24)" (( "(") (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (uVar8 == 0xffffffff) {\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }" (if "if") (parenthesized_expression "(uVar8 == 0xffffffff)" (( "(") (binary_expression "uVar8 == 0xffffffff" (identifier "uVar8") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n                param_3 = (int *)0x0;\n                uVar8 = 0xffffffff;\n              }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar8 = 0xffffffff;" (assignment_expression "uVar8 = 0xffffffff" (identifier "uVar8") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (; ";")) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" (identifier "local_32") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (labeled_statement "LAB_003cc0a0:\n      local_40 = 0x16;" (statement_identifier "LAB_003cc0a0") (: ":") (expression_statement "local_40 = 0x16;" (assignment_expression "local_40 = 0x16" (identifier "local_40") (= "=") (number_literal "0x16")) (; ";"))) (if_statement "if (local_30 == 0x10) goto LAB_003cc0b3;" (if "if") (parenthesized_expression "(local_30 == 0x10)" (( "(") (binary_expression "local_30 == 0x10" (identifier "local_30") (== "==") (number_literal "0x10")) () ")")) (goto_statement "goto LAB_003cc0b3;" (goto "goto") (statement_identifier "LAB_003cc0b3") (; ";"))) (} "}")) (else_clause "else {\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" (else "else") (compound_statement "{\n      cVar4 = *(char *)(iVar6 + 0x10);\n      uVar8 = 0;\n      local_38 = 0;\n      bVar2 = false;\n      bVar15 = false;\n    }" ({ "{") (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (} "}")))) (labeled_statement "LAB_003cc0ad:\n    local_40 = local_30;" (statement_identifier "LAB_003cc0ad") (: ":") (expression_statement "local_40 = local_30;" (assignment_expression "local_40 = local_30" (identifier "local_40") (= "=") (identifier "local_30")) (; ";"))) (} "}")) (else_clause "else {\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" (else "else") (compound_statement "{\n    if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }\n    local_32 = FUN_003c8240(&param_3,&param_5);\n    local_30 = 0x10;\n    if (local_32 == '\0') goto LAB_003cbef5;\n    cVar4 = *(char *)(iVar6 + 0x10);\n    uVar8 = 0;\n    local_38 = 0;\n    bVar2 = false;\n    bVar15 = false;\n    local_40 = 0x16;\n  }" ({ "{") (if_statement "if (uVar7 != 8) {\n      local_30 = 10;\n      goto LAB_003cbece;\n    }" (if "if") (parenthesized_expression "(uVar7 != 8)" (( "(") (binary_expression "uVar7 != 8" (identifier "uVar7") (!= "!=") (number_literal "8")) () ")")) (compound_statement "{\n      local_30 = 10;\n      goto LAB_003cbece;\n    }" ({ "{") (expression_statement "local_30 = 10;" (assignment_expression "local_30 = 10" (identifier "local_30") (= "=") (number_literal "10")) (; ";")) (goto_statement "goto LAB_003cbece;" (goto "goto") (statement_identifier "LAB_003cbece") (; ";")) (} "}"))) (expression_statement "local_32 = FUN_003c8240(&param_3,&param_5);" (assignment_expression "local_32 = FUN_003c8240(&param_3,&param_5)" (identifier "local_32") (= "=") (call_expression "FUN_003c8240(&param_3,&param_5)" (identifier "FUN_003c8240") (argument_list "(&param_3,&param_5)" (( "(") (pointer_expression "&param_3" (& "&") (identifier "param_3")) (, ",") (pointer_expression "&param_5" (& "&") (identifier "param_5")) () ")")))) (; ";")) (expression_statement "local_30 = 0x10;" (assignment_expression "local_30 = 0x10" (identifier "local_30") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if (local_32 == '\0') goto LAB_003cbef5;" (if "if") (parenthesized_expression "(local_32 == '\0')" (( "(") (binary_expression "local_32 == '\0'" (identifier "local_32") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_003cbef5;" (goto "goto") (statement_identifier "LAB_003cbef5") (; ";"))) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" (identifier "bVar15") (= "=") (false "false")) (; ";")) (expression_statement "local_40 = 0x16;" (assignment_expression "local_40 = 0x16" (identifier "local_40") (= "=") (number_literal "0x16")) (; ";")) (} "}")))) (labeled_statement "LAB_003cc0b3:\n  cVar5 = local_32;" (statement_identifier "LAB_003cc0b3") (: ":") (expression_statement "cVar5 = local_32;" (assignment_expression "cVar5 = local_32" (identifier "cVar5") (= "=") (identifier "local_32")) (; ";"))) (expression_statement "local_4c = &param_3;" (assignment_expression "local_4c = &param_3" (identifier "local_4c") (= "=") (pointer_expression "&param_3" (& "&") (identifier "param_3"))) (; ";")) (expression_statement "local_50 = &param_5;" (assignment_expression "local_50 = &param_5" (identifier "local_50") (= "=") (pointer_expression "&param_5" (& "&") (identifier "param_5"))) (; ";")) (expression_statement "local_20[0] = &DAT_005f308c;" (assignment_expression "local_20[0] = &DAT_005f308c" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (= "=") (pointer_expression "&DAT_005f308c" (& "&") (identifier "DAT_005f308c"))) (; ";")) (if_statement "if (cVar4 != '\0') {\n    FUN_003e6d30(local_20,0x20);\n  }" (if "if") (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_003e6d30(local_20,0x20);\n  }" ({ "{") (expression_statement "FUN_003e6d30(local_20,0x20);" (call_expression "FUN_003e6d30(local_20,0x20)" (identifier "FUN_003e6d30") (argument_list "(local_20,0x20)" (( "(") (identifier "local_20") (, ",") (number_literal "0x20") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar7 = (uint)(0xffffffff / (ulonglong)local_30);" (assignment_expression "uVar7 = (uint)(0xffffffff / (ulonglong)local_30)" (identifier "uVar7") (= "=") (call_expression "(uint)(0xffffffff / (ulonglong)local_30)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xffffffff / (ulonglong)local_30)" (( "(") (binary_expression "0xffffffff / (ulonglong)local_30" (number_literal "0xffffffff") (/ "/") (cast_expression "(ulonglong)local_30" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "local_30"))) () ")")))) (; ";")) (expression_statement "bVar1 = *(byte *)(iVar6 + 100);" (assignment_expression "bVar1 = *(byte *)(iVar6 + 100)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar6 + 100)" (* "*") (cast_expression "(byte *)(iVar6 + 100)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 100)" (( "(") (binary_expression "iVar6 + 100" (identifier "iVar6") (+ "+") (number_literal "100")) () ")"))))) (; ";")) (if_statement "if (bVar1 == 0) {\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" (if "if") (parenthesized_expression "(bVar1 == 0)" (( "(") (binary_expression "bVar1 == 0" (identifier "bVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_33 = 0;\n    if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }\n    local_3c = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" ({ "{") (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" (identifier "local_33") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_32 == '\0') {\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }" (if "if") (parenthesized_expression "(local_32 == '\0')" (( "(") (binary_expression "local_32 == '\0'" (identifier "local_32") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      local_3c = 0;\n      do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );\n    }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      } while( true );" (do "do") (compound_statement "{\n        cVar4 = (char)uVar8;\n        iVar9 = (int)cVar4;\n        if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }\n        if (uVar8 == 0xffffffff) goto LAB_003cc300;\n        if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }\n        bVar12 = param_5 != (int *)0x0 && param_6 == -1;\n        bVar11 = param_6 == -1;\n        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }\n        if (bVar11 == bVar13) goto code_r0x003cc1af;\n                    \n        uVar8 = FUN_003c04a0();\n      }" ({ "{") (expression_statement "cVar4 = (char)uVar8;" (assignment_expression "cVar4 = (char)uVar8" (identifier "cVar4") (= "=") (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8"))) (; ";")) (expression_statement "iVar9 = (int)cVar4;" (assignment_expression "iVar9 = (int)cVar4" (identifier "iVar9") (= "=") (cast_expression "(int)cVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar4"))) (; ";")) (if_statement "if (local_40 < 0xb) {\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }\n        else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" (if "if") (parenthesized_expression "(local_40 < 0xb)" (( "(") (binary_expression "local_40 < 0xb" (identifier "local_40") (< "<") (number_literal "0xb")) () ")")) (compound_statement "{\n          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;\nLAB_003cc133:\n          uVar8 = iVar9 - 0x30;\n        }" ({ "{") (if_statement "if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;" (if "if") (parenthesized_expression "((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4))" (( "(") (binary_expression "(cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)" (parenthesized_expression "(cVar4 < '0')" (( "(") (binary_expression "cVar4 < '0'" (identifier "cVar4") (< "<") (char_literal "'0'" (' "'") (character "0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "((char)((char)local_40 + '0') <= cVar4)" (( "(") (binary_expression "(char)((char)local_40 + '0') <= cVar4" (cast_expression "(char)((char)local_40 + '0')" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((char)local_40 + '0')" (( "(") (binary_expression "(char)local_40 + '0'" (cast_expression "(char)local_40" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_40")) (+ "+") (char_literal "'0'" (' "'") (character "0") (' "'"))) () ")"))) (<= "<=") (identifier "cVar4")) () ")"))) () ")")) (goto_statement "goto LAB_003cc300;" (goto "goto") (statement_identifier "LAB_003cc300") (; ";"))) (labeled_statement "LAB_003cc133:\n          uVar8 = iVar9 - 0x30;" (statement_identifier "LAB_003cc133") (: ":") (expression_statement "uVar8 = iVar9 - 0x30;" (assignment_expression "uVar8 = iVar9 - 0x30" (identifier "uVar8") (= "=") (binary_expression "iVar9 - 0x30" (identifier "iVar9") (- "-") (number_literal "0x30"))) (; ";"))) (} "}")) (else_clause "else {\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" (else "else") (compound_statement "{\n          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;\n          if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }\n        }" ({ "{") (if_statement "if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;" (if "if") (parenthesized_expression "((byte)(cVar4 - 0x30U) < 10)" (( "(") (binary_expression "(byte)(cVar4 - 0x30U) < 10" (call_expression "(byte)(cVar4 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar4 - 0x30U)" (( "(") (binary_expression "cVar4 - 0x30U" (identifier "cVar4") (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")")) (goto_statement "goto LAB_003cc133;" (goto "goto") (statement_identifier "LAB_003cc133") (; ";"))) (if_statement "if ((byte)(cVar4 + 0x9fU) < 6) {\n            uVar8 = iVar9 - 0x57;\n          }\n          else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" (if "if") (parenthesized_expression "((byte)(cVar4 + 0x9fU) < 6)" (( "(") (binary_expression "(byte)(cVar4 + 0x9fU) < 6" (call_expression "(byte)(cVar4 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar4 + 0x9fU)" (( "(") (binary_expression "cVar4 + 0x9fU" (identifier "cVar4") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "6")) () ")")) (compound_statement "{\n            uVar8 = iVar9 - 0x57;\n          }" ({ "{") (expression_statement "uVar8 = iVar9 - 0x57;" (assignment_expression "uVar8 = iVar9 - 0x57" (identifier "uVar8") (= "=") (binary_expression "iVar9 - 0x57" (identifier "iVar9") (- "-") (number_literal "0x57"))) (; ";")) (} "}")) (else_clause "else {\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" (else "else") (compound_statement "{\n            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;\n            uVar8 = iVar9 - 0x37;\n          }" ({ "{") (if_statement "if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;" (if "if") (parenthesized_expression "(5 < (byte)(cVar4 + 0xbfU))" (( "(") (binary_expression "5 < (byte)(cVar4 + 0xbfU)" (number_literal "5") (< "<") (call_expression "(byte)(cVar4 + 0xbfU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar4 + 0xbfU)" (( "(") (binary_expression "cVar4 + 0xbfU" (identifier "cVar4") (+ "+") (number_literal "0xbfU")) () ")")))) () ")")) (goto_statement "goto LAB_003cc300;" (goto "goto") (statement_identifier "LAB_003cc300") (; ";"))) (expression_statement "uVar8 = iVar9 - 0x37;" (assignment_expression "uVar8 = iVar9 - 0x37" (identifier "uVar8") (= "=") (binary_expression "iVar9 - 0x37" (identifier "iVar9") (- "-") (number_literal "0x37"))) (; ";")) (} "}")))) (} "}")))) (if_statement "if (uVar8 == 0xffffffff) goto LAB_003cc300;" (if "if") (parenthesized_expression "(uVar8 == 0xffffffff)" (( "(") (binary_expression "uVar8 == 0xffffffff" (identifier "uVar8") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_003cc300;" (goto "goto") (statement_identifier "LAB_003cc300") (; ";"))) (if_statement "if (uVar7 < local_3c) {\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }\n        else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" (if "if") (parenthesized_expression "(uVar7 < local_3c)" (( "(") (binary_expression "uVar7 < local_3c" (identifier "uVar7") (< "<") (identifier "local_3c")) () ")")) (compound_statement "{\n          local_33 = 1;\n          uVar8 = param_3[2];\n          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;\nLAB_003cc173:\n          param_3[2] = uVar8 + 1;\nLAB_003cc180:\n          param_4 = 0xffffffff;\n          bVar13 = false;\n                    \n          if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }\n        }" ({ "{") (expression_statement "local_33 = 1;" (assignment_expression "local_33 = 1" (identifier "local_33") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" (identifier "uVar8") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;" (if "if") (parenthesized_expression "((uint)param_3[3] <= uVar8)" (( "(") (binary_expression "(uint)param_3[3] <= uVar8" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "uVar8")) () ")")) (goto_statement "goto LAB_003cc3a3;" (goto "goto") (statement_identifier "LAB_003cc3a3") (; ";"))) (labeled_statement "LAB_003cc173:\n          param_3[2] = uVar8 + 1;" (statement_identifier "LAB_003cc173") (: ":") (expression_statement "param_3[2] = uVar8 + 1;" (assignment_expression "param_3[2] = uVar8 + 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";"))) (labeled_statement "LAB_003cc180:\n          param_4 = 0xffffffff;" (statement_identifier "LAB_003cc180") (: ":") (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" (identifier "param_4") (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (if_statement "if (((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }" (if "if") (parenthesized_expression "(((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1))" (( "(") (binary_expression "((uint)param_3[3] <= (uint)param_3[2]) &&\n             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (parenthesized_expression "((uint)param_3[3] <= (uint)param_3[2])" (( "(") (binary_expression "(uint)param_3[3] <= (uint)param_3[2]" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)param_3[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)" (( "(") (comma_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1" (assignment_expression "iVar9 = (**(code **)(*param_3 + 0x24))(param_3)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*param_3 + 0x24))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x24)" (* "*") (cast_expression "(code **)(*param_3 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x24)" (( "(") (binary_expression "*param_3 + 0x24" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (, ",") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1"))) () ")"))) () ")")) (compound_statement "{\n            param_3 = (int *)0x0;\n            bVar13 = true;\n          }" ({ "{") (expression_statement "param_3 = (int *)0x0;" (assignment_expression "param_3 = (int *)0x0" (identifier "param_3") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" (identifier "bVar13") (= "=") (true "true")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" (else "else") (compound_statement "{\n          uVar14 = local_3c * local_30;\n          local_3c = uVar8 + uVar14;\n          local_33 = local_33 | ~uVar8 < uVar14;\n          local_38 = local_38 + 1;\n          uVar8 = param_3[2];\n          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;\nLAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);\n          param_4 = 0xffffffff;\n          if (param_3 != (int *)0x0) goto LAB_003cc180;\n          bVar13 = true;\n        }" ({ "{") (expression_statement "uVar14 = local_3c * local_30;" (assignment_expression "uVar14 = local_3c * local_30" (identifier "uVar14") (= "=") (binary_expression "local_3c * local_30" (identifier "local_3c") (* "*") (identifier "local_30"))) (; ";")) (expression_statement "local_3c = uVar8 + uVar14;" (assignment_expression "local_3c = uVar8 + uVar14" (identifier "local_3c") (= "=") (binary_expression "uVar8 + uVar14" (identifier "uVar8") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "local_33 = local_33 | ~uVar8 < uVar14;" (assignment_expression "local_33 = local_33 | ~uVar8 < uVar14" (identifier "local_33") (= "=") (binary_expression "local_33 | ~uVar8 < uVar14" (identifier "local_33") (| "|") (binary_expression "~uVar8 < uVar14" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (< "<") (identifier "uVar14")))) (; ";")) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" (identifier "uVar8") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;" (if "if") (parenthesized_expression "(uVar8 < (uint)param_3[3])" (( "(") (binary_expression "uVar8 < (uint)param_3[3]" (identifier "uVar8") (< "<") (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_003cc173;" (goto "goto") (statement_identifier "LAB_003cc173") (; ";"))) (labeled_statement "LAB_003cc3a3:\n          (**(code **)(*param_3 + 0x28))(param_3);" (statement_identifier "LAB_003cc3a3") (: ":") (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x28)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x28)" (* "*") (cast_expression "(code **)(*param_3 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x28)" (( "(") (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";"))) (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" (identifier "param_4") (= "=") (number_literal "0xffffffff")) (; ";")) (if_statement "if (param_3 != (int *)0x0) goto LAB_003cc180;" (if "if") (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_003cc180;" (goto "goto") (statement_identifier "LAB_003cc180") (; ";"))) (expression_statement "bVar13 = true;" (assignment_expression "bVar13 = true" (identifier "bVar13") (= "=") (true "true")) (; ";")) (} "}")))) (expression_statement "bVar12 = param_5 != (int *)0x0 && param_6 == -1;" (assignment_expression "bVar12 = param_5 != (int *)0x0 && param_6 == -1" (identifier "bVar12") (= "=") (binary_expression "param_5 != (int *)0x0 && param_6 == -1" (binary_expression "param_5 != (int *)0x0" (identifier "param_5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "bVar11 = param_6 == -1;" (assignment_expression "bVar11 = param_6 == -1" (identifier "bVar11") (= "=") (binary_expression "param_6 == -1" (identifier "param_6") (== "==") (number_literal "-1"))) (; ";")) (if_statement "if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }" (if "if") (parenthesized_expression "((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2]))" (( "(") (binary_expression "(bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])" (parenthesized_expression "(bVar12)" (( "(") (identifier "bVar12") () ")")) (&& "&&") (parenthesized_expression "(bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])" (( "(") (comma_expression "bVar11 = false, (uint)param_5[3] <= (uint)param_5[2]" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (, ",") (binary_expression "(uint)param_5[3] <= (uint)param_5[2]" (cast_expression "(uint)param_5[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(uint)param_5[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))))) () ")"))) () ")")) (compound_statement "{\n          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);\n          bVar11 = false;\n          if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }\n        }" ({ "{") (expression_statement "iVar9 = (**(code **)(*param_5 + 0x24))(param_5);" (assignment_expression "iVar9 = (**(code **)(*param_5 + 0x24))(param_5)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(*param_5 + 0x24))(param_5)" (parenthesized_expression "(**(code **)(*param_5 + 0x24))" (( "(") (pointer_expression "**(code **)(*param_5 + 0x24)" (* "*") (pointer_expression "*(code **)(*param_5 + 0x24)" (* "*") (cast_expression "(code **)(*param_5 + 0x24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x24)" (( "(") (binary_expression "*param_5 + 0x24" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (argument_list "(param_5)" (( "(") (identifier "param_5") () ")")))) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (if_statement "if (iVar9 == -1) {\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }" (if "if") (parenthesized_expression "(iVar9 == -1)" (( "(") (binary_expression "iVar9 == -1" (identifier "iVar9") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            param_5 = (int *)0x0;\n            bVar11 = bVar12;\n          }" ({ "{") (expression_statement "param_5 = (int *)0x0;" (assignment_expression "param_5 = (int *)0x0" (identifier "param_5") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar11 = bVar12;" (assignment_expression "bVar11 = bVar12" (identifier "bVar11") (= "=") (identifier "bVar12")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (bVar11 == bVar13) goto code_r0x003cc1af;" (if "if") (parenthesized_expression "(bVar11 == bVar13)" (( "(") (binary_expression "bVar11 == bVar13" (identifier "bVar11") (== "==") (identifier "bVar13")) () ")")) (goto_statement "goto code_r0x003cc1af;" (goto "goto") (statement_identifier "code_r0x003cc1af") (; ";"))) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" (identifier "uVar8") (= "=") (call_expression "FUN_003c04a0()" (identifier "FUN_003c04a0") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" (identifier "local_32") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (goto_statement "goto LAB_003cc1b4;" (goto "goto") (statement_identifier "LAB_003cc1b4") (; ";")) (} "}"))) (if_statement "if (local_32 != '\0') {\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" (if "if") (parenthesized_expression "(local_32 != '\0')" (( "(") (binary_expression "local_32 != '\0'" (identifier "local_32") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_3c = 0;\n    local_33 = 0;\n    local_32 = '\0';\n    goto LAB_003cc1b4;\n  }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" (identifier "local_33") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_32 = '\0';" (assignment_expression "local_32 = '\0'" (identifier "local_32") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (goto_statement "goto LAB_003cc1b4;" (goto "goto") (statement_identifier "LAB_003cc1b4") (; ";")) (} "}"))) (expression_statement "local_33 = 0;" (assignment_expression "local_33 = 0" (identifier "local_33") (= "=") (number_literal "0")) (; ";")) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;" (if "if") (parenthesized_expression "((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8))" (( "(") (binary_expression "(cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)" (parenthesized_expression "(cVar4 != '\0')" (( "(") (binary_expression "cVar4 != '\0'" (identifier "cVar4") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar6 + 0x25) == (char)uVar8)" (( "(") (binary_expression "*(char *)(iVar6 + 0x25) == (char)uVar8" (pointer_expression "*(char *)(iVar6 + 0x25)" (* "*") (cast_expression "(char *)(iVar6 + 0x25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x25)" (( "(") (binary_expression "iVar6 + 0x25" (identifier "iVar6") (+ "+") (number_literal "0x25")) () ")")))) (== "==") (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8"))) () ")"))) () ")")) (goto_statement "goto LAB_003cc592;" (goto "goto") (statement_identifier "LAB_003cc592") (; ";"))) (labeled_statement "LAB_003cc4d4:\n  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" (statement_identifier "LAB_003cc4d4") (: ":") (if_statement "if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" (if "if") (parenthesized_expression "(((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0))" (( "(") (binary_expression "((char)uVar8 != *(char *)(iVar6 + 0x24)) &&\n     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)" (parenthesized_expression "((char)uVar8 != *(char *)(iVar6 + 0x24))" (( "(") (binary_expression "(char)uVar8 != *(char *)(iVar6 + 0x24)" (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8")) (!= "!=") (pointer_expression "*(char *)(iVar6 + 0x24)" (* "*") (cast_expression "(char *)(iVar6 + 0x24)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x24)" (( "(") (binary_expression "iVar6 + 0x24" (identifier "iVar6") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)" (( "(") (comma_expression "pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0" (assignment_expression "pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" (identifier "pvVar10") (= "=") (call_expression "memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" (identifier "memchr") (argument_list "((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40)" (( "(") (cast_expression "(void *)(iVar6 + 0x4e)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x4e)" (( "(") (binary_expression "iVar6 + 0x4e" (identifier "iVar6") (+ "+") (number_literal "0x4e")) () ")"))) (, ",") (cast_expression "(int)(char)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8"))) (, ",") (identifier "local_40") () ")")))) (, ",") (binary_expression "pvVar10 != (void *)0x0" (identifier "pvVar10") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);\n    if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }\n    bVar3 = bVar1;\n    if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }\n    local_33 = bVar3;\n    uVar8 = param_3[2];\n    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;\n    do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );\n  }" ({ "{") (expression_statement "uVar8 = (int)pvVar10 - (iVar6 + 0x4e);" (assignment_expression "uVar8 = (int)pvVar10 - (iVar6 + 0x4e)" (identifier "uVar8") (= "=") (binary_expression "(int)pvVar10 - (iVar6 + 0x4e)" (cast_expression "(int)pvVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pvVar10")) (- "-") (parenthesized_expression "(iVar6 + 0x4e)" (( "(") (binary_expression "iVar6 + 0x4e" (identifier "iVar6") (+ "+") (number_literal "0x4e")) () ")")))) (; ";")) (if_statement "if (0xf < (int)uVar8) {\n      uVar8 = uVar8 - 6;\n    }" (if "if") (parenthesized_expression "(0xf < (int)uVar8)" (( "(") (binary_expression "0xf < (int)uVar8" (number_literal "0xf") (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")")) (compound_statement "{\n      uVar8 = uVar8 - 6;\n    }" ({ "{") (expression_statement "uVar8 = uVar8 - 6;" (assignment_expression "uVar8 = uVar8 - 6" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 6" (identifier "uVar8") (- "-") (number_literal "6"))) (; ";")) (} "}"))) (expression_statement "bVar3 = bVar1;" (assignment_expression "bVar3 = bVar1" (identifier "bVar3") (= "=") (identifier "bVar1")) (; ";")) (if_statement "if (local_3c <= uVar7) {\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }" (if "if") (parenthesized_expression "(local_3c <= uVar7)" (( "(") (binary_expression "local_3c <= uVar7" (identifier "local_3c") (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n      uVar14 = local_3c * local_30;\n      local_3c = uVar8 + uVar14;\n      local_38 = local_38 + 1;\n      bVar3 = local_33 | ~uVar8 < uVar14;\n    }" ({ "{") (expression_statement "uVar14 = local_3c * local_30;" (assignment_expression "uVar14 = local_3c * local_30" (identifier "uVar14") (= "=") (binary_expression "local_3c * local_30" (identifier "local_3c") (* "*") (identifier "local_30"))) (; ";")) (expression_statement "local_3c = uVar8 + uVar14;" (assignment_expression "local_3c = uVar8 + uVar14" (identifier "local_3c") (= "=") (binary_expression "uVar8 + uVar14" (identifier "uVar8") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar3 = local_33 | ~uVar8 < uVar14;" (assignment_expression "bVar3 = local_33 | ~uVar8 < uVar14" (identifier "bVar3") (= "=") (binary_expression "local_33 | ~uVar8 < uVar14" (identifier "local_33") (| "|") (binary_expression "~uVar8 < uVar14" (unary_expression "~uVar8" (~ "~") (identifier "uVar8")) (< "<") (identifier "uVar14")))) (; ";")) (} "}"))) (expression_statement "local_33 = bVar3;" (assignment_expression "local_33 = bVar3" (identifier "local_33") (= "=") (identifier "bVar3")) (; ";")) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" (identifier "uVar8") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;" (if "if") (parenthesized_expression "((uint)param_3[3] <= uVar8)" (( "(") (binary_expression "(uint)param_3[3] <= uVar8" (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (identifier "uVar8")) () ")")) (goto_statement "goto LAB_003cc5c8;" (goto "goto") (statement_identifier "LAB_003cc5c8") (; ";"))) (do_statement "do {\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    } while( true );" (do "do") (compound_statement "{\n      param_3[2] = uVar8 + 1;\n      while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }\n    }" ({ "{") (expression_statement "param_3[2] = uVar8 + 1;" (assignment_expression "param_3[2] = uVar8 + 1" (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (while_statement "while( true ) {\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        param_4 = 0xffffffff;\n        cVar5 = FUN_003c8240(local_4c,local_50);\n        if (cVar5 != '\0') goto LAB_003cc1b4;\n        uVar8 = FUN_003c04a0();\n        cVar4 = *(char *)(iVar6 + 0x10);\n        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;\nLAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }\n        FUN_003e7350(local_20,(int)(char)local_38);\n        local_38 = 0;\n        uVar8 = param_3[2];\n        if (uVar8 < (uint)param_3[3]) break;\nLAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);\n      }" ({ "{") (expression_statement "param_4 = 0xffffffff;" (assignment_expression "param_4 = 0xffffffff" (identifier "param_4") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "cVar5 = FUN_003c8240(local_4c,local_50);" (assignment_expression "cVar5 = FUN_003c8240(local_4c,local_50)" (identifier "cVar5") (= "=") (call_expression "FUN_003c8240(local_4c,local_50)" (identifier "FUN_003c8240") (argument_list "(local_4c,local_50)" (( "(") (identifier "local_4c") (, ",") (identifier "local_50") () ")")))) (; ";")) (if_statement "if (cVar5 != '\0') goto LAB_003cc1b4;" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_003cc1b4;" (goto "goto") (statement_identifier "LAB_003cc1b4") (; ";"))) (expression_statement "uVar8 = FUN_003c04a0();" (assignment_expression "uVar8 = FUN_003c04a0()" (identifier "uVar8") (= "=") (call_expression "FUN_003c04a0()" (identifier "FUN_003c04a0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "cVar4 = *(char *)(iVar6 + 0x10);" (assignment_expression "cVar4 = *(char *)(iVar6 + 0x10)" (identifier "cVar4") (= "=") (pointer_expression "*(char *)(iVar6 + 0x10)" (* "*") (cast_expression "(char *)(iVar6 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x10)" (( "(") (binary_expression "iVar6 + 0x10" (identifier "iVar6") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;" (if "if") (parenthesized_expression "((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8))" (( "(") (binary_expression "(cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)" (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iVar6 + 0x25) != (char)uVar8)" (( "(") (binary_expression "*(char *)(iVar6 + 0x25) != (char)uVar8" (pointer_expression "*(char *)(iVar6 + 0x25)" (* "*") (cast_expression "(char *)(iVar6 + 0x25)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x25)" (( "(") (binary_expression "iVar6 + 0x25" (identifier "iVar6") (+ "+") (number_literal "0x25")) () ")")))) (!= "!=") (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8"))) () ")"))) () ")")) (goto_statement "goto LAB_003cc4d4;" (goto "goto") (statement_identifier "LAB_003cc4d4") (; ";"))) (labeled_statement "LAB_003cc592:\n        if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" (statement_identifier "LAB_003cc592") (: ":") (if_statement "if (local_38 == 0) {\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" (if "if") (parenthesized_expression "(local_38 == 0)" (( "(") (binary_expression "local_38 == 0" (identifier "local_38") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          cVar5 = '\0';\n          local_32 = cVar4;\n          goto LAB_003cc1b4;\n        }" ({ "{") (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" (identifier "cVar5") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "local_32 = cVar4;" (assignment_expression "local_32 = cVar4" (identifier "local_32") (= "=") (identifier "cVar4")) (; ";")) (goto_statement "goto LAB_003cc1b4;" (goto "goto") (statement_identifier "LAB_003cc1b4") (; ";")) (} "}")))) (expression_statement "FUN_003e7350(local_20,(int)(char)local_38);" (call_expression "FUN_003e7350(local_20,(int)(char)local_38)" (identifier "FUN_003e7350") (argument_list "(local_20,(int)(char)local_38)" (( "(") (identifier "local_20") (, ",") (cast_expression "(int)(char)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)local_38" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_38"))) () ")"))) (; ";")) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" (identifier "local_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar8 = param_3[2];" (assignment_expression "uVar8 = param_3[2]" (identifier "uVar8") (= "=") (subscript_expression "param_3[2]" (identifier "param_3") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (uVar8 < (uint)param_3[3]) break;" (if "if") (parenthesized_expression "(uVar8 < (uint)param_3[3])" (( "(") (binary_expression "uVar8 < (uint)param_3[3]" (identifier "uVar8") (< "<") (cast_expression "(uint)param_3[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_3[3]" (identifier "param_3") ([ "[") (number_literal "3") (] "]")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_003cc5c8:\n        (**(code **)(*param_3 + 0x28))(param_3);" (statement_identifier "LAB_003cc5c8") (: ":") (expression_statement "(**(code **)(*param_3 + 0x28))(param_3);" (call_expression "(**(code **)(*param_3 + 0x28))(param_3)" (parenthesized_expression "(**(code **)(*param_3 + 0x28))" (( "(") (pointer_expression "**(code **)(*param_3 + 0x28)" (* "*") (pointer_expression "*(code **)(*param_3 + 0x28)" (* "*") (cast_expression "(code **)(*param_3 + 0x28)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_3 + 0x28)" (( "(") (binary_expression "*param_3 + 0x28" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")"))) (; ";"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (labeled_statement "LAB_003cc300:\n  cVar5 = '\0';" (statement_identifier "LAB_003cc300") (: ":") (expression_statement "cVar5 = '\0';" (assignment_expression "cVar5 = '\0'" (identifier "cVar5") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";"))) (expression_statement "cVar4 = '\0';" (assignment_expression "cVar4 = '\0'" (identifier "cVar4") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;" (if "if") (parenthesized_expression "(*(int *)(local_20[0] + -0xc) != 0)" (( "(") (binary_expression "*(int *)(local_20[0] + -0xc) != 0" (pointer_expression "*(int *)(local_20[0] + -0xc)" (* "*") (cast_expression "(int *)(local_20[0] + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20[0] + -0xc)" (( "(") (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0xc")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_003cc310;" (goto "goto") (statement_identifier "LAB_003cc310") (; ";"))) (labeled_statement "LAB_003cc1c2:\n  if (bVar2) goto LAB_003cc361;" (statement_identifier "LAB_003cc1c2") (: ":") (if_statement "if (bVar2) goto LAB_003cc361;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (goto_statement "goto LAB_003cc361;" (goto "goto") (statement_identifier "LAB_003cc361") (; ";")))) (labeled_statement "joined_r0x003cc35b:\n  if (local_38 != 0) goto LAB_003cc361;" (statement_identifier "joined_r0x003cc35b") (: ":") (if_statement "if (local_38 != 0) goto LAB_003cc361;" (if "if") (parenthesized_expression "(local_38 != 0)" (( "(") (binary_expression "local_38 != 0" (identifier "local_38") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_003cc361;" (goto "goto") (statement_identifier "LAB_003cc361") (; ";")))) (goto_statement "goto LAB_003cc1d7;" (goto "goto") (statement_identifier "LAB_003cc1d7") (; ";")) (labeled_statement "code_r0x003cc1af:\n  cVar5 = '\x01';" (statement_identifier "code_r0x003cc1af") (: ":") (expression_statement "cVar5 = '\x01';" (assignment_expression "cVar5 = '\x01'" (identifier "cVar5") (= "=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) (; ";"))) (labeled_statement "LAB_003cc1b4:\n  cVar4 = cVar5;" (statement_identifier "LAB_003cc1b4") (: ":") (expression_statement "cVar4 = cVar5;" (assignment_expression "cVar4 = cVar5" (identifier "cVar4") (= "=") (identifier "cVar5")) (; ";"))) (if_statement "if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;" (if "if") (parenthesized_expression "(*(int *)(local_20[0] + -0xc) == 0)" (( "(") (binary_expression "*(int *)(local_20[0] + -0xc) == 0" (pointer_expression "*(int *)(local_20[0] + -0xc)" (* "*") (cast_expression "(int *)(local_20[0] + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20[0] + -0xc)" (( "(") (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_003cc1c2;" (goto "goto") (statement_identifier "LAB_003cc1c2") (; ";"))) (labeled_statement "LAB_003cc310:\n  cVar5 = cVar4;" (statement_identifier "LAB_003cc310") (: ":") (expression_statement "cVar5 = cVar4;" (assignment_expression "cVar5 = cVar4" (identifier "cVar5") (= "=") (identifier "cVar4")) (; ";"))) (expression_statement "FUN_003e7350(local_20,(int)(char)local_38);" (call_expression "FUN_003e7350(local_20,(int)(char)local_38)" (identifier "FUN_003e7350") (argument_list "(local_20,(int)(char)local_38)" (( "(") (identifier "local_20") (, ",") (cast_expression "(int)(char)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)local_38" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "local_38"))) () ")"))) (; ";")) (expression_statement "cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);" (assignment_expression "cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" (identifier "cVar4") (= "=") (call_expression "FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" (identifier "FUN_003fe250") (argument_list "(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20)" (( "(") (pointer_expression "*(undefined4 *)(iVar6 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (identifier "local_20") () ")")))) (; ";")) (if_statement "if (cVar4 == '\0') {\n    *param_8 = 4;\n  }" (if "if") (parenthesized_expression "(cVar4 == '\0')" (( "(") (binary_expression "cVar4 == '\0'" (identifier "cVar4") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *param_8 = 4;\n  }" ({ "{") (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "4")) (; ";")) (} "}"))) (if_statement "if ((local_38 == 0) && (!bVar2)) {\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }" (if "if") (parenthesized_expression "((local_38 == 0) && (!bVar2))" (( "(") (binary_expression "(local_38 == 0) && (!bVar2)" (parenthesized_expression "(local_38 == 0)" (( "(") (binary_expression "local_38 == 0" (identifier "local_38") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")"))) () ")")) (compound_statement "{\n    local_38 = *(int *)(local_20[0] + -0xc);\n    goto joined_r0x003cc35b;\n  }" ({ "{") (expression_statement "local_38 = *(int *)(local_20[0] + -0xc);" (assignment_expression "local_38 = *(int *)(local_20[0] + -0xc)" (identifier "local_38") (= "=") (pointer_expression "*(int *)(local_20[0] + -0xc)" (* "*") (cast_expression "(int *)(local_20[0] + -0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_20[0] + -0xc)" (( "(") (binary_expression "local_20[0] + -0xc" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "-0xc")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x003cc35b;" (goto "goto") (statement_identifier "joined_r0x003cc35b") (; ";")) (} "}"))) (labeled_statement "LAB_003cc361:\n  if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" (statement_identifier "LAB_003cc361") (: ":") (if_statement "if (local_32 == '\0') {\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" (if "if") (parenthesized_expression "(local_32 == '\0')" (( "(") (binary_expression "local_32 == '\0'" (identifier "local_32") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }\n    goto LAB_003cc1e9;\n  }" ({ "{") (if_statement "if (local_33 == 0) {\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }\n    else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" (if "if") (parenthesized_expression "(local_33 == 0)" (( "(") (binary_expression "local_33 == 0" (identifier "local_33") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = -local_3c;\n      if (!bVar15) {\n        uVar7 = local_3c;\n      }\n      *param_9 = uVar7;\n    }" ({ "{") (expression_statement "uVar7 = -local_3c;" (assignment_expression "uVar7 = -local_3c" (identifier "uVar7") (= "=") (unary_expression "-local_3c" (- "-") (identifier "local_3c"))) (; ";")) (if_statement "if (!bVar15) {\n        uVar7 = local_3c;\n      }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n        uVar7 = local_3c;\n      }" ({ "{") (expression_statement "uVar7 = local_3c;" (assignment_expression "uVar7 = local_3c" (identifier "uVar7") (= "=") (identifier "local_3c")) (; ";")) (} "}"))) (expression_statement "*param_9 = uVar7;" (assignment_expression "*param_9 = uVar7" (pointer_expression "*param_9" (* "*") (identifier "param_9")) (= "=") (identifier "uVar7")) (; ";")) (} "}")) (else_clause "else {\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" (else "else") (compound_statement "{\n      *param_9 = 0xffffffff;\n      *param_8 = 4;\n    }" ({ "{") (expression_statement "*param_9 = 0xffffffff;" (assignment_expression "*param_9 = 0xffffffff" (pointer_expression "*param_9" (* "*") (identifier "param_9")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "4")) (; ";")) (} "}")))) (goto_statement "goto LAB_003cc1e9;" (goto "goto") (statement_identifier "LAB_003cc1e9") (; ";")) (} "}")))) (labeled_statement "LAB_003cc1d7:\n  *param_9 = 0;" (statement_identifier "LAB_003cc1d7") (: ":") (expression_statement "*param_9 = 0;" (assignment_expression "*param_9 = 0" (pointer_expression "*param_9" (* "*") (identifier "param_9")) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*param_8 = 4;" (assignment_expression "*param_8 = 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (number_literal "4")) (; ";")) (labeled_statement "LAB_003cc1e9:\n  if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" (statement_identifier "LAB_003cc1e9") (: ":") (if_statement "if (cVar5 != '\0') {\n    *param_8 = *param_8 | 2;\n  }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    *param_8 = *param_8 | 2;\n  }" ({ "{") (expression_statement "*param_8 = *param_8 | 2;" (assignment_expression "*param_8 = *param_8 | 2" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (= "=") (binary_expression "*param_8 | 2" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (| "|") (number_literal "2"))) (; ";")) (} "}")))) (expression_statement "*param_1 = param_3;" (assignment_expression "*param_1 = param_3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_1[1] = param_4;" (assignment_expression "param_1[1] = param_4" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_4")) (; ";")) (if_statement "if (local_20[0] == &DAT_005f308c) {\n    return param_1;\n  }" (if "if") (parenthesized_expression "(local_20[0] == &DAT_005f308c)" (( "(") (binary_expression "local_20[0] == &DAT_005f308c" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (== "==") (pointer_expression "&DAT_005f308c" (& "&") (identifier "DAT_005f308c"))) () ")")) (compound_statement "{\n    return param_1;\n  }" ({ "{") (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "FUN_003c0300();" (call_expression "FUN_003c0300()" (identifier "FUN_003c0300") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::istreambuf_iterator<char, std::char_traits<char> > std::num_get<char,
   std::istreambuf_iterator<char, std::char_traits<char> > >::_M_extract_int<unsigned
   int>(std::istreambuf_iterator<char, std::char_traits<char> >, std::istreambuf_iterator<char,
   std::char_traits<char> >, std::ios_base&, std::_Ios_Iostate&, unsigned int&) const */

void std::num_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::
     _M_extract_int<unsigned_int>(void)

{
}


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier)))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (char_literal (escape_sequence))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (true)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (false)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (false)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) 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: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (character))))) right: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (true)))))) alternative: (else_clause (compound_statement (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (unary_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: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (true)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (binary_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 (identifier)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (false)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) 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: (char_literal (escape_sequence)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (identifier)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (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)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier)))))))) condition: (parenthesized_expression (true)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence))))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (unary_expression argument: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) 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: (unary_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (goto_statement label: (statement_identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (return_statement (identifier)))))

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

undefined4 *
MASKED(undefined4 *param_1,undefined4 param_2,int *param_3,uint param_4,int *param_5,
            int param_6,int param_7,uint *param_8,uint *param_9)

{
  byte bVar1;
  bool bVar2;
  byte bVar3;
  char cVar4;
  char cVar5;
  int iVar6;
  uint uVar7;
  uint uVar8;
  int iVar9;
  void *pvVar10;
  bool bVar11;
  bool bVar12;
  bool bVar13;
  uint uVar14;
  bool bVar15;
  undefined4 *local_50;
  undefined4 *local_4c;
  uint local_40;
  uint local_3c;
  int local_38;
  byte local_33;
  char local_32;
  uint local_30;
  undefined1 local_22 [2];
  undefined *local_20 [3];
  undefined4 uStack_14;
  
  iVar9 = param_7;
  uStack_14 = 0x3cbe8b;
  iVar6 = FUN_003c6ba0(local_22,param_7 + 0x6c);
  uVar7 = *(uint *)(iVar9 + 0xc) & 0x4a;
  if (uVar7 == 0x40) {
    local_30 = 8;
LAB_003cbece:
    local_32 = FUN_003c8240(&param_3,&param_5);
    if (local_32 == '\0') {
LAB_003cbef5:
      local_4c = &param_3;
      local_50 = &param_5;
      uVar8 = FUN_003c04a0();
      cVar4 = *(char *)(iVar6 + 0x10);
      cVar5 = (char)uVar8;
      bVar15 = *(char *)(iVar6 + 0x4a) == cVar5;
      if ((((bVar15) || (*(char *)(iVar6 + 0x4b) == cVar5)) &&
          ((cVar4 == '\0' || (*(char *)(iVar6 + 0x25) != cVar5)))) &&
         (*(char *)(iVar6 + 0x24) != cVar5)) {
        FUN_003b97a0(param_3);
        param_4 = 0xffffffff;
        local_32 = FUN_003c8240(local_4c,local_50);
        if (local_32 == '\0') {
          uVar8 = FUN_003c04a0();
          cVar4 = *(char *)(iVar6 + 0x10);
          goto LAB_003cbfd8;
        }
        cVar4 = *(char *)(iVar6 + 0x10);
        local_38 = 0;
        bVar2 = false;
      }
      else {
LAB_003cbfd8:
        local_38 = 0;
        bVar2 = false;
        do {
          cVar5 = (char)uVar8;
          if (((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == cVar5)) ||
             (*(char *)(iVar6 + 0x24) == cVar5)) break;
          if (*(char *)(iVar6 + 0x4e) == cVar5) {
            bVar13 = (bool)(local_30 == 10 | bVar2 ^ 1U);
            if (!bVar13) goto LAB_003cc011;
            bVar2 = uVar7 == 0 || local_30 == 8;
            if (uVar7 != 0 && local_30 != 8) {
              local_38 = local_38 + 1;
              goto LAB_003cc048;
            }
            local_38 = 0;
            local_30 = 8;
            uVar14 = param_3[2];
            if ((uint)param_3[3] <= uVar14) goto LAB_003cc270;
LAB_003cc057:
            param_3[2] = uVar14 + 1;
LAB_003cc064:
            param_4 = 0xffffffff;
            bVar13 = false;
            if (((uint)param_3[3] <= (uint)param_3[2]) &&
               (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {
              param_3 = (int *)0x0;
              bVar13 = true;
            }
          }
          else {
            if (!bVar2) break;
LAB_003cc011:
            if ((*(char *)(iVar6 + 0x4c) != cVar5) && (*(char *)(iVar6 + 0x4d) != cVar5)) {
              local_32 = '\0';
              bVar2 = true;
              goto LAB_003cc0a0;
            }
            local_32 = local_30 == 0x10 || uVar7 == 0;
            if (local_30 != 0x10 && uVar7 != 0) {
              bVar2 = true;
              goto LAB_003cc0ad;
            }
            local_38 = 0;
            bVar13 = false;
            local_30 = 0x10;
LAB_003cc048:
            uVar14 = param_3[2];
            bVar2 = bVar13;
            if (uVar14 < (uint)param_3[3]) goto LAB_003cc057;
LAB_003cc270:
            (**(code **)(*param_3 + 0x28))(param_3);
            param_4 = 0xffffffff;
            if (param_3 != (int *)0x0) goto LAB_003cc064;
            bVar13 = true;
          }
          bVar11 = param_5 != (int *)0x0 && param_6 == -1;
          local_40._0_1_ = param_6 == -1;
          if ((bVar11) && (local_40._0_1_ = false, (uint)param_5[3] <= (uint)param_5[2])) {
            iVar9 = (**(code **)(*param_5 + 0x24))(param_5);
            local_40._0_1_ = false;
            if (iVar9 == -1) {
              param_5 = (int *)0x0;
              local_40._0_1_ = bVar11;
            }
          }
          if ((bool)(char)local_40 == bVar13) {
            local_32 = '\x01';
            cVar4 = *(char *)(iVar6 + 0x10);
            goto LAB_003cc0a0;
          }
          uVar8 = param_4;
          if ((param_3 != (int *)0x0) && (param_4 == 0xffffffff)) {
            if ((byte *)param_3[2] < (byte *)param_3[3]) {
              uVar8 = (uint)*(byte *)param_3[2];
            }
            else {
              uVar8 = (**(code **)(*param_3 + 0x24))(param_3);
              if (uVar8 == 0xffffffff) {
                param_3 = (int *)0x0;
                uVar8 = 0xffffffff;
              }
            }
          }
          cVar4 = *(char *)(iVar6 + 0x10);
        } while (bVar2);
        local_32 = '\0';
      }
LAB_003cc0a0:
      local_40 = 0x16;
      if (local_30 == 0x10) goto LAB_003cc0b3;
    }
    else {
      cVar4 = *(char *)(iVar6 + 0x10);
      uVar8 = 0;
      local_38 = 0;
      bVar2 = false;
      bVar15 = false;
    }
LAB_003cc0ad:
    local_40 = local_30;
  }
  else {
    if (uVar7 != 8) {
      local_30 = 10;
      goto LAB_003cbece;
    }
    local_32 = FUN_003c8240(&param_3,&param_5);
    local_30 = 0x10;
    if (local_32 == '\0') goto LAB_003cbef5;
    cVar4 = *(char *)(iVar6 + 0x10);
    uVar8 = 0;
    local_38 = 0;
    bVar2 = false;
    bVar15 = false;
    local_40 = 0x16;
  }
LAB_003cc0b3:
  cVar5 = local_32;
  local_4c = &param_3;
  local_50 = &param_5;
  local_20[0] = &DAT_005f308c;
  if (cVar4 != '\0') {
    FUN_003e6d30(local_20,0x20);
  }
  uVar7 = (uint)(0xffffffff / (ulonglong)local_30);
  bVar1 = *(byte *)(iVar6 + 100);
  if (bVar1 == 0) {
    local_33 = 0;
    if (local_32 == '\0') {
      local_3c = 0;
      do {
        cVar4 = (char)uVar8;
        iVar9 = (int)cVar4;
        if (local_40 < 0xb) {
          if ((cVar4 < '0') || ((char)((char)local_40 + '0') <= cVar4)) goto LAB_003cc300;
LAB_003cc133:
          uVar8 = iVar9 - 0x30;
        }
        else {
          if ((byte)(cVar4 - 0x30U) < 10) goto LAB_003cc133;
          if ((byte)(cVar4 + 0x9fU) < 6) {
            uVar8 = iVar9 - 0x57;
          }
          else {
            if (5 < (byte)(cVar4 + 0xbfU)) goto LAB_003cc300;
            uVar8 = iVar9 - 0x37;
          }
        }
        if (uVar8 == 0xffffffff) goto LAB_003cc300;
        if (uVar7 < local_3c) {
          local_33 = 1;
          uVar8 = param_3[2];
          if ((uint)param_3[3] <= uVar8) goto LAB_003cc3a3;
LAB_003cc173:
          param_3[2] = uVar8 + 1;
LAB_003cc180:
          param_4 = 0xffffffff;
          bVar13 = false;
                    /* try { // try from 003cc6a6 to 003cc6a8 has its CatchHandler @ 003cc761 */
          if (((uint)param_3[3] <= (uint)param_3[2]) &&
             (iVar9 = (**(code **)(*param_3 + 0x24))(param_3), iVar9 == -1)) {
            param_3 = (int *)0x0;
            bVar13 = true;
          }
        }
        else {
          uVar14 = local_3c * local_30;
          local_3c = uVar8 + uVar14;
          local_33 = local_33 | ~uVar8 < uVar14;
          local_38 = local_38 + 1;
          uVar8 = param_3[2];
          if (uVar8 < (uint)param_3[3]) goto LAB_003cc173;
LAB_003cc3a3:
          (**(code **)(*param_3 + 0x28))(param_3);
          param_4 = 0xffffffff;
          if (param_3 != (int *)0x0) goto LAB_003cc180;
          bVar13 = true;
        }
        bVar12 = param_5 != (int *)0x0 && param_6 == -1;
        bVar11 = param_6 == -1;
        if ((bVar12) && (bVar11 = false, (uint)param_5[3] <= (uint)param_5[2])) {
          iVar9 = (**(code **)(*param_5 + 0x24))(param_5);
          bVar11 = false;
          if (iVar9 == -1) {
            param_5 = (int *)0x0;
            bVar11 = bVar12;
          }
        }
        if (bVar11 == bVar13) goto code_r0x003cc1af;
                    /* try { // try from 003cc416 to 003cc610 has its CatchHandler @ 003cc761 */
        uVar8 = FUN_003c04a0();
      } while( true );
    }
    local_3c = 0;
    local_32 = '\0';
    goto LAB_003cc1b4;
  }
  if (local_32 != '\0') {
    local_3c = 0;
    local_33 = 0;
    local_32 = '\0';
    goto LAB_003cc1b4;
  }
  local_33 = 0;
  cVar4 = *(char *)(iVar6 + 0x10);
  local_3c = 0;
  if ((cVar4 != '\0') && (*(char *)(iVar6 + 0x25) == (char)uVar8)) goto LAB_003cc592;
LAB_003cc4d4:
  if (((char)uVar8 != *(char *)(iVar6 + 0x24)) &&
     (pvVar10 = memchr((void *)(iVar6 + 0x4e),(int)(char)uVar8,local_40), pvVar10 != (void *)0x0)) {
    uVar8 = (int)pvVar10 - (iVar6 + 0x4e);
    if (0xf < (int)uVar8) {
      uVar8 = uVar8 - 6;
    }
    bVar3 = bVar1;
    if (local_3c <= uVar7) {
      uVar14 = local_3c * local_30;
      local_3c = uVar8 + uVar14;
      local_38 = local_38 + 1;
      bVar3 = local_33 | ~uVar8 < uVar14;
    }
    local_33 = bVar3;
    uVar8 = param_3[2];
    if ((uint)param_3[3] <= uVar8) goto LAB_003cc5c8;
    do {
      param_3[2] = uVar8 + 1;
      while( true ) {
        param_4 = 0xffffffff;
        cVar5 = FUN_003c8240(local_4c,local_50);
        if (cVar5 != '\0') goto LAB_003cc1b4;
        uVar8 = FUN_003c04a0();
        cVar4 = *(char *)(iVar6 + 0x10);
        if ((cVar4 == '\0') || (*(char *)(iVar6 + 0x25) != (char)uVar8)) goto LAB_003cc4d4;
LAB_003cc592:
        if (local_38 == 0) {
          cVar5 = '\0';
          local_32 = cVar4;
          goto LAB_003cc1b4;
        }
        FUN_003e7350(local_20,(int)(char)local_38);
        local_38 = 0;
        uVar8 = param_3[2];
        if (uVar8 < (uint)param_3[3]) break;
LAB_003cc5c8:
        (**(code **)(*param_3 + 0x28))(param_3);
      }
    } while( true );
  }
LAB_003cc300:
  cVar5 = '\0';
  cVar4 = '\0';
  if (*(int *)(local_20[0] + -0xc) != 0) goto LAB_003cc310;
LAB_003cc1c2:
  if (bVar2) goto LAB_003cc361;
joined_r0x003cc35b:
  if (local_38 != 0) goto LAB_003cc361;
  goto LAB_003cc1d7;
code_r0x003cc1af:
  cVar5 = '\x01';
LAB_003cc1b4:
  cVar4 = cVar5;
  if (*(int *)(local_20[0] + -0xc) == 0) goto LAB_003cc1c2;
LAB_003cc310:
  cVar5 = cVar4;
                    /* try { // try from 003cc322 to 003cc3ab has its CatchHandler @ 003cc761 */
  FUN_003e7350(local_20,(int)(char)local_38);
  cVar4 = FUN_003fe250(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc),local_20);
  if (cVar4 == '\0') {
    *param_8 = 4;
  }
  if ((local_38 == 0) && (!bVar2)) {
    local_38 = *(int *)(local_20[0] + -0xc);
    goto joined_r0x003cc35b;
  }
LAB_003cc361:
  if (local_32 == '\0') {
    if (local_33 == 0) {
      uVar7 = -local_3c;
      if (!bVar15) {
        uVar7 = local_3c;
      }
      *param_9 = uVar7;
    }
    else {
      *param_9 = 0xffffffff;
      *param_8 = 4;
    }
    goto LAB_003cc1e9;
  }
LAB_003cc1d7:
  *param_9 = 0;
  *param_8 = 4;
LAB_003cc1e9:
  if (cVar5 != '\0') {
    *param_8 = *param_8 | 2;
  }
  *param_1 = param_3;
  param_1[1] = param_4;
  if (local_20[0] == &DAT_005f308c) {
    return param_1;
  }
  FUN_003c0300();
  return param_1;
}

