
uint * d_unqualified_name(void)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  undefined4 uVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  byte *pbVar10;
  int unaff_EDI;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  
  bVar14 = 0;
  iVar3 = __x86_get_pc_thunk_di();
  pcVar2 = *(char **)(iVar3 + 0xc);
  cVar1 = *pcVar2;
  if ((byte)(cVar1 - 0x30U) < 10) {
    puVar4 = (uint *)d_source_name();
    cVar1 = **(char **)(iVar3 + 0xc);
    goto joined_r0x00237c91;
  }
  if ((byte)(cVar1 + 0x9fU) < 0x1a) {
    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {
      *(char **)(iVar3 + 0xc) = pcVar2 + 2;
    }
    puVar4 = (uint *)d_operator_name();
    if (puVar4 != (uint *)0x0) {
      bVar12 = *puVar4 < 0x31;
      bVar13 = *puVar4 == 0x31;
      if (bVar13) {
        pbVar10 = *(byte **)puVar4[2];
        iVar8 = 3;
        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];
        pbVar11 = (byte *)(unaff_EDI + 0x32f73);
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar12 = *pbVar10 < *pbVar11;
          bVar13 = *pbVar10 == *pbVar11;
          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;
          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;
        } while (bVar13);
        if ((!bVar12 && !bVar13) == bVar12) {
          uVar6 = d_source_name();
          puVar4 = (uint *)d_make_comp(uVar6);
          cVar1 = **(char **)(iVar3 + 0xc);
          goto joined_r0x00237c91;
        }
      }
    }
  }
  else {
    if ((byte)(cVar1 + 0xbdU) < 2) {
      piVar9 = *(int **)(iVar3 + 0x28);
      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {
        if (cVar1 == 'D') goto LAB_00237e09;
      }
      else {
        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];
        cVar1 = *pcVar2;
        if (cVar1 != 'C') {
          if (cVar1 != 'D') {
            puVar4 = (uint *)0x0;
            goto joined_r0x00237c91;
          }
LAB_00237e09:
          if (5 < (byte)(pcVar2[1] - 0x30U)) {
            return (uint *)0x0;
          }
                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +
                                     *(int *)(unaff_EDI + 0x38b71 +
                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();
          return puVar4;
        }
      }
      if (pcVar2[1] == 'I') {
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[2];
        if (4 < (byte)(cVar1 - 0x31U)) {
          cVar1 = pcVar2[1];
          puVar4 = (uint *)0x0;
          goto joined_r0x00237c91;
        }
        *(char **)(iVar3 + 0xc) = pcVar2 + 3;
        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);
        d_type();
        piVar9 = *(int **)(iVar3 + 0x28);
      }
      else {
        bVar14 = pcVar2[1] - 0x31;
        if (4 < bVar14) {
          return (uint *)0x0;
        }
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);
      }
      iVar8 = *(int *)(iVar3 + 0x14);
      if (iVar8 < *(int *)(iVar3 + 0x18)) {
        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
        puVar4[1] = 0;
        *(int *)(iVar3 + 0x14) = iVar8 + 1;
        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {
          puVar4[1] = 0;
          *puVar4 = 7;
          puVar4[2] = uVar5;
          puVar4[3] = (uint)piVar9;
          goto LAB_00237bbc;
        }
      }
LAB_00237f40:
      puVar4 = (uint *)0x0;
      cVar1 = **(char **)(iVar3 + 0xc);
      goto joined_r0x00237c91;
    }
    if (cVar1 == 'L') {
      *(char **)(iVar3 + 0xc) = pcVar2 + 1;
      puVar4 = (uint *)d_source_name();
      if (puVar4 == (uint *)0x0) {
        return (uint *)0x0;
      }
      iVar8 = d_discriminator();
      if (iVar8 == 0) {
        return (uint *)0x0;
      }
    }
    else {
      if (cVar1 != 'U') {
        return (uint *)0x0;
      }
      if (pcVar2[1] == 'l') {
        puVar4 = (uint *)0x0;
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[1];
        if (cVar1 != 'l') goto joined_r0x00237c91;
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = d_parmlist();
        if (uVar5 != 0) {
          cVar1 = **(char **)(iVar3 + 0xc);
          if (cVar1 != 'E') goto joined_r0x00237c91;
          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;
          uVar7 = d_compact_number();
          if (-1 < (int)uVar7) {
            iVar8 = *(int *)(iVar3 + 0x14);
            pcVar2 = *(char **)(iVar3 + 0xc);
            if (iVar8 < *(int *)(iVar3 + 0x18)) {
              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
              puVar4[1] = 0;
              *(int *)(iVar3 + 0x14) = iVar8 + 1;
              puVar4[3] = uVar7;
              iVar8 = *(int *)(iVar3 + 0x20);
              *puVar4 = 0x45;
              puVar4[2] = uVar5;
              if (iVar8 < *(int *)(iVar3 + 0x24)) {
                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;
                *(int *)(iVar3 + 0x20) = iVar8 + 1;
                cVar1 = *pcVar2;
                goto joined_r0x00237c91;
              }
            }
            cVar1 = *pcVar2;
            puVar4 = (uint *)0x0;
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
      else {
        if (pcVar2[1] != 't') {
          return (uint *)0x0;
        }
        puVar4 = (uint *)0x0;
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[1];
        if (cVar1 != 't') goto joined_r0x00237c91;
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = d_compact_number();
        if (-1 < (int)uVar5) {
          iVar8 = *(int *)(iVar3 + 0x14);
          if (iVar8 < *(int *)(iVar3 + 0x18)) {
            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
            puVar4[1] = 0;
            *(int *)(iVar3 + 0x14) = iVar8 + 1;
            pcVar2 = *(char **)(iVar3 + 0xc);
            puVar4[2] = uVar5;
            iVar8 = *(int *)(iVar3 + 0x20);
            *puVar4 = 0x47;
            if (iVar8 < *(int *)(iVar3 + 0x24)) {
              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;
              *(int *)(iVar3 + 0x20) = iVar8 + 1;
              cVar1 = *pcVar2;
            }
            else {
              cVar1 = *pcVar2;
              puVar4 = (uint *)0x0;
            }
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
    }
  }
LAB_00237bbc:
  cVar1 = **(char **)(iVar3 + 0xc);
joined_r0x00237c91:
  if (cVar1 != 'B') {
    return puVar4;
  }
  puVar4 = (uint *)d_abi_tags();
  return puVar4;
}



uint * FUN_00237b70(void)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  undefined4 uVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  byte *pbVar10;
  int unaff_EDI;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  
  bVar14 = 0;
  iVar3 = FUN_00058c4a();
  pcVar2 = *(char **)(iVar3 + 0xc);
  cVar1 = *pcVar2;
  if ((byte)(cVar1 - 0x30U) < 10) {
    puVar4 = (uint *)FUN_00235660();
    cVar1 = **(char **)(iVar3 + 0xc);
    goto joined_r0x00237c91;
  }
  if ((byte)(cVar1 + 0x9fU) < 0x1a) {
    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {
      *(char **)(iVar3 + 0xc) = pcVar2 + 2;
    }
    puVar4 = (uint *)FUN_002375d0();
    if (puVar4 != (uint *)0x0) {
      bVar12 = *puVar4 < 0x31;
      bVar13 = *puVar4 == 0x31;
      if (bVar13) {
        pbVar10 = *(byte **)puVar4[2];
        iVar8 = 3;
        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];
        pbVar11 = (byte *)(unaff_EDI + 0x32f73);
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar12 = *pbVar10 < *pbVar11;
          bVar13 = *pbVar10 == *pbVar11;
          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;
          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;
        } while (bVar13);
        if ((!bVar12 && !bVar13) == bVar12) {
          uVar6 = FUN_00235660();
          puVar4 = (uint *)FUN_002352d0(uVar6);
          cVar1 = **(char **)(iVar3 + 0xc);
          goto joined_r0x00237c91;
        }
      }
    }
  }
  else {
    if ((byte)(cVar1 + 0xbdU) < 2) {
      piVar9 = *(int **)(iVar3 + 0x28);
      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {
        if (cVar1 == 'D') goto LAB_00237e09;
      }
      else {
        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];
        cVar1 = *pcVar2;
        if (cVar1 != 'C') {
          if (cVar1 != 'D') {
            puVar4 = (uint *)0x0;
            goto joined_r0x00237c91;
          }
LAB_00237e09:
          if (5 < (byte)(pcVar2[1] - 0x30U)) {
            return (uint *)0x0;
          }
                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +
                                     *(int *)(unaff_EDI + 0x38b71 +
                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();
          return puVar4;
        }
      }
      if (pcVar2[1] == 'I') {
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[2];
        if (4 < (byte)(cVar1 - 0x31U)) {
          cVar1 = pcVar2[1];
          puVar4 = (uint *)0x0;
          goto joined_r0x00237c91;
        }
        *(char **)(iVar3 + 0xc) = pcVar2 + 3;
        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);
        FUN_00236c80();
        piVar9 = *(int **)(iVar3 + 0x28);
      }
      else {
        bVar14 = pcVar2[1] - 0x31;
        if (4 < bVar14) {
          return (uint *)0x0;
        }
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);
      }
      iVar8 = *(int *)(iVar3 + 0x14);
      if (iVar8 < *(int *)(iVar3 + 0x18)) {
        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
        puVar4[1] = 0;
        *(int *)(iVar3 + 0x14) = iVar8 + 1;
        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {
          puVar4[1] = 0;
          *puVar4 = 7;
          puVar4[2] = uVar5;
          puVar4[3] = (uint)piVar9;
          goto LAB_00237bbc;
        }
      }
LAB_00237f40:
      puVar4 = (uint *)0x0;
      cVar1 = **(char **)(iVar3 + 0xc);
      goto joined_r0x00237c91;
    }
    if (cVar1 == 'L') {
      *(char **)(iVar3 + 0xc) = pcVar2 + 1;
      puVar4 = (uint *)FUN_00235660();
      if (puVar4 == (uint *)0x0) {
        return (uint *)0x0;
      }
      iVar8 = FUN_00235b00();
      if (iVar8 == 0) {
        return (uint *)0x0;
      }
    }
    else {
      if (cVar1 != 'U') {
        return (uint *)0x0;
      }
      if (pcVar2[1] == 'l') {
        puVar4 = (uint *)0x0;
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[1];
        if (cVar1 != 'l') goto joined_r0x00237c91;
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = FUN_00237790();
        if (uVar5 != 0) {
          cVar1 = **(char **)(iVar3 + 0xc);
          if (cVar1 != 'E') goto joined_r0x00237c91;
          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;
          uVar7 = FUN_002355c0();
          if (-1 < (int)uVar7) {
            iVar8 = *(int *)(iVar3 + 0x14);
            pcVar2 = *(char **)(iVar3 + 0xc);
            if (iVar8 < *(int *)(iVar3 + 0x18)) {
              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
              puVar4[1] = 0;
              *(int *)(iVar3 + 0x14) = iVar8 + 1;
              puVar4[3] = uVar7;
              iVar8 = *(int *)(iVar3 + 0x20);
              *puVar4 = 0x45;
              puVar4[2] = uVar5;
              if (iVar8 < *(int *)(iVar3 + 0x24)) {
                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;
                *(int *)(iVar3 + 0x20) = iVar8 + 1;
                cVar1 = *pcVar2;
                goto joined_r0x00237c91;
              }
            }
            cVar1 = *pcVar2;
            puVar4 = (uint *)0x0;
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
      else {
        if (pcVar2[1] != 't') {
          return (uint *)0x0;
        }
        puVar4 = (uint *)0x0;
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[1];
        if (cVar1 != 't') goto joined_r0x00237c91;
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = FUN_002355c0();
        if (-1 < (int)uVar5) {
          iVar8 = *(int *)(iVar3 + 0x14);
          if (iVar8 < *(int *)(iVar3 + 0x18)) {
            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
            puVar4[1] = 0;
            *(int *)(iVar3 + 0x14) = iVar8 + 1;
            pcVar2 = *(char **)(iVar3 + 0xc);
            puVar4[2] = uVar5;
            iVar8 = *(int *)(iVar3 + 0x20);
            *puVar4 = 0x47;
            if (iVar8 < *(int *)(iVar3 + 0x24)) {
              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;
              *(int *)(iVar3 + 0x20) = iVar8 + 1;
              cVar1 = *pcVar2;
            }
            else {
              cVar1 = *pcVar2;
              puVar4 = (uint *)0x0;
            }
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
    }
  }
LAB_00237bbc:
  cVar1 = **(char **)(iVar3 + 0xc);
joined_r0x00237c91:
  if (cVar1 != 'B') {
    return puVar4;
  }
  puVar4 = (uint *)FUN_002357e0();
  return puVar4;
}


PUSH EBP
PUSH EDI
CALL 0x00058c4a
ADD EDI,0x107489
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0xc
MOV EDX,dword ptr [EAX + 0xc]
MOVZX EAX,byte ptr [EDX]
LEA ECX,[EAX + -0x30]
CMP CL,0x9
JBE 0x00237c80
LEA ECX,[EAX + -0x61]
CMP CL,0x19
JA 0x00237bd8
CMP AL,0x6f
JZ 0x00237d40
MOV EAX,EBX
CALL 0x002375d0
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00237bbc
CMP dword ptr [EAX],0x31
JZ 0x00237cb0
MOV EAX,dword ptr [EBX + 0xc]
MOVZX EAX,byte ptr [EAX]
CMP AL,0x42
JZ 0x00237c97
ADD ESP,0xc
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA ECX,[EAX + -0x43]
CMP CL,0x1
JBE 0x00237d58
CMP AL,0x4c
JZ 0x00237d08
CMP AL,0x55
JNZ 0x00237d2a
MOVZX EAX,byte ptr [EDX + 0x1]
CMP AL,0x6c
JZ 0x00237ea0
CMP AL,0x74
JNZ 0x00237d2a
LEA EAX,[EDX + 0x1]
XOR EBP,EBP
MOV dword ptr [EBX + 0xc],EAX
MOVZX EAX,byte ptr [EDX + 0x1]
CMP AL,0x74
JNZ 0x00237bc2
ADD EDX,0x2
MOV EAX,EBX
MOV dword ptr [EBX + 0xc],EDX
CALL 0x002355c0
TEST EAX,EAX
JS 0x00237bbc
MOV EDX,dword ptr [EBX + 0x14]
CMP EDX,dword ptr [EBX + 0x18]
JGE 0x00237f40
MOV EBP,EDX
ADD EDX,0x1
SHL EBP,0x4
ADD EBP,dword ptr [EBX + 0x10]
MOV dword ptr [EBP + 0x4],0x0
MOV dword ptr [EBX + 0x14],EDX
MOV EDX,dword ptr [EBX + 0xc]
MOV dword ptr [EBP + 0x8],EAX
MOV EAX,dword ptr [EBX + 0x20]
MOV dword ptr [EBP],0x47
CMP EAX,dword ptr [EBX + 0x24]
JGE 0x00237f7d
MOV ECX,dword ptr [EBX + 0x1c]
MOV dword ptr [ECX + EAX*0x4],EBP
ADD EAX,0x1
MOV dword ptr [EBX + 0x20],EAX
MOVZX EAX,byte ptr [EDX]
JMP 0x00237bc2
MOV EAX,EBX
CALL 0x00235660
MOV EBP,EAX
MOV EAX,dword ptr [EBX + 0xc]
MOVZX EAX,byte ptr [EAX]
CMP AL,0x42
JNZ 0x00237bca
ADD ESP,0xc
MOV EDX,EBP
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
POP EBP
JMP 0x002357e0
MOV EAX,dword ptr [EAX + 0x8]
MOV ECX,dword ptr [EBX + 0x2c]
LEA EDI,[EDI + 0xfff2baea]
MOV EDX,dword ptr [EAX + 0x8]
MOV ESI,dword ptr [EAX]
LEA EDX,[ECX + EDX*0x1 + 0x7]
MOV ECX,0x3
MOV dword ptr [EBX + 0x2c],EDX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x00237bbc
MOV EAX,EBX
CALL 0x00235660
SUB ESP,0xc
MOV ECX,EBP
MOV EDX,0x36
PUSH EAX
MOV EAX,EBX
CALL 0x002352d0
ADD ESP,0x10
MOV EBP,EAX
MOV EAX,dword ptr [EBX + 0xc]
MOVZX EAX,byte ptr [EAX]
JMP 0x00237bc2
ADD EDX,0x1
MOV EAX,EBX
MOV dword ptr [EBX + 0xc],EDX
CALL 0x00235660
MOV EBP,EAX
TEST EAX,EAX
JZ 0x00237d2a
MOV EAX,EBX
CALL 0x00235b00
TEST EAX,EAX
JNZ 0x00237bbc
ADD ESP,0xc
XOR EBP,EBP
POP EBX
MOV EAX,EBP
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EDX + 0x1],0x6e
JNZ 0x00237ba6
ADD EDX,0x2
MOV dword ptr [EBX + 0xc],EDX
JMP 0x00237ba6
MOV ECX,dword ptr [EBX + 0x28]
TEST ECX,ECX
JZ 0x00237d72
MOV ESI,dword ptr [ECX]
TEST ESI,ESI
JZ 0x00237df0
CMP ESI,0x18
JZ 0x00237df0
CMP AL,0x44
JZ 0x00237e09
MOVZX EAX,byte ptr [EDX + 0x1]
CMP AL,0x49
JZ 0x00237f4d
SUB EAX,0x31
CMP AL,0x4
JA 0x00237d2a
ADD EDX,0x2
MOVZX EAX,AL
MOV dword ptr [EBX + 0xc],EDX
MOV ESI,dword ptr [EDI + EAX*0x4 + 0xfff31b20]
MOV EAX,dword ptr [EBX + 0x14]
CMP EAX,dword ptr [EBX + 0x18]
JGE 0x00237f40
MOV EBP,EAX
ADD EAX,0x1
SHL EBP,0x4
ADD EBP,dword ptr [EBX + 0x10]
MOV dword ptr [EBP + 0x4],0x0
MOV dword ptr [EBX + 0x14],EAX
TEST ECX,ECX
JZ 0x00237f40
LEA EAX,[ESI + -0x1]
CMP EAX,0x4
JA 0x00237f40
MOV dword ptr [EBP + 0x4],0x0
MOV dword ptr [EBP],0x7
MOV dword ptr [EBP + 0x8],ESI
MOV dword ptr [EBP + 0xc],ECX
JMP 0x00237bbc
MOV EAX,dword ptr [ECX + 0xc]
ADD dword ptr [EBX + 0x2c],EAX
MOVZX EAX,byte ptr [EDX]
CMP AL,0x43
JZ 0x00237d7a
CMP AL,0x44
JNZ 0x00237e94
MOVZX EAX,byte ptr [EDX + 0x1]
SUB EAX,0x30
CMP AL,0x5
JA 0x00237d2a
MOVZX EAX,AL
ADD EDI,dword ptr [EDI + EAX*0x4 + 0xfff316e8]
JMP EDI
XOR EBP,EBP
JMP 0x00237bc2
LEA EAX,[EDX + 0x1]
XOR EBP,EBP
MOV dword ptr [EBX + 0xc],EAX
MOVZX EAX,byte ptr [EDX + 0x1]
CMP AL,0x6c
JNZ 0x00237bc2
ADD EDX,0x2
MOV EAX,EBX
MOV dword ptr [EBX + 0xc],EDX
CALL 0x00237790
MOV ESI,EAX
TEST EAX,EAX
JZ 0x00237bbc
MOV EDX,dword ptr [EBX + 0xc]
MOVZX EAX,byte ptr [EDX]
CMP AL,0x45
JNZ 0x00237bc2
ADD EDX,0x1
MOV EAX,EBX
MOV dword ptr [EBX + 0xc],EDX
CALL 0x002355c0
TEST EAX,EAX
JS 0x00237f40
MOV EDX,dword ptr [EBX + 0x14]
MOV ECX,dword ptr [EBX + 0xc]
CMP EDX,dword ptr [EBX + 0x18]
JGE 0x00237f87
MOV EBP,EDX
ADD EDX,0x1
SHL EBP,0x4
ADD EBP,dword ptr [EBX + 0x10]
MOV dword ptr [EBP + 0x4],0x0
MOV dword ptr [EBX + 0x14],EDX
MOV dword ptr [EBP + 0xc],EAX
MOV EAX,dword ptr [EBX + 0x20]
MOV dword ptr [EBP],0x45
MOV dword ptr [EBP + 0x8],ESI
CMP EAX,dword ptr [EBX + 0x24]
JGE 0x00237f87
MOV EDX,dword ptr [EBX + 0x1c]
MOV dword ptr [EDX + EAX*0x4],EBP
ADD EAX,0x1
MOV dword ptr [EBX + 0x20],EAX
MOVZX EAX,byte ptr [ECX]
JMP 0x00237bc2
MOV EAX,dword ptr [EBX + 0xc]
XOR EBP,EBP
MOVZX EAX,byte ptr [EAX]
JMP 0x00237bc2
LEA EAX,[EDX + 0x1]
MOV dword ptr [EBX + 0xc],EAX
MOVZX EAX,byte ptr [EDX + 0x2]
SUB EAX,0x31
CMP AL,0x4
JA 0x00237f91
ADD EDX,0x3
MOVZX EAX,AL
MOV dword ptr [EBX + 0xc],EDX
MOV ESI,dword ptr [EDI + EAX*0x4 + 0xfff31b20]
MOV EAX,EBX
CALL 0x00236c80
MOV ECX,dword ptr [EBX + 0x28]
JMP 0x00237d9d
MOVZX EAX,byte ptr [EDX]
XOR EBP,EBP
JMP 0x00237bc2
MOVZX EAX,byte ptr [ECX]
XOR EBP,EBP
JMP 0x00237bc2
MOVZX EAX,byte ptr [EDX + 0x1]
XOR EBP,EBP
JMP 0x00237bc2
(translation_unit "uint * FUN_00237b70(void)\n\n{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}\n\n" (function_definition "uint * FUN_00237b70(void)\n\n{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_00237b70(void)" * (function_declarator "FUN_00237b70(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = FUN_00058c4a();" (assignment_expression "iVar3 = FUN_00058c4a()" identifier = (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" if (parenthesized_expression "((byte)(cVar1 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar1 - 0x30U) < 10" (call_expression "(byte)(cVar1 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 - 0x30U)" ( (binary_expression "cVar1 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" { (expression_statement "puVar4 = (uint *)FUN_00235660();" (assignment_expression "puVar4 = (uint *)FUN_00235660()" identifier = (cast_expression "(uint *)FUN_00235660()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00235660()" identifier (argument_list "()" ( ))))) ;) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (if_statement "if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" if (parenthesized_expression "((byte)(cVar1 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar1 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar1 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 + 0x9fU)" ( (binary_expression "cVar1 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }" { (if_statement "if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" if (parenthesized_expression "((cVar1 == 'o') && (pcVar2[1] == 'n'))" ( (binary_expression "(cVar1 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar1 == 'o')" ( (binary_expression "cVar1 == 'o'" identifier == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar2[1] == 'n')" ( (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) })) (expression_statement "puVar4 = (uint *)FUN_002375d0();" (assignment_expression "puVar4 = (uint *)FUN_002375d0()" identifier = (cast_expression "(uint *)FUN_002375d0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002375d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" { (expression_statement "bVar12 = *puVar4 < 0x31;" (assignment_expression "bVar12 = *puVar4 < 0x31" identifier = (binary_expression "*puVar4 < 0x31" (pointer_expression "*puVar4" * identifier) < number_literal)) ;) (expression_statement "bVar13 = *puVar4 == 0x31;" (assignment_expression "bVar13 = *puVar4 == 0x31" identifier = (binary_expression "*puVar4 == 0x31" (pointer_expression "*puVar4" * identifier) == number_literal)) ;) (if_statement "if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" { (expression_statement "pbVar10 = *(byte **)puVar4[2];" (assignment_expression "pbVar10 = *(byte **)puVar4[2]" identifier = (pointer_expression "*(byte **)puVar4[2]" * (cast_expression "(byte **)puVar4[2]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar4[2]" identifier [ number_literal ])))) ;) (expression_statement "iVar8 = 3;" (assignment_expression "iVar8 = 3" identifier = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (binary_expression "*(int *)(iVar3 + 0x2c) + 7" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) + number_literal) + (subscript_expression "((undefined4 *)puVar4[2])[2]" (parenthesized_expression "((undefined4 *)puVar4[2])" ( (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ])) )) [ number_literal ]))) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x32f73);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x32f73)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x32f73)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32f73)" ( (binary_expression "unaff_EDI + 0x32f73" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar10 < *pbVar11;" (assignment_expression "bVar12 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar10 == *pbVar11;" (assignment_expression "bVar13 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" { (expression_statement "uVar6 = FUN_00235660();" (assignment_expression "uVar6 = FUN_00235660()" identifier = (call_expression "FUN_00235660()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = (uint *)FUN_002352d0(uVar6);" (assignment_expression "puVar4 = (uint *)FUN_002352d0(uVar6)" identifier = (cast_expression "(uint *)FUN_002352d0(uVar6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002352d0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))))) ;) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) })) })) }) (else_clause "else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" else (compound_statement "{\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" { (if_statement "if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" if (parenthesized_expression "((byte)(cVar1 + 0xbdU) < 2)" ( (binary_expression "(byte)(cVar1 + 0xbdU) < 2" (call_expression "(byte)(cVar1 + 0xbdU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 + 0xbdU)" ( (binary_expression "cVar1 + 0xbdU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" { (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" identifier = (pointer_expression "*(int **)(iVar3 + 0x28)" * (cast_expression "(int **)(iVar3 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" if (parenthesized_expression "((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18))))" ( (binary_expression "(piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))" (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*piVar9 != 0 && (*piVar9 != 0x18)))" ( (parenthesized_expression "(*piVar9 != 0 && (*piVar9 != 0x18))" ( (binary_expression "*piVar9 != 0 && (*piVar9 != 0x18)" (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) && (parenthesized_expression "(*piVar9 != 0x18)" ( (binary_expression "*piVar9 != 0x18" (pointer_expression "*piVar9" * identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }" { (if_statement "if (cVar1 == 'D') goto LAB_00237e09;" if (parenthesized_expression "(cVar1 == 'D')" ( (binary_expression "cVar1 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (goto_statement "goto LAB_00237e09;" goto statement_identifier ;)) }) (else_clause "else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" else (compound_statement "{\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" { (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) + (subscript_expression "piVar9[3]" identifier [ number_literal ]))) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" if (parenthesized_expression "(cVar1 != 'C')" ( (binary_expression "cVar1 != 'C'" identifier != (char_literal "'C'" ' character ')) )) (compound_statement "{\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" { (if_statement "if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(cVar1 != 'D')" ( (binary_expression "cVar1 != 'D'" identifier != (char_literal "'D'" ' character ')) )) (compound_statement "{\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" { (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (labeled_statement "LAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" statement_identifier : (if_statement "if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" if (parenthesized_expression "(5 < (byte)(pcVar2[1] - 0x30U))" ( (binary_expression "5 < (byte)(pcVar2[1] - 0x30U)" number_literal < (call_expression "(byte)(pcVar2[1] - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pcVar2[1] - 0x30U)" ( (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal) )))) )) (compound_statement "{\n            return (uint *)0x0;\n          }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) comment comment (expression_statement "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();" (assignment_expression "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" identifier = (cast_expression "(uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" (parenthesized_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))" ( (pointer_expression "*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" * (cast_expression "(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" ( (binary_expression "unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" (binary_expression "unaff_EDI + 0x107489" identifier + number_literal) + (pointer_expression "*(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" ( (binary_expression "unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4" (binary_expression "unaff_EDI + 0x38b71" identifier + number_literal) + (binary_expression "(uint)(byte)(pcVar2[1] - 0x30U) * 4" (call_expression "(uint)(byte)(pcVar2[1] - 0x30U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(pcVar2[1] - 0x30U)" ( (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal) ))) * number_literal)) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })) }))) (if_statement "if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" if (parenthesized_expression "(pcVar2[1] == 'I')" ( (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'I'" ' character ')) )) (compound_statement "{\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[2];" (assignment_expression "cVar1 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (if_statement "if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" if (parenthesized_expression "(4 < (byte)(cVar1 - 0x31U))" ( (binary_expression "4 < (byte)(cVar1 - 0x31U)" number_literal < (call_expression "(byte)(cVar1 - 0x31U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 - 0x31U)" ( (binary_expression "cVar1 - 0x31U" identifier - number_literal) )))) )) (compound_statement "{\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" { (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 3;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" identifier = (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" ( (binary_expression "unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4" (binary_expression "unaff_EDI + 0x38fa9" identifier + number_literal) + (binary_expression "(uint)(byte)(cVar1 - 0x31U) * 4" (call_expression "(uint)(byte)(cVar1 - 0x31U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(cVar1 - 0x31U)" ( (binary_expression "cVar1 - 0x31U" identifier - number_literal) ))) * number_literal)) ))))) ;) (expression_statement "FUN_00236c80();" (call_expression "FUN_00236c80()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" identifier = (pointer_expression "*(int **)(iVar3 + 0x28)" * (cast_expression "(int **)(iVar3 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" else (compound_statement "{\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" { (expression_statement "bVar14 = pcVar2[1] - 0x31;" (assignment_expression "bVar14 = pcVar2[1] - 0x31" identifier = (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (4 < bVar14) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(4 < bVar14)" ( (binary_expression "4 < bVar14" number_literal < identifier) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" identifier = (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" ( (binary_expression "unaff_EDI + 0x38fa9 + (uint)bVar14 * 4" (binary_expression "unaff_EDI + 0x38fa9" identifier + number_literal) + (binary_expression "(uint)bVar14 * 4" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) }))) (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" if (parenthesized_expression "((piVar9 != (int *)0x0) && (uVar5 - 1 < 5))" ( (binary_expression "(piVar9 != (int *)0x0) && (uVar5 - 1 < 5)" (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar5 - 1 < 5)" ( (binary_expression "uVar5 - 1 < 5" (binary_expression "uVar5 - 1" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" { (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = 7;" (assignment_expression "*puVar4 = 7" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = (uint)piVar9;" (assignment_expression "puVar4[3] = (uint)piVar9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00237bbc;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00237f40:\n      puVar4 = (uint *)0x0;" statement_identifier : (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (if_statement "if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" if (parenthesized_expression "(cVar1 == 'L')" ( (binary_expression "cVar1 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar4 = (uint *)FUN_00235660();" (assignment_expression "puVar4 = (uint *)FUN_00235660()" identifier = (cast_expression "(uint *)FUN_00235660()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00235660()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar8 = FUN_00235b00();" (assignment_expression "iVar8 = FUN_00235b00()" identifier = (call_expression "FUN_00235b00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" else (compound_statement "{\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" { (if_statement "if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(cVar1 != 'U')" ( (binary_expression "cVar1 != 'U'" identifier != (char_literal "'U'" ' character ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" if (parenthesized_expression "(pcVar2[1] == 'l')" ( (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'l'" ' character ')) )) (compound_statement "{\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" { (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != 'l') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 'l')" ( (binary_expression "cVar1 != 'l'" identifier != (char_literal "'l'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_00237790();" (assignment_expression "uVar5 = FUN_00237790()" identifier = (call_expression "FUN_00237790()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" { (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (if_statement "if (cVar1 != 'E') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 'E')" ( (binary_expression "cVar1 != 'E'" identifier != (char_literal "'E'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "*(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar7 = FUN_002355c0();" (assignment_expression "uVar7 = FUN_002355c0()" identifier = (call_expression "FUN_002355c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(-1 < (int)uVar7)" ( (binary_expression "-1 < (int)uVar7" number_literal < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" { (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "puVar4[3] = uVar7;" (assignment_expression "puVar4[3] = uVar7" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" identifier = (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0x45;" (assignment_expression "*puVar4 = 0x45" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" identifier < (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" { (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" * (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) })) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (goto_statement "goto LAB_00237f40;" goto statement_identifier ;) })) }) (else_clause "else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" else (compound_statement "{\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" { (if_statement "if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(pcVar2[1] != 't')" ( (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'t'" ' character ')) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != 't') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 't')" ( (binary_expression "cVar1 != 't'" identifier != (char_literal "'t'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_002355c0();" (assignment_expression "uVar5 = FUN_002355c0()" identifier = (call_expression "FUN_002355c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" if (parenthesized_expression "(-1 < (int)uVar5)" ( (binary_expression "-1 < (int)uVar5" number_literal < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" { (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" identifier = (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0x47;" (assignment_expression "*puVar4 = 0x47" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" identifier < (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }" { (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" * (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) }) (else_clause "else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" else (compound_statement "{\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" { (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (goto_statement "goto LAB_00237f40;" goto statement_identifier ;) })) }))) }))) }))) (labeled_statement "LAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);" statement_identifier : (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;)) (labeled_statement "joined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }" statement_identifier : (if_statement "if (cVar1 != 'B') {\n    return puVar4;\n  }" if (parenthesized_expression "(cVar1 != 'B')" ( (binary_expression "cVar1 != 'B'" identifier != (char_literal "'B'" ' character ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) }))) (expression_statement "puVar4 = (uint *)FUN_002357e0();" (assignment_expression "puVar4 = (uint *)FUN_002357e0()" identifier = (cast_expression "(uint *)FUN_002357e0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002357e0()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit "uint * d_unqualified_name(void)\n\n{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = __x86_get_pc_thunk_di();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)d_source_name();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)d_operator_name();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)d_abi_tags();\n  return puVar4;\n}\n\n" (function_definition "uint * d_unqualified_name(void)\n\n{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = __x86_get_pc_thunk_di();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)d_source_name();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)d_operator_name();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)d_abi_tags();\n  return puVar4;\n}" type_identifier (pointer_declarator "* d_unqualified_name(void)" * (function_declarator "d_unqualified_name(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = __x86_get_pc_thunk_di();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)d_source_name();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)d_operator_name();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)d_abi_tags();\n  return puVar4;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = __x86_get_pc_thunk_di();" (assignment_expression "iVar3 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)d_source_name();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" if (parenthesized_expression "((byte)(cVar1 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar1 - 0x30U) < 10" (call_expression "(byte)(cVar1 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 - 0x30U)" ( (binary_expression "cVar1 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    puVar4 = (uint *)d_source_name();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" { (expression_statement "puVar4 = (uint *)d_source_name();" (assignment_expression "puVar4 = (uint *)d_source_name()" identifier = (cast_expression "(uint *)d_source_name()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_source_name()" identifier (argument_list "()" ( ))))) ;) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (if_statement "if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)d_operator_name();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" if (parenthesized_expression "((byte)(cVar1 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar1 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar1 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 + 0x9fU)" ( (binary_expression "cVar1 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)d_operator_name();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }" { (if_statement "if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" if (parenthesized_expression "((cVar1 == 'o') && (pcVar2[1] == 'n'))" ( (binary_expression "(cVar1 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar1 == 'o')" ( (binary_expression "cVar1 == 'o'" identifier == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar2[1] == 'n')" ( (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) })) (expression_statement "puVar4 = (uint *)d_operator_name();" (assignment_expression "puVar4 = (uint *)d_operator_name()" identifier = (cast_expression "(uint *)d_operator_name()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_operator_name()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" { (expression_statement "bVar12 = *puVar4 < 0x31;" (assignment_expression "bVar12 = *puVar4 < 0x31" identifier = (binary_expression "*puVar4 < 0x31" (pointer_expression "*puVar4" * identifier) < number_literal)) ;) (expression_statement "bVar13 = *puVar4 == 0x31;" (assignment_expression "bVar13 = *puVar4 == 0x31" identifier = (binary_expression "*puVar4 == 0x31" (pointer_expression "*puVar4" * identifier) == number_literal)) ;) (if_statement "if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" { (expression_statement "pbVar10 = *(byte **)puVar4[2];" (assignment_expression "pbVar10 = *(byte **)puVar4[2]" identifier = (pointer_expression "*(byte **)puVar4[2]" * (cast_expression "(byte **)puVar4[2]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar4[2]" identifier [ number_literal ])))) ;) (expression_statement "iVar8 = 3;" (assignment_expression "iVar8 = 3" identifier = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (binary_expression "*(int *)(iVar3 + 0x2c) + 7" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) + number_literal) + (subscript_expression "((undefined4 *)puVar4[2])[2]" (parenthesized_expression "((undefined4 *)puVar4[2])" ( (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ])) )) [ number_literal ]))) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x32f73);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x32f73)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x32f73)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32f73)" ( (binary_expression "unaff_EDI + 0x32f73" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar10 < *pbVar11;" (assignment_expression "bVar12 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar10 == *pbVar11;" (assignment_expression "bVar13 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar6 = d_source_name();\n          puVar4 = (uint *)d_make_comp(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" { (expression_statement "uVar6 = d_source_name();" (assignment_expression "uVar6 = d_source_name()" identifier = (call_expression "d_source_name()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(uVar6);" (assignment_expression "puVar4 = (uint *)d_make_comp(uVar6)" identifier = (cast_expression "(uint *)d_make_comp(uVar6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))))) ;) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) })) })) }) (else_clause "else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" else (compound_statement "{\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" { (if_statement "if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" if (parenthesized_expression "((byte)(cVar1 + 0xbdU) < 2)" ( (binary_expression "(byte)(cVar1 + 0xbdU) < 2" (call_expression "(byte)(cVar1 + 0xbdU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 + 0xbdU)" ( (binary_expression "cVar1 + 0xbdU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" { (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" identifier = (pointer_expression "*(int **)(iVar3 + 0x28)" * (cast_expression "(int **)(iVar3 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" if (parenthesized_expression "((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18))))" ( (binary_expression "(piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))" (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*piVar9 != 0 && (*piVar9 != 0x18)))" ( (parenthesized_expression "(*piVar9 != 0 && (*piVar9 != 0x18))" ( (binary_expression "*piVar9 != 0 && (*piVar9 != 0x18)" (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) && (parenthesized_expression "(*piVar9 != 0x18)" ( (binary_expression "*piVar9 != 0x18" (pointer_expression "*piVar9" * identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }" { (if_statement "if (cVar1 == 'D') goto LAB_00237e09;" if (parenthesized_expression "(cVar1 == 'D')" ( (binary_expression "cVar1 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (goto_statement "goto LAB_00237e09;" goto statement_identifier ;)) }) (else_clause "else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" else (compound_statement "{\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" { (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) + (subscript_expression "piVar9[3]" identifier [ number_literal ]))) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" if (parenthesized_expression "(cVar1 != 'C')" ( (binary_expression "cVar1 != 'C'" identifier != (char_literal "'C'" ' character ')) )) (compound_statement "{\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" { (if_statement "if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(cVar1 != 'D')" ( (binary_expression "cVar1 != 'D'" identifier != (char_literal "'D'" ' character ')) )) (compound_statement "{\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" { (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (labeled_statement "LAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" statement_identifier : (if_statement "if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" if (parenthesized_expression "(5 < (byte)(pcVar2[1] - 0x30U))" ( (binary_expression "5 < (byte)(pcVar2[1] - 0x30U)" number_literal < (call_expression "(byte)(pcVar2[1] - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pcVar2[1] - 0x30U)" ( (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal) )))) )) (compound_statement "{\n            return (uint *)0x0;\n          }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) comment comment (expression_statement "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();" (assignment_expression "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" identifier = (cast_expression "(uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" (parenthesized_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))" ( (pointer_expression "*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" * (cast_expression "(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" ( (binary_expression "unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" (binary_expression "unaff_EDI + 0x107489" identifier + number_literal) + (pointer_expression "*(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" ( (binary_expression "unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4" (binary_expression "unaff_EDI + 0x38b71" identifier + number_literal) + (binary_expression "(uint)(byte)(pcVar2[1] - 0x30U) * 4" (call_expression "(uint)(byte)(pcVar2[1] - 0x30U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(pcVar2[1] - 0x30U)" ( (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal) ))) * number_literal)) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })) }))) (if_statement "if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" if (parenthesized_expression "(pcVar2[1] == 'I')" ( (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'I'" ' character ')) )) (compound_statement "{\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        d_type();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[2];" (assignment_expression "cVar1 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (if_statement "if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" if (parenthesized_expression "(4 < (byte)(cVar1 - 0x31U))" ( (binary_expression "4 < (byte)(cVar1 - 0x31U)" number_literal < (call_expression "(byte)(cVar1 - 0x31U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 - 0x31U)" ( (binary_expression "cVar1 - 0x31U" identifier - number_literal) )))) )) (compound_statement "{\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" { (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 3;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" identifier = (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" ( (binary_expression "unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4" (binary_expression "unaff_EDI + 0x38fa9" identifier + number_literal) + (binary_expression "(uint)(byte)(cVar1 - 0x31U) * 4" (call_expression "(uint)(byte)(cVar1 - 0x31U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(cVar1 - 0x31U)" ( (binary_expression "cVar1 - 0x31U" identifier - number_literal) ))) * number_literal)) ))))) ;) (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" identifier = (pointer_expression "*(int **)(iVar3 + 0x28)" * (cast_expression "(int **)(iVar3 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" else (compound_statement "{\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" { (expression_statement "bVar14 = pcVar2[1] - 0x31;" (assignment_expression "bVar14 = pcVar2[1] - 0x31" identifier = (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (4 < bVar14) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(4 < bVar14)" ( (binary_expression "4 < bVar14" number_literal < identifier) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" identifier = (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" ( (binary_expression "unaff_EDI + 0x38fa9 + (uint)bVar14 * 4" (binary_expression "unaff_EDI + 0x38fa9" identifier + number_literal) + (binary_expression "(uint)bVar14 * 4" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) }))) (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" if (parenthesized_expression "((piVar9 != (int *)0x0) && (uVar5 - 1 < 5))" ( (binary_expression "(piVar9 != (int *)0x0) && (uVar5 - 1 < 5)" (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar5 - 1 < 5)" ( (binary_expression "uVar5 - 1 < 5" (binary_expression "uVar5 - 1" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" { (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = 7;" (assignment_expression "*puVar4 = 7" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = (uint)piVar9;" (assignment_expression "puVar4[3] = (uint)piVar9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00237bbc;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00237f40:\n      puVar4 = (uint *)0x0;" statement_identifier : (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (if_statement "if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" if (parenthesized_expression "(cVar1 == 'L')" ( (binary_expression "cVar1 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)d_source_name();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = d_discriminator();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar4 = (uint *)d_source_name();" (assignment_expression "puVar4 = (uint *)d_source_name()" identifier = (cast_expression "(uint *)d_source_name()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_source_name()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar8 = d_discriminator();" (assignment_expression "iVar8 = d_discriminator()" identifier = (call_expression "d_discriminator()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" else (compound_statement "{\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" { (if_statement "if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(cVar1 != 'U')" ( (binary_expression "cVar1 != 'U'" identifier != (char_literal "'U'" ' character ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" if (parenthesized_expression "(pcVar2[1] == 'l')" ( (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'l'" ' character ')) )) (compound_statement "{\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_parmlist();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" { (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != 'l') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 'l')" ( (binary_expression "cVar1 != 'l'" identifier != (char_literal "'l'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = d_parmlist();" (assignment_expression "uVar5 = d_parmlist()" identifier = (call_expression "d_parmlist()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = d_compact_number();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" { (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (if_statement "if (cVar1 != 'E') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 'E')" ( (binary_expression "cVar1 != 'E'" identifier != (char_literal "'E'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "*(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar7 = d_compact_number();" (assignment_expression "uVar7 = d_compact_number()" identifier = (call_expression "d_compact_number()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(-1 < (int)uVar7)" ( (binary_expression "-1 < (int)uVar7" number_literal < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" { (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "puVar4[3] = uVar7;" (assignment_expression "puVar4[3] = uVar7" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" identifier = (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0x45;" (assignment_expression "*puVar4 = 0x45" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" identifier < (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" { (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" * (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) })) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (goto_statement "goto LAB_00237f40;" goto statement_identifier ;) })) }) (else_clause "else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" else (compound_statement "{\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = d_compact_number();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" { (if_statement "if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(pcVar2[1] != 't')" ( (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'t'" ' character ')) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != 't') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 't')" ( (binary_expression "cVar1 != 't'" identifier != (char_literal "'t'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = d_compact_number();" (assignment_expression "uVar5 = d_compact_number()" identifier = (call_expression "d_compact_number()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" if (parenthesized_expression "(-1 < (int)uVar5)" ( (binary_expression "-1 < (int)uVar5" number_literal < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" { (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" identifier = (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0x47;" (assignment_expression "*puVar4 = 0x47" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" identifier < (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }" { (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" * (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) }) (else_clause "else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" else (compound_statement "{\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" { (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (goto_statement "goto LAB_00237f40;" goto statement_identifier ;) })) }))) }))) }))) (labeled_statement "LAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);" statement_identifier : (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;)) (labeled_statement "joined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }" statement_identifier : (if_statement "if (cVar1 != 'B') {\n    return puVar4;\n  }" if (parenthesized_expression "(cVar1 != 'B')" ( (binary_expression "cVar1 != 'B'" identifier != (char_literal "'B'" ' character ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) }))) (expression_statement "puVar4 = (uint *)d_abi_tags();" (assignment_expression "puVar4 = (uint *)d_abi_tags()" identifier = (cast_expression "(uint *)d_abi_tags()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_abi_tags()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit "uint * FUN_00237b70(void)\n\n{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}\n\n" (function_definition "uint * FUN_00237b70(void)\n\n{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}" type_identifier (pointer_declarator "* FUN_00237b70(void)" * (function_declarator "FUN_00237b70(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) )))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "iVar3 = FUN_00058c4a();" (assignment_expression "iVar3 = FUN_00058c4a()" identifier = (call_expression "FUN_00058c4a()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" if (parenthesized_expression "((byte)(cVar1 - 0x30U) < 10)" ( (binary_expression "(byte)(cVar1 - 0x30U) < 10" (call_expression "(byte)(cVar1 - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 - 0x30U)" ( (binary_expression "cVar1 - 0x30U" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" { (expression_statement "puVar4 = (uint *)FUN_00235660();" (assignment_expression "puVar4 = (uint *)FUN_00235660()" identifier = (cast_expression "(uint *)FUN_00235660()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00235660()" identifier (argument_list "()" ( ))))) ;) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (if_statement "if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" if (parenthesized_expression "((byte)(cVar1 + 0x9fU) < 0x1a)" ( (binary_expression "(byte)(cVar1 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar1 + 0x9fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 + 0x9fU)" ( (binary_expression "cVar1 + 0x9fU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }" { (if_statement "if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" if (parenthesized_expression "((cVar1 == 'o') && (pcVar2[1] == 'n'))" ( (binary_expression "(cVar1 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar1 == 'o')" ( (binary_expression "cVar1 == 'o'" identifier == (char_literal "'o'" ' character ')) )) && (parenthesized_expression "(pcVar2[1] == 'n')" ( (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'n'" ' character ')) ))) )) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) })) (expression_statement "puVar4 = (uint *)FUN_002375d0();" (assignment_expression "puVar4 = (uint *)FUN_002375d0()" identifier = (cast_expression "(uint *)FUN_002375d0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002375d0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" if (parenthesized_expression "(puVar4 != (uint *)0x0)" ( (binary_expression "puVar4 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" { (expression_statement "bVar12 = *puVar4 < 0x31;" (assignment_expression "bVar12 = *puVar4 < 0x31" identifier = (binary_expression "*puVar4 < 0x31" (pointer_expression "*puVar4" * identifier) < number_literal)) ;) (expression_statement "bVar13 = *puVar4 == 0x31;" (assignment_expression "bVar13 = *puVar4 == 0x31" identifier = (binary_expression "*puVar4 == 0x31" (pointer_expression "*puVar4" * identifier) == number_literal)) ;) (if_statement "if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" { (expression_statement "pbVar10 = *(byte **)puVar4[2];" (assignment_expression "pbVar10 = *(byte **)puVar4[2]" identifier = (pointer_expression "*(byte **)puVar4[2]" * (cast_expression "(byte **)puVar4[2]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "puVar4[2]" identifier [ number_literal ])))) ;) (expression_statement "iVar8 = 3;" (assignment_expression "iVar8 = 3" identifier = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (binary_expression "*(int *)(iVar3 + 0x2c) + 7" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) + number_literal) + (subscript_expression "((undefined4 *)puVar4[2])[2]" (parenthesized_expression "((undefined4 *)puVar4[2])" ( (cast_expression "(undefined4 *)puVar4[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ])) )) [ number_literal ]))) ;) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x32f73);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x32f73)" identifier = (cast_expression "(byte *)(unaff_EDI + 0x32f73)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x32f73)" ( (binary_expression "unaff_EDI + 0x32f73" identifier + number_literal) )))) ;) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);" do (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        }" { (if_statement "if (iVar8 == 0) break;" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar10 < *pbVar11;" (assignment_expression "bVar12 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar10 == *pbVar11;" (assignment_expression "bVar13 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" if (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) (compound_statement "{\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" { (expression_statement "uVar6 = FUN_00235660();" (assignment_expression "uVar6 = FUN_00235660()" identifier = (call_expression "FUN_00235660()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = (uint *)FUN_002352d0(uVar6);" (assignment_expression "puVar4 = (uint *)FUN_002352d0(uVar6)" identifier = (cast_expression "(uint *)FUN_002352d0(uVar6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002352d0(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))))) ;) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) })) })) }) (else_clause "else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" else (compound_statement "{\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" { (if_statement "if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" if (parenthesized_expression "((byte)(cVar1 + 0xbdU) < 2)" ( (binary_expression "(byte)(cVar1 + 0xbdU) < 2" (call_expression "(byte)(cVar1 + 0xbdU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 + 0xbdU)" ( (binary_expression "cVar1 + 0xbdU" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" { (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" identifier = (pointer_expression "*(int **)(iVar3 + 0x28)" * (cast_expression "(int **)(iVar3 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" if (parenthesized_expression "((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18))))" ( (binary_expression "(piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))" (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*piVar9 != 0 && (*piVar9 != 0x18)))" ( (parenthesized_expression "(*piVar9 != 0 && (*piVar9 != 0x18))" ( (binary_expression "*piVar9 != 0 && (*piVar9 != 0x18)" (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" * identifier) != number_literal) && (parenthesized_expression "(*piVar9 != 0x18)" ( (binary_expression "*piVar9 != 0x18" (pointer_expression "*piVar9" * identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }" { (if_statement "if (cVar1 == 'D') goto LAB_00237e09;" if (parenthesized_expression "(cVar1 == 'D')" ( (binary_expression "cVar1 == 'D'" identifier == (char_literal "'D'" ' character ')) )) (goto_statement "goto LAB_00237e09;" goto statement_identifier ;)) }) (else_clause "else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" else (compound_statement "{\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" { (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" * (cast_expression "(int *)(iVar3 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x2c)" ( (binary_expression "iVar3 + 0x2c" identifier + number_literal) )))) + (subscript_expression "piVar9[3]" identifier [ number_literal ]))) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (if_statement "if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" if (parenthesized_expression "(cVar1 != 'C')" ( (binary_expression "cVar1 != 'C'" identifier != (char_literal "'C'" ' character ')) )) (compound_statement "{\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" { (if_statement "if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(cVar1 != 'D')" ( (binary_expression "cVar1 != 'D'" identifier != (char_literal "'D'" ' character ')) )) (compound_statement "{\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" { (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (labeled_statement "LAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" statement_identifier : (if_statement "if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" if (parenthesized_expression "(5 < (byte)(pcVar2[1] - 0x30U))" ( (binary_expression "5 < (byte)(pcVar2[1] - 0x30U)" number_literal < (call_expression "(byte)(pcVar2[1] - 0x30U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(pcVar2[1] - 0x30U)" ( (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal) )))) )) (compound_statement "{\n            return (uint *)0x0;\n          }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) }))) (expression_statement "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();" (assignment_expression "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" identifier = (cast_expression "(uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" (parenthesized_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))" ( (pointer_expression "*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" * (cast_expression "(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" ( (binary_expression "unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" (binary_expression "unaff_EDI + 0x107489" identifier + number_literal) + (pointer_expression "*(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" ( (binary_expression "unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4" (binary_expression "unaff_EDI + 0x38b71" identifier + number_literal) + (binary_expression "(uint)(byte)(pcVar2[1] - 0x30U) * 4" (call_expression "(uint)(byte)(pcVar2[1] - 0x30U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(pcVar2[1] - 0x30U)" ( (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal) ))) * number_literal)) ))))) )))) )) (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })) }))) (if_statement "if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" if (parenthesized_expression "(pcVar2[1] == 'I')" ( (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'I'" ' character ')) )) (compound_statement "{\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[2];" (assignment_expression "cVar1 = pcVar2[2]" identifier = (subscript_expression "pcVar2[2]" identifier [ number_literal ])) ;) (if_statement "if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" if (parenthesized_expression "(4 < (byte)(cVar1 - 0x31U))" ( (binary_expression "4 < (byte)(cVar1 - 0x31U)" number_literal < (call_expression "(byte)(cVar1 - 0x31U)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar1 - 0x31U)" ( (binary_expression "cVar1 - 0x31U" identifier - number_literal) )))) )) (compound_statement "{\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" { (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 3;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" identifier = (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" ( (binary_expression "unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4" (binary_expression "unaff_EDI + 0x38fa9" identifier + number_literal) + (binary_expression "(uint)(byte)(cVar1 - 0x31U) * 4" (call_expression "(uint)(byte)(cVar1 - 0x31U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(cVar1 - 0x31U)" ( (binary_expression "cVar1 - 0x31U" identifier - number_literal) ))) * number_literal)) ))))) ;) (expression_statement "FUN_00236c80();" (call_expression "FUN_00236c80()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" identifier = (pointer_expression "*(int **)(iVar3 + 0x28)" * (cast_expression "(int **)(iVar3 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0x28)" ( (binary_expression "iVar3 + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" else (compound_statement "{\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" { (expression_statement "bVar14 = pcVar2[1] - 0x31;" (assignment_expression "bVar14 = pcVar2[1] - 0x31" identifier = (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) - number_literal)) ;) (if_statement "if (4 < bVar14) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(4 < bVar14)" ( (binary_expression "4 < bVar14" number_literal < identifier) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" identifier = (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" * (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" ( (binary_expression "unaff_EDI + 0x38fa9 + (uint)bVar14 * 4" (binary_expression "unaff_EDI + 0x38fa9" identifier + number_literal) + (binary_expression "(uint)bVar14 * 4" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) }))) (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" if (parenthesized_expression "((piVar9 != (int *)0x0) && (uVar5 - 1 < 5))" ( (binary_expression "(piVar9 != (int *)0x0) && (uVar5 - 1 < 5)" (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar5 - 1 < 5)" ( (binary_expression "uVar5 - 1 < 5" (binary_expression "uVar5 - 1" identifier - number_literal) < number_literal) ))) )) (compound_statement "{\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" { (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = 7;" (assignment_expression "*puVar4 = 7" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = (uint)piVar9;" (assignment_expression "puVar4[3] = (uint)piVar9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (cast_expression "(uint)piVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_00237bbc;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00237f40:\n      puVar4 = (uint *)0x0;" statement_identifier : (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (if_statement "if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" if (parenthesized_expression "(cVar1 == 'L')" ( (binary_expression "cVar1 == 'L'" identifier == (char_literal "'L'" ' character ')) )) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }" { (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "puVar4 = (uint *)FUN_00235660();" (assignment_expression "puVar4 = (uint *)FUN_00235660()" identifier = (cast_expression "(uint *)FUN_00235660()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00235660()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar8 = FUN_00235b00();" (assignment_expression "iVar8 = FUN_00235b00()" identifier = (call_expression "FUN_00235b00()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar8 == 0) {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) }) (else_clause "else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" else (compound_statement "{\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" { (if_statement "if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(cVar1 != 'U')" ( (binary_expression "cVar1 != 'U'" identifier != (char_literal "'U'" ' character ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" if (parenthesized_expression "(pcVar2[1] == 'l')" ( (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'l'" ' character ')) )) (compound_statement "{\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" { (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != 'l') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 'l')" ( (binary_expression "cVar1 != 'l'" identifier != (char_literal "'l'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_00237790();" (assignment_expression "uVar5 = FUN_00237790()" identifier = (call_expression "FUN_00237790()" identifier (argument_list "()" ( )))) ;) (if_statement "if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" { (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (if_statement "if (cVar1 != 'E') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 'E')" ( (binary_expression "cVar1 != 'E'" identifier != (char_literal "'E'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "*(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uVar7 = FUN_002355c0();" (assignment_expression "uVar7 = FUN_002355c0()" identifier = (call_expression "FUN_002355c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(-1 < (int)uVar7)" ( (binary_expression "-1 < (int)uVar7" number_literal < (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" { (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "puVar4[3] = uVar7;" (assignment_expression "puVar4[3] = uVar7" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" identifier = (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0x45;" (assignment_expression "*puVar4 = 0x45" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" identifier < (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" { (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" * (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) })) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (goto_statement "goto LAB_00237f40;" goto statement_identifier ;) })) }) (else_clause "else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" else (compound_statement "{\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" { (if_statement "if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(pcVar2[1] != 't')" ( (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'t'" ' character ')) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" identifier = (subscript_expression "pcVar2[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 != 't') goto joined_r0x00237c91;" if (parenthesized_expression "(cVar1 != 't')" ( (binary_expression "cVar1 != 't'" identifier != (char_literal "'t'" ' character ')) )) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;)) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (expression_statement "uVar5 = FUN_002355c0();" (assignment_expression "uVar5 = FUN_002355c0()" identifier = (call_expression "FUN_002355c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" if (parenthesized_expression "(-1 < (int)uVar5)" ( (binary_expression "-1 < (int)uVar5" number_literal < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" { (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" identifier = (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" identifier < (pointer_expression "*(int *)(iVar3 + 0x18)" * (cast_expression "(int *)(iVar3 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) ))))) )) (compound_statement "{\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" { (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" * (cast_expression "(int *)(iVar3 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x14)" ( (binary_expression "iVar3 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" identifier = (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" identifier = (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "*puVar4 = 0x47;" (assignment_expression "*puVar4 = 0x47" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" if (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" ( (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" identifier < (pointer_expression "*(int *)(iVar3 + 0x24)" * (cast_expression "(int *)(iVar3 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x24)" ( (binary_expression "iVar3 + 0x24" identifier + number_literal) ))))) )) (compound_statement "{\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }" { (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" * (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" ( (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" * (cast_expression "(int *)(iVar3 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = identifier) ;) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" * (cast_expression "(int *)(iVar3 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x20)" ( (binary_expression "iVar3 + 0x20" identifier + number_literal) )))) = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) }) (else_clause "else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" else (compound_statement "{\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" { (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (goto_statement "goto joined_r0x00237c91;" goto statement_identifier ;) })) (goto_statement "goto LAB_00237f40;" goto statement_identifier ;) })) }))) }))) }))) (labeled_statement "LAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);" statement_identifier : (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" identifier = (pointer_expression "**(char **)(iVar3 + 0xc)" * (pointer_expression "*(char **)(iVar3 + 0xc)" * (cast_expression "(char **)(iVar3 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;)) (labeled_statement "joined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }" statement_identifier : (if_statement "if (cVar1 != 'B') {\n    return puVar4;\n  }" if (parenthesized_expression "(cVar1 != 'B')" ( (binary_expression "cVar1 != 'B'" identifier != (char_literal "'B'" ' character ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) }))) (expression_statement "puVar4 = (uint *)FUN_002357e0();" (assignment_expression "puVar4 = (uint *)FUN_002357e0()" identifier = (cast_expression "(uint *)FUN_002357e0()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002357e0()" identifier (argument_list "()" ( ))))) ;) (return_statement "return puVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (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 * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + 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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )) [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) })) })) }) (else_clause else (compound_statement { (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) ))) * LIT)) ))))) )))) )) (argument_list ( ))))) ;) (return_statement return IDENT ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (call_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT)) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) }))) (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 < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (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 (binary_expression IDENT - LIT) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (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 < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) }))) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (return_statement return IDENT ;) })))
(function_definition "uint * FUN_00237b70(void)\n\n{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}" (type_identifier "uint") (pointer_declarator "* FUN_00237b70(void)" (* "*") (function_declarator "FUN_00237b70(void)" (identifier "FUN_00237b70") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")")))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  int iVar3;\n  uint *puVar4;\n  uint uVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int iVar8;\n  int *piVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  iVar3 = FUN_00058c4a();\n  pcVar2 = *(char **)(iVar3 + 0xc);\n  cVar1 = *pcVar2;\n  if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }\n  if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }\nLAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);\njoined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }\n  puVar4 = (uint *)FUN_002357e0();\n  return puVar4;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "bool bVar12;" (primitive_type "bool") (identifier "bVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" (identifier "bVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar3 = FUN_00058c4a();" (assignment_expression "iVar3 = FUN_00058c4a()" (identifier "iVar3") (= "=") (call_expression "FUN_00058c4a()" (identifier "FUN_00058c4a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" (identifier "cVar1") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (if_statement "if ((byte)(cVar1 - 0x30U) < 10) {\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" (if "if") (parenthesized_expression "((byte)(cVar1 - 0x30U) < 10)" (( "(") (binary_expression "(byte)(cVar1 - 0x30U) < 10" (call_expression "(byte)(cVar1 - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar1 - 0x30U)" (( "(") (binary_expression "cVar1 - 0x30U" (identifier "cVar1") (- "-") (number_literal "0x30U")) () ")"))) (< "<") (number_literal "10")) () ")")) (compound_statement "{\n    puVar4 = (uint *)FUN_00235660();\n    cVar1 = **(char **)(iVar3 + 0xc);\n    goto joined_r0x00237c91;\n  }" ({ "{") (expression_statement "puVar4 = (uint *)FUN_00235660();" (assignment_expression "puVar4 = (uint *)FUN_00235660()" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00235660()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00235660()" (identifier "FUN_00235660") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" (identifier "cVar1") (= "=") (pointer_expression "**(char **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (if_statement "if ((byte)(cVar1 + 0x9fU) < 0x1a) {\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }\n  else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" (if "if") (parenthesized_expression "((byte)(cVar1 + 0x9fU) < 0x1a)" (( "(") (binary_expression "(byte)(cVar1 + 0x9fU) < 0x1a" (call_expression "(byte)(cVar1 + 0x9fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar1 + 0x9fU)" (( "(") (binary_expression "cVar1 + 0x9fU" (identifier "cVar1") (+ "+") (number_literal "0x9fU")) () ")"))) (< "<") (number_literal "0x1a")) () ")")) (compound_statement "{\n    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }\n    puVar4 = (uint *)FUN_002375d0();\n    if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" (if "if") (parenthesized_expression "((cVar1 == 'o') && (pcVar2[1] == 'n'))" (( "(") (binary_expression "(cVar1 == 'o') && (pcVar2[1] == 'n')" (parenthesized_expression "(cVar1 == 'o')" (( "(") (binary_expression "cVar1 == 'o'" (identifier "cVar1") (== "==") (char_literal "'o'" (' "'") (character "o") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar2[1] == 'n')" (( "(") (binary_expression "pcVar2[1] == 'n'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'n'" (' "'") (character "n") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n    }" ({ "{") (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "puVar4 = (uint *)FUN_002375d0();" (assignment_expression "puVar4 = (uint *)FUN_002375d0()" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_002375d0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002375d0()" (identifier "FUN_002375d0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar4 != (uint *)0x0) {\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(puVar4 != (uint *)0x0)" (( "(") (binary_expression "puVar4 != (uint *)0x0" (identifier "puVar4") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      bVar12 = *puVar4 < 0x31;\n      bVar13 = *puVar4 == 0x31;\n      if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }\n    }" ({ "{") (expression_statement "bVar12 = *puVar4 < 0x31;" (assignment_expression "bVar12 = *puVar4 < 0x31" (identifier "bVar12") (= "=") (binary_expression "*puVar4 < 0x31" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (< "<") (number_literal "0x31"))) (; ";")) (expression_statement "bVar13 = *puVar4 == 0x31;" (assignment_expression "bVar13 = *puVar4 == 0x31" (identifier "bVar13") (= "=") (binary_expression "*puVar4 == 0x31" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (== "==") (number_literal "0x31"))) (; ";")) (if_statement "if (bVar13) {\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n        pbVar10 = *(byte **)puVar4[2];\n        iVar8 = 3;\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];\n        pbVar11 = (byte *)(unaff_EDI + 0x32f73);\n        do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);\n        if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }\n      }" ({ "{") (expression_statement "pbVar10 = *(byte **)puVar4[2];" (assignment_expression "pbVar10 = *(byte **)puVar4[2]" (identifier "pbVar10") (= "=") (pointer_expression "*(byte **)puVar4[2]" (* "*") (cast_expression "(byte **)puVar4[2]" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (expression_statement "iVar8 = 3;" (assignment_expression "iVar8 = 3" (identifier "iVar8") (= "=") (number_literal "3")) (; ";")) (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (pointer_expression "*(int *)(iVar3 + 0x2c)" (* "*") (cast_expression "(int *)(iVar3 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2c)" (( "(") (binary_expression "iVar3 + 0x2c" (identifier "iVar3") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "*(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2]" (binary_expression "*(int *)(iVar3 + 0x2c) + 7" (pointer_expression "*(int *)(iVar3 + 0x2c)" (* "*") (cast_expression "(int *)(iVar3 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2c)" (( "(") (binary_expression "iVar3 + 0x2c" (identifier "iVar3") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (number_literal "7")) (+ "+") (subscript_expression "((undefined4 *)puVar4[2])[2]" (parenthesized_expression "((undefined4 *)puVar4[2])" (( "(") (cast_expression "(undefined4 *)puVar4[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]"))) () ")")) ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "pbVar11 = (byte *)(unaff_EDI + 0x32f73);" (assignment_expression "pbVar11 = (byte *)(unaff_EDI + 0x32f73)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(unaff_EDI + 0x32f73)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x32f73)" (( "(") (binary_expression "unaff_EDI + 0x32f73" (identifier "unaff_EDI") (+ "+") (number_literal "0x32f73")) () ")")))) (; ";")) (do_statement "do {\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        } while (bVar13);" (do "do") (compound_statement "{\n          if (iVar8 == 0) break;\n          iVar8 = iVar8 + -1;\n          bVar12 = *pbVar10 < *pbVar11;\n          bVar13 = *pbVar10 == *pbVar11;\n          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n        }" ({ "{") (if_statement "if (iVar8 == 0) break;" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + -1;" (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar12 = *pbVar10 < *pbVar11;" (assignment_expression "bVar12 = *pbVar10 < *pbVar11" (identifier "bVar12") (= "=") (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar13 = *pbVar10 == *pbVar11;" (assignment_expression "bVar13 = *pbVar10 == *pbVar11" (identifier "bVar13") (= "=") (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar14 * -2" (identifier "pbVar10") (+ "+") (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar14 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar12 && !bVar13) == bVar12) {\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" (if "if") (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" (( "(") (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" (( "(") (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" (! "!") (identifier "bVar12")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (== "==") (identifier "bVar12")) () ")")) (compound_statement "{\n          uVar6 = FUN_00235660();\n          puVar4 = (uint *)FUN_002352d0(uVar6);\n          cVar1 = **(char **)(iVar3 + 0xc);\n          goto joined_r0x00237c91;\n        }" ({ "{") (expression_statement "uVar6 = FUN_00235660();" (assignment_expression "uVar6 = FUN_00235660()" (identifier "uVar6") (= "=") (call_expression "FUN_00235660()" (identifier "FUN_00235660") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_002352d0(uVar6);" (assignment_expression "puVar4 = (uint *)FUN_002352d0(uVar6)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_002352d0(uVar6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002352d0(uVar6)" (identifier "FUN_002352d0") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))))) (; ";")) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" (identifier "cVar1") (= "=") (pointer_expression "**(char **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" (else "else") (compound_statement "{\n    if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }\n    if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if ((byte)(cVar1 + 0xbdU) < 2) {\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" (if "if") (parenthesized_expression "((byte)(cVar1 + 0xbdU) < 2)" (( "(") (binary_expression "(byte)(cVar1 + 0xbdU) < 2" (call_expression "(byte)(cVar1 + 0xbdU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar1 + 0xbdU)" (( "(") (binary_expression "cVar1 + 0xbdU" (identifier "cVar1") (+ "+") (number_literal "0xbdU")) () ")"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n      piVar9 = *(int **)(iVar3 + 0x28);\n      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }\n      if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }\n      iVar8 = *(int *)(iVar3 + 0x14);\n      if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }\nLAB_00237f40:\n      puVar4 = (uint *)0x0;\n      cVar1 = **(char **)(iVar3 + 0xc);\n      goto joined_r0x00237c91;\n    }" ({ "{") (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(iVar3 + 0x28)" (* "*") (cast_expression "(int **)(iVar3 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }\n      else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" (if "if") (parenthesized_expression "((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18))))" (( "(") (binary_expression "(piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))" (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((*piVar9 != 0 && (*piVar9 != 0x18)))" (( "(") (parenthesized_expression "(*piVar9 != 0 && (*piVar9 != 0x18))" (( "(") (binary_expression "*piVar9 != 0 && (*piVar9 != 0x18)" (binary_expression "*piVar9 != 0" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*piVar9 != 0x18)" (( "(") (binary_expression "*piVar9 != 0x18" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (!= "!=") (number_literal "0x18")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        if (cVar1 == 'D') goto LAB_00237e09;\n      }" ({ "{") (if_statement "if (cVar1 == 'D') goto LAB_00237e09;" (if "if") (parenthesized_expression "(cVar1 == 'D')" (( "(") (binary_expression "cVar1 == 'D'" (identifier "cVar1") (== "==") (char_literal "'D'" (' "'") (character "D") (' "'"))) () ")")) (goto_statement "goto LAB_00237e09;" (goto "goto") (statement_identifier "LAB_00237e09") (; ";"))) (} "}")) (else_clause "else {\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" (else "else") (compound_statement "{\n        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];\n        cVar1 = *pcVar2;\n        if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }\n      }" ({ "{") (expression_statement "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];" (assignment_expression "*(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" (* "*") (cast_expression "(int *)(iVar3 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2c)" (( "(") (binary_expression "iVar3 + 0x2c" (identifier "iVar3") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "*(int *)(iVar3 + 0x2c) + piVar9[3]" (pointer_expression "*(int *)(iVar3 + 0x2c)" (* "*") (cast_expression "(int *)(iVar3 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x2c)" (( "(") (binary_expression "iVar3 + 0x2c" (identifier "iVar3") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (subscript_expression "piVar9[3]" (identifier "piVar9") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" (identifier "cVar1") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (if_statement "if (cVar1 != 'C') {\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" (if "if") (parenthesized_expression "(cVar1 != 'C')" (( "(") (binary_expression "cVar1 != 'C'" (identifier "cVar1") (!= "!=") (char_literal "'C'" (' "'") (character "C") (' "'"))) () ")")) (compound_statement "{\n          if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\nLAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }\n                    \n                    \n          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();\n          return puVar4;\n        }" ({ "{") (if_statement "if (cVar1 != 'D') {\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" (if "if") (parenthesized_expression "(cVar1 != 'D')" (( "(") (binary_expression "cVar1 != 'D'" (identifier "cVar1") (!= "!=") (char_literal "'D'" (' "'") (character "D") (' "'"))) () ")")) (compound_statement "{\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" ({ "{") (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (labeled_statement "LAB_00237e09:\n          if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" (statement_identifier "LAB_00237e09") (: ":") (if_statement "if (5 < (byte)(pcVar2[1] - 0x30U)) {\n            return (uint *)0x0;\n          }" (if "if") (parenthesized_expression "(5 < (byte)(pcVar2[1] - 0x30U))" (( "(") (binary_expression "5 < (byte)(pcVar2[1] - 0x30U)" (number_literal "5") (< "<") (call_expression "(byte)(pcVar2[1] - 0x30U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(pcVar2[1] - 0x30U)" (( "(") (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "0x30U")) () ")")))) () ")")) (compound_statement "{\n            return (uint *)0x0;\n          }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}")))) (expression_statement "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();" (assignment_expression "puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" (identifier "puVar4") (= "=") (cast_expression "(uint *)(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))()" (parenthesized_expression "(*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))" (( "(") (pointer_expression "*(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" (* "*") (cast_expression "(code *)(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4))" (( "(") (binary_expression "unaff_EDI + 0x107489 +\n                                     *(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" (binary_expression "unaff_EDI + 0x107489" (identifier "unaff_EDI") (+ "+") (number_literal "0x107489")) (+ "+") (pointer_expression "*(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)" (( "(") (binary_expression "unaff_EDI + 0x38b71 +\n                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4" (binary_expression "unaff_EDI + 0x38b71" (identifier "unaff_EDI") (+ "+") (number_literal "0x38b71")) (+ "+") (binary_expression "(uint)(byte)(pcVar2[1] - 0x30U) * 4" (call_expression "(uint)(byte)(pcVar2[1] - 0x30U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(pcVar2[1] - 0x30U)" (( "(") (binary_expression "pcVar2[1] - 0x30U" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "0x30U")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (} "}")))) (if_statement "if (pcVar2[1] == 'I') {\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }\n      else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" (if "if") (parenthesized_expression "(pcVar2[1] == 'I')" (( "(") (binary_expression "pcVar2[1] == 'I'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'I'" (' "'") (character "I") (' "'"))) () ")")) (compound_statement "{\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[2];\n        if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 3;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);\n        FUN_00236c80();\n        piVar9 = *(int **)(iVar3 + 0x28);\n      }" ({ "{") (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = pcVar2[2];" (assignment_expression "cVar1 = pcVar2[2]" (identifier "cVar1") (= "=") (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (4 < (byte)(cVar1 - 0x31U)) {\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" (if "if") (parenthesized_expression "(4 < (byte)(cVar1 - 0x31U))" (( "(") (binary_expression "4 < (byte)(cVar1 - 0x31U)" (number_literal "4") (< "<") (call_expression "(byte)(cVar1 - 0x31U)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar1 - 0x31U)" (( "(") (binary_expression "cVar1 - 0x31U" (identifier "cVar1") (- "-") (number_literal "0x31U")) () ")")))) () ")")) (compound_statement "{\n          cVar1 = pcVar2[1];\n          puVar4 = (uint *)0x0;\n          goto joined_r0x00237c91;\n        }" ({ "{") (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" (identifier "cVar1") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 3;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 3" (identifier "pcVar2") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" (* "*") (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4)" (( "(") (binary_expression "unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4" (binary_expression "unaff_EDI + 0x38fa9" (identifier "unaff_EDI") (+ "+") (number_literal "0x38fa9")) (+ "+") (binary_expression "(uint)(byte)(cVar1 - 0x31U) * 4" (call_expression "(uint)(byte)(cVar1 - 0x31U)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(cVar1 - 0x31U)" (( "(") (binary_expression "cVar1 - 0x31U" (identifier "cVar1") (- "-") (number_literal "0x31U")) () ")"))) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "FUN_00236c80();" (call_expression "FUN_00236c80()" (identifier "FUN_00236c80") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar9 = *(int **)(iVar3 + 0x28);" (assignment_expression "piVar9 = *(int **)(iVar3 + 0x28)" (identifier "piVar9") (= "=") (pointer_expression "*(int **)(iVar3 + 0x28)" (* "*") (cast_expression "(int **)(iVar3 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0x28)" (( "(") (binary_expression "iVar3 + 0x28" (identifier "iVar3") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" (else "else") (compound_statement "{\n        bVar14 = pcVar2[1] - 0x31;\n        if (4 < bVar14) {\n          return (uint *)0x0;\n        }\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);\n      }" ({ "{") (expression_statement "bVar14 = pcVar2[1] - 0x31;" (assignment_expression "bVar14 = pcVar2[1] - 0x31" (identifier "bVar14") (= "=") (binary_expression "pcVar2[1] - 0x31" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (- "-") (number_literal "0x31"))) (; ";")) (if_statement "if (4 < bVar14) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(4 < bVar14)" (( "(") (binary_expression "4 < bVar14" (number_literal "4") (< "<") (identifier "bVar14")) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);" (assignment_expression "uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" (* "*") (cast_expression "(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4)" (( "(") (binary_expression "unaff_EDI + 0x38fa9 + (uint)bVar14 * 4" (binary_expression "unaff_EDI + 0x38fa9" (identifier "unaff_EDI") (+ "+") (number_literal "0x38fa9")) (+ "+") (binary_expression "(uint)bVar14 * 4" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" (if "if") (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" (( "(") (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(iVar3 + 0x18)" (* "*") (cast_expression "(int *)(iVar3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n        puVar4[1] = 0;\n        *(int *)(iVar3 + 0x14) = iVar8 + 1;\n        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }\n      }" ({ "{") (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (identifier "puVar4") (= "=") (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" (identifier "iVar8") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" (if "if") (parenthesized_expression "((piVar9 != (int *)0x0) && (uVar5 - 1 < 5))" (( "(") (binary_expression "(piVar9 != (int *)0x0) && (uVar5 - 1 < 5)" (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(uVar5 - 1 < 5)" (( "(") (binary_expression "uVar5 - 1 < 5" (binary_expression "uVar5 - 1" (identifier "uVar5") (- "-") (number_literal "1")) (< "<") (number_literal "5")) () ")"))) () ")")) (compound_statement "{\n          puVar4[1] = 0;\n          *puVar4 = 7;\n          puVar4[2] = uVar5;\n          puVar4[3] = (uint)piVar9;\n          goto LAB_00237bbc;\n        }" ({ "{") (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar4 = 7;" (assignment_expression "*puVar4 = 7" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "7")) (; ";")) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar4[3] = (uint)piVar9;" (assignment_expression "puVar4[3] = (uint)piVar9" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(uint)piVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar9"))) (; ";")) (goto_statement "goto LAB_00237bbc;" (goto "goto") (statement_identifier "LAB_00237bbc") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00237f40:\n      puVar4 = (uint *)0x0;" (statement_identifier "LAB_00237f40") (: ":") (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";"))) (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" (identifier "cVar1") (= "=") (pointer_expression "**(char **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (if_statement "if (cVar1 == 'L') {\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }\n    else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(cVar1 == 'L')" (( "(") (binary_expression "cVar1 == 'L'" (identifier "cVar1") (== "==") (char_literal "'L'" (' "'") (character "L") (' "'"))) () ")")) (compound_statement "{\n      *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n      puVar4 = (uint *)FUN_00235660();\n      if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }\n      iVar8 = FUN_00235b00();\n      if (iVar8 == 0) {\n        return (uint *)0x0;\n      }\n    }" ({ "{") (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00235660();" (assignment_expression "puVar4 = (uint *)FUN_00235660()" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00235660()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00235660()" (identifier "FUN_00235660") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar4 == (uint *)0x0) {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(puVar4 == (uint *)0x0)" (( "(") (binary_expression "puVar4 == (uint *)0x0" (identifier "puVar4") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "iVar8 = FUN_00235b00();" (assignment_expression "iVar8 = FUN_00235b00()" (identifier "iVar8") (= "=") (call_expression "FUN_00235b00()" (identifier "FUN_00235b00") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar8 == 0) {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(iVar8 == 0)" (( "(") (binary_expression "iVar8 == 0" (identifier "iVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" (else "else") (compound_statement "{\n      if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }\n      if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n    }" ({ "{") (if_statement "if (cVar1 != 'U') {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(cVar1 != 'U')" (( "(") (binary_expression "cVar1 != 'U'" (identifier "cVar1") (!= "!=") (char_literal "'U'" (' "'") (character "U") (' "'"))) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (pcVar2[1] == 'l') {\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }\n      else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" (if "if") (parenthesized_expression "(pcVar2[1] == 'l')" (( "(") (binary_expression "pcVar2[1] == 'l'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'l'" (' "'") (character "l") (' "'"))) () ")")) (compound_statement "{\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 'l') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_00237790();\n        if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" ({ "{") (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" (identifier "cVar1") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (cVar1 != 'l') goto joined_r0x00237c91;" (if "if") (parenthesized_expression "(cVar1 != 'l')" (( "(") (binary_expression "cVar1 != 'l'" (identifier "cVar1") (!= "!=") (char_literal "'l'" (' "'") (character "l") (' "'"))) () ")")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";"))) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar5 = FUN_00237790();" (assignment_expression "uVar5 = FUN_00237790()" (identifier "uVar5") (= "=") (call_expression "FUN_00237790()" (identifier "FUN_00237790") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (uVar5 != 0) {\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" (if "if") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          cVar1 = **(char **)(iVar3 + 0xc);\n          if (cVar1 != 'E') goto joined_r0x00237c91;\n          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;\n          uVar7 = FUN_002355c0();\n          if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" ({ "{") (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" (identifier "cVar1") (= "=") (pointer_expression "**(char **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (if_statement "if (cVar1 != 'E') goto joined_r0x00237c91;" (if "if") (parenthesized_expression "(cVar1 != 'E')" (( "(") (binary_expression "cVar1 != 'E'" (identifier "cVar1") (!= "!=") (char_literal "'E'" (' "'") (character "E") (' "'"))) () ")")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";"))) (expression_statement "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(char **)(iVar3 + 0xc) + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = FUN_002355c0();" (assignment_expression "uVar7 = FUN_002355c0()" (identifier "uVar7") (= "=") (call_expression "FUN_002355c0()" (identifier "FUN_002355c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (-1 < (int)uVar7) {\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" (if "if") (parenthesized_expression "(-1 < (int)uVar7)" (( "(") (binary_expression "-1 < (int)uVar7" (number_literal "-1") (< "<") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) () ")")) (compound_statement "{\n            iVar8 = *(int *)(iVar3 + 0x14);\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }\n            cVar1 = *pcVar2;\n            puVar4 = (uint *)0x0;\n            goto joined_r0x00237c91;\n          }" ({ "{") (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" (if "if") (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" (( "(") (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(iVar3 + 0x18)" (* "*") (cast_expression "(int *)(iVar3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n              puVar4[1] = 0;\n              *(int *)(iVar3 + 0x14) = iVar8 + 1;\n              puVar4[3] = uVar7;\n              iVar8 = *(int *)(iVar3 + 0x20);\n              *puVar4 = 0x45;\n              puVar4[2] = uVar5;\n              if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }\n            }" ({ "{") (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (identifier "puVar4") (= "=") (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" (identifier "iVar8") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar4[3] = uVar7;" (assignment_expression "puVar4[3] = uVar7" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar3 + 0x20)" (* "*") (cast_expression "(int *)(iVar3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*puVar4 = 0x45;" (assignment_expression "*puVar4 = 0x45" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x45")) (; ";")) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" (if "if") (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" (( "(") (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(iVar3 + 0x24)" (* "*") (cast_expression "(int *)(iVar3 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (compound_statement "{\n                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n                *(int *)(iVar3 + 0x20) = iVar8 + 1;\n                cVar1 = *pcVar2;\n                goto joined_r0x00237c91;\n              }" ({ "{") (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" (* "*") (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" (( "(") (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" (* "*") (cast_expression "(int *)(iVar3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" (* "*") (cast_expression "(int *)(iVar3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" (identifier "cVar1") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (} "}"))) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" (identifier "cVar1") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (goto_statement "goto LAB_00237f40;" (goto "goto") (statement_identifier "LAB_00237f40") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" (else "else") (compound_statement "{\n        if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }\n        puVar4 = (uint *)0x0;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 1;\n        cVar1 = pcVar2[1];\n        if (cVar1 != 't') goto joined_r0x00237c91;\n        *(char **)(iVar3 + 0xc) = pcVar2 + 2;\n        uVar5 = FUN_002355c0();\n        if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }\n      }" ({ "{") (if_statement "if (pcVar2[1] != 't') {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(pcVar2[1] != 't')" (( "(") (binary_expression "pcVar2[1] != 't'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'t'" (' "'") (character "t") (' "'"))) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = pcVar2[1];" (assignment_expression "cVar1 = pcVar2[1]" (identifier "cVar1") (= "=") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (cVar1 != 't') goto joined_r0x00237c91;" (if "if") (parenthesized_expression "(cVar1 != 't')" (( "(") (binary_expression "cVar1 != 't'" (identifier "cVar1") (!= "!=") (char_literal "'t'" (' "'") (character "t") (' "'"))) () ")")) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";"))) (expression_statement "*(char **)(iVar3 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(iVar3 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "uVar5 = FUN_002355c0();" (assignment_expression "uVar5 = FUN_002355c0()" (identifier "uVar5") (= "=") (call_expression "FUN_002355c0()" (identifier "FUN_002355c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (-1 < (int)uVar5) {\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" (if "if") (parenthesized_expression "(-1 < (int)uVar5)" (( "(") (binary_expression "-1 < (int)uVar5" (number_literal "-1") (< "<") (cast_expression "(int)uVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar5"))) () ")")) (compound_statement "{\n          iVar8 = *(int *)(iVar3 + 0x14);\n          if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }\n          goto LAB_00237f40;\n        }" ({ "{") (expression_statement "iVar8 = *(int *)(iVar3 + 0x14);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x14)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x18)) {\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" (if "if") (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x18))" (( "(") (binary_expression "iVar8 < *(int *)(iVar3 + 0x18)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(iVar3 + 0x18)" (* "*") (cast_expression "(int *)(iVar3 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (compound_statement "{\n            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));\n            puVar4[1] = 0;\n            *(int *)(iVar3 + 0x14) = iVar8 + 1;\n            pcVar2 = *(char **)(iVar3 + 0xc);\n            puVar4[2] = uVar5;\n            iVar8 = *(int *)(iVar3 + 0x20);\n            *puVar4 = 0x47;\n            if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }\n            goto joined_r0x00237c91;\n          }" ({ "{") (expression_statement "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (identifier "puVar4") (= "=") (cast_expression "(uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (binary_expression "iVar8 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar8 * 0x10" (identifier "iVar8") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "puVar4[1] = 0;" (assignment_expression "puVar4[1] = 0" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(iVar3 + 0x14) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x14) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x14)" (* "*") (cast_expression "(int *)(iVar3 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x14)" (( "(") (binary_expression "iVar3 + 0x14" (identifier "iVar3") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar2 = *(char **)(iVar3 + 0xc);" (assignment_expression "pcVar2 = *(char **)(iVar3 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar4[2] = uVar5;" (assignment_expression "puVar4[2] = uVar5" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "iVar8 = *(int *)(iVar3 + 0x20);" (assignment_expression "iVar8 = *(int *)(iVar3 + 0x20)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar3 + 0x20)" (* "*") (cast_expression "(int *)(iVar3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "*puVar4 = 0x47;" (assignment_expression "*puVar4 = 0x47" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0x47")) (; ";")) (if_statement "if (iVar8 < *(int *)(iVar3 + 0x24)) {\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }\n            else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" (if "if") (parenthesized_expression "(iVar8 < *(int *)(iVar3 + 0x24))" (( "(") (binary_expression "iVar8 < *(int *)(iVar3 + 0x24)" (identifier "iVar8") (< "<") (pointer_expression "*(int *)(iVar3 + 0x24)" (* "*") (cast_expression "(int *)(iVar3 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x24)" (( "(") (binary_expression "iVar3 + 0x24" (identifier "iVar3") (+ "+") (number_literal "0x24")) () ")"))))) () ")")) (compound_statement "{\n              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;\n              *(int *)(iVar3 + 0x20) = iVar8 + 1;\n              cVar1 = *pcVar2;\n            }" ({ "{") (expression_statement "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;" (assignment_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4" (pointer_expression "*(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" (* "*") (cast_expression "(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 0x1c) + iVar8 * 4)" (( "(") (binary_expression "*(int *)(iVar3 + 0x1c) + iVar8 * 4" (pointer_expression "*(int *)(iVar3 + 0x1c)" (* "*") (cast_expression "(int *)(iVar3 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")")))) (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(int *)(iVar3 + 0x20) = iVar8 + 1;" (assignment_expression "*(int *)(iVar3 + 0x20) = iVar8 + 1" (pointer_expression "*(int *)(iVar3 + 0x20)" (* "*") (cast_expression "(int *)(iVar3 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x20)" (( "(") (binary_expression "iVar3 + 0x20" (identifier "iVar3") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" (identifier "cVar1") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (} "}")) (else_clause "else {\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" (else "else") (compound_statement "{\n              cVar1 = *pcVar2;\n              puVar4 = (uint *)0x0;\n            }" ({ "{") (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" (identifier "cVar1") (= "=") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2"))) (; ";")) (expression_statement "puVar4 = (uint *)0x0;" (assignment_expression "puVar4 = (uint *)0x0" (identifier "puVar4") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (goto_statement "goto joined_r0x00237c91;" (goto "goto") (statement_identifier "joined_r0x00237c91") (; ";")) (} "}"))) (goto_statement "goto LAB_00237f40;" (goto "goto") (statement_identifier "LAB_00237f40") (; ";")) (} "}"))) (} "}")))) (} "}")))) (} "}")))) (labeled_statement "LAB_00237bbc:\n  cVar1 = **(char **)(iVar3 + 0xc);" (statement_identifier "LAB_00237bbc") (: ":") (expression_statement "cVar1 = **(char **)(iVar3 + 0xc);" (assignment_expression "cVar1 = **(char **)(iVar3 + 0xc)" (identifier "cVar1") (= "=") (pointer_expression "**(char **)(iVar3 + 0xc)" (* "*") (pointer_expression "*(char **)(iVar3 + 0xc)" (* "*") (cast_expression "(char **)(iVar3 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))))) (; ";"))) (labeled_statement "joined_r0x00237c91:\n  if (cVar1 != 'B') {\n    return puVar4;\n  }" (statement_identifier "joined_r0x00237c91") (: ":") (if_statement "if (cVar1 != 'B') {\n    return puVar4;\n  }" (if "if") (parenthesized_expression "(cVar1 != 'B')" (( "(") (binary_expression "cVar1 != 'B'" (identifier "cVar1") (!= "!=") (char_literal "'B'" (' "'") (character "B") (' "'"))) () ")")) (compound_statement "{\n    return puVar4;\n  }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))) (expression_statement "puVar4 = (uint *)FUN_002357e0();" (assignment_expression "puVar4 = (uint *)FUN_002357e0()" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_002357e0()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002357e0()" (identifier "FUN_002357e0") (argument_list "()" (( "(") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))

type_1 * function_1(void)

{
  char var_3;
  char *var_5;
  int var_2;
  type_1 *var_7;
  type_1 var_17;
  type_2 uVar6;
  type_1 uVar7;
  int var_9;
  int *var_14;
  type_3 *var_10;
  int var_8;
  type_3 *var_11;
  bool var_12;
  bool bVar13;
  type_3 var_16;
  
  var_16 = 0;
  var_2 = var_1();
  var_5 = *(char **)(var_2 + 0xc);
  var_3 = *var_5;
  if ((type_3)(var_3 - 0x30U) < 10) {
    var_7 = (type_1 *)var_4();
    var_3 = **(char **)(var_2 + 0xc);
    goto joined_r0x00237c91;
  }
  if ((type_3)(var_3 + 0x9fU) < 0x1a) {
    if ((var_3 == 'o') && (var_5[1] == 'n')) {
      *(char **)(var_2 + 0xc) = var_5 + 2;
    }
    var_7 = (type_1 *)var_6();
    if (var_7 != (type_1 *)0x0) {
      var_12 = *var_7 < 0x31;
      bVar13 = *var_7 == 0x31;
      if (bVar13) {
        var_10 = *(type_3 **)var_7[2];
        var_9 = 3;
        *(int *)(var_2 + 0x2c) = *(int *)(var_2 + 0x2c) + 7 + ((type_2 *)var_7[2])[2];
        var_11 = (type_3 *)(var_8 + 0x32f73);
        do {
          if (var_9 == 0) break;
          var_9 = var_9 + -1;
          var_12 = *var_10 < *var_11;
          bVar13 = *var_10 == *var_11;
          var_10 = var_10 + (type_1)var_16 * -2 + 1;
          var_11 = var_11 + (type_1)var_16 * -2 + 1;
        } while (bVar13);
        if ((!var_12 && !bVar13) == var_12) {
          uVar6 = var_4();
          var_7 = (type_1 *)var_13(uVar6);
          var_3 = **(char **)(var_2 + 0xc);
          goto joined_r0x00237c91;
        }
      }
    }
  }
  else {
    if ((type_3)(var_3 + 0xbdU) < 2) {
      var_14 = *(int **)(var_2 + 0x28);
      if ((var_14 == (int *)0x0) || ((*var_14 != 0 && (*var_14 != 0x18)))) {
        if (var_3 == 'D') goto LAB_00237e09;
      }
      else {
        *(int *)(var_2 + 0x2c) = *(int *)(var_2 + 0x2c) + var_14[3];
        var_3 = *var_5;
        if (var_3 != 'C') {
          if (var_3 != 'D') {
            var_7 = (type_1 *)0x0;
            goto joined_r0x00237c91;
          }
LAB_00237e09:
          if (5 < (type_3)(var_5[1] - 0x30U)) {
            return (type_1 *)0x0;
          }
                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          var_7 = (type_1 *)(*(type_4 *)(var_8 + 0x107489 +
                                     *(int *)(var_8 + 0x38b71 +
                                             (type_1)(type_3)(var_5[1] - 0x30U) * 4)))();
          return var_7;
        }
      }
      if (var_5[1] == 'I') {
        *(char **)(var_2 + 0xc) = var_5 + 1;
        var_3 = var_5[2];
        if (4 < (type_3)(var_3 - 0x31U)) {
          var_3 = var_5[1];
          var_7 = (type_1 *)0x0;
          goto joined_r0x00237c91;
        }
        *(char **)(var_2 + 0xc) = var_5 + 3;
        var_17 = *(type_1 *)(var_8 + 0x38fa9 + (type_1)(type_3)(var_3 - 0x31U) * 4);
        var_15();
        var_14 = *(int **)(var_2 + 0x28);
      }
      else {
        var_16 = var_5[1] - 0x31;
        if (4 < var_16) {
          return (type_1 *)0x0;
        }
        *(char **)(var_2 + 0xc) = var_5 + 2;
        var_17 = *(type_1 *)(var_8 + 0x38fa9 + (type_1)var_16 * 4);
      }
      var_9 = *(int *)(var_2 + 0x14);
      if (var_9 < *(int *)(var_2 + 0x18)) {
        var_7 = (type_1 *)(var_9 * 0x10 + *(int *)(var_2 + 0x10));
        var_7[1] = 0;
        *(int *)(var_2 + 0x14) = var_9 + 1;
        if ((var_14 != (int *)0x0) && (var_17 - 1 < 5)) {
          var_7[1] = 0;
          *var_7 = 7;
          var_7[2] = var_17;
          var_7[3] = (type_1)var_14;
          goto LAB_00237bbc;
        }
      }
LAB_00237f40:
      var_7 = (type_1 *)0x0;
      var_3 = **(char **)(var_2 + 0xc);
      goto joined_r0x00237c91;
    }
    if (var_3 == 'L') {
      *(char **)(var_2 + 0xc) = var_5 + 1;
      var_7 = (type_1 *)var_4();
      if (var_7 == (type_1 *)0x0) {
        return (type_1 *)0x0;
      }
      var_9 = var_18();
      if (var_9 == 0) {
        return (type_1 *)0x0;
      }
    }
    else {
      if (var_3 != 'U') {
        return (type_1 *)0x0;
      }
      if (var_5[1] == 'l') {
        var_7 = (type_1 *)0x0;
        *(char **)(var_2 + 0xc) = var_5 + 1;
        var_3 = var_5[1];
        if (var_3 != 'l') goto joined_r0x00237c91;
        *(char **)(var_2 + 0xc) = var_5 + 2;
        var_17 = var_19();
        if (var_17 != 0) {
          var_3 = **(char **)(var_2 + 0xc);
          if (var_3 != 'E') goto joined_r0x00237c91;
          *(char **)(var_2 + 0xc) = *(char **)(var_2 + 0xc) + 1;
          uVar7 = var_20();
          if (-1 < (int)uVar7) {
            var_9 = *(int *)(var_2 + 0x14);
            var_5 = *(char **)(var_2 + 0xc);
            if (var_9 < *(int *)(var_2 + 0x18)) {
              var_7 = (type_1 *)(var_9 * 0x10 + *(int *)(var_2 + 0x10));
              var_7[1] = 0;
              *(int *)(var_2 + 0x14) = var_9 + 1;
              var_7[3] = uVar7;
              var_9 = *(int *)(var_2 + 0x20);
              *var_7 = 0x45;
              var_7[2] = var_17;
              if (var_9 < *(int *)(var_2 + 0x24)) {
                *(type_1 **)(*(int *)(var_2 + 0x1c) + var_9 * 4) = var_7;
                *(int *)(var_2 + 0x20) = var_9 + 1;
                var_3 = *var_5;
                goto joined_r0x00237c91;
              }
            }
            var_3 = *var_5;
            var_7 = (type_1 *)0x0;
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
      else {
        if (var_5[1] != 't') {
          return (type_1 *)0x0;
        }
        var_7 = (type_1 *)0x0;
        *(char **)(var_2 + 0xc) = var_5 + 1;
        var_3 = var_5[1];
        if (var_3 != 't') goto joined_r0x00237c91;
        *(char **)(var_2 + 0xc) = var_5 + 2;
        var_17 = var_20();
        if (-1 < (int)var_17) {
          var_9 = *(int *)(var_2 + 0x14);
          if (var_9 < *(int *)(var_2 + 0x18)) {
            var_7 = (type_1 *)(var_9 * 0x10 + *(int *)(var_2 + 0x10));
            var_7[1] = 0;
            *(int *)(var_2 + 0x14) = var_9 + 1;
            var_5 = *(char **)(var_2 + 0xc);
            var_7[2] = var_17;
            var_9 = *(int *)(var_2 + 0x20);
            *var_7 = 0x47;
            if (var_9 < *(int *)(var_2 + 0x24)) {
              *(type_1 **)(*(int *)(var_2 + 0x1c) + var_9 * 4) = var_7;
              *(int *)(var_2 + 0x20) = var_9 + 1;
              var_3 = *var_5;
            }
            else {
              var_3 = *var_5;
              var_7 = (type_1 *)0x0;
            }
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
    }
  }
LAB_00237bbc:
  var_3 = **(char **)(var_2 + 0xc);
joined_r0x00237c91:
  if (var_3 != 'B') {
    return var_7;
  }
  var_7 = (type_1 *)var_21();
  return var_7;
}


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

uint * MASKED(void)

{
  char cVar1;
  char *pcVar2;
  int iVar3;
  uint *puVar4;
  uint uVar5;
  undefined4 uVar6;
  uint uVar7;
  int iVar8;
  int *piVar9;
  byte *pbVar10;
  int unaff_EDI;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  
  bVar14 = 0;
  iVar3 = FUN_00058c4a();
  pcVar2 = *(char **)(iVar3 + 0xc);
  cVar1 = *pcVar2;
  if ((byte)(cVar1 - 0x30U) < 10) {
    puVar4 = (uint *)FUN_00235660();
    cVar1 = **(char **)(iVar3 + 0xc);
    goto joined_r0x00237c91;
  }
  if ((byte)(cVar1 + 0x9fU) < 0x1a) {
    if ((cVar1 == 'o') && (pcVar2[1] == 'n')) {
      *(char **)(iVar3 + 0xc) = pcVar2 + 2;
    }
    puVar4 = (uint *)FUN_002375d0();
    if (puVar4 != (uint *)0x0) {
      bVar12 = *puVar4 < 0x31;
      bVar13 = *puVar4 == 0x31;
      if (bVar13) {
        pbVar10 = *(byte **)puVar4[2];
        iVar8 = 3;
        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + 7 + ((undefined4 *)puVar4[2])[2];
        pbVar11 = (byte *)(unaff_EDI + 0x32f73);
        do {
          if (iVar8 == 0) break;
          iVar8 = iVar8 + -1;
          bVar12 = *pbVar10 < *pbVar11;
          bVar13 = *pbVar10 == *pbVar11;
          pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;
          pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;
        } while (bVar13);
        if ((!bVar12 && !bVar13) == bVar12) {
          uVar6 = FUN_00235660();
          puVar4 = (uint *)FUN_002352d0(uVar6);
          cVar1 = **(char **)(iVar3 + 0xc);
          goto joined_r0x00237c91;
        }
      }
    }
  }
  else {
    if ((byte)(cVar1 + 0xbdU) < 2) {
      piVar9 = *(int **)(iVar3 + 0x28);
      if ((piVar9 == (int *)0x0) || ((*piVar9 != 0 && (*piVar9 != 0x18)))) {
        if (cVar1 == 'D') goto LAB_00237e09;
      }
      else {
        *(int *)(iVar3 + 0x2c) = *(int *)(iVar3 + 0x2c) + piVar9[3];
        cVar1 = *pcVar2;
        if (cVar1 != 'C') {
          if (cVar1 != 'D') {
            puVar4 = (uint *)0x0;
            goto joined_r0x00237c91;
          }
LAB_00237e09:
          if (5 < (byte)(pcVar2[1] - 0x30U)) {
            return (uint *)0x0;
          }
                    /* WARNING: Could not recover jumptable at 0x00237e22. Too many branches */
                    /* WARNING: Treating indirect jump as call */
          puVar4 = (uint *)(*(code *)(unaff_EDI + 0x107489 +
                                     *(int *)(unaff_EDI + 0x38b71 +
                                             (uint)(byte)(pcVar2[1] - 0x30U) * 4)))();
          return puVar4;
        }
      }
      if (pcVar2[1] == 'I') {
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[2];
        if (4 < (byte)(cVar1 - 0x31U)) {
          cVar1 = pcVar2[1];
          puVar4 = (uint *)0x0;
          goto joined_r0x00237c91;
        }
        *(char **)(iVar3 + 0xc) = pcVar2 + 3;
        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)(byte)(cVar1 - 0x31U) * 4);
        FUN_00236c80();
        piVar9 = *(int **)(iVar3 + 0x28);
      }
      else {
        bVar14 = pcVar2[1] - 0x31;
        if (4 < bVar14) {
          return (uint *)0x0;
        }
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = *(uint *)(unaff_EDI + 0x38fa9 + (uint)bVar14 * 4);
      }
      iVar8 = *(int *)(iVar3 + 0x14);
      if (iVar8 < *(int *)(iVar3 + 0x18)) {
        puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
        puVar4[1] = 0;
        *(int *)(iVar3 + 0x14) = iVar8 + 1;
        if ((piVar9 != (int *)0x0) && (uVar5 - 1 < 5)) {
          puVar4[1] = 0;
          *puVar4 = 7;
          puVar4[2] = uVar5;
          puVar4[3] = (uint)piVar9;
          goto LAB_00237bbc;
        }
      }
LAB_00237f40:
      puVar4 = (uint *)0x0;
      cVar1 = **(char **)(iVar3 + 0xc);
      goto joined_r0x00237c91;
    }
    if (cVar1 == 'L') {
      *(char **)(iVar3 + 0xc) = pcVar2 + 1;
      puVar4 = (uint *)FUN_00235660();
      if (puVar4 == (uint *)0x0) {
        return (uint *)0x0;
      }
      iVar8 = FUN_00235b00();
      if (iVar8 == 0) {
        return (uint *)0x0;
      }
    }
    else {
      if (cVar1 != 'U') {
        return (uint *)0x0;
      }
      if (pcVar2[1] == 'l') {
        puVar4 = (uint *)0x0;
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[1];
        if (cVar1 != 'l') goto joined_r0x00237c91;
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = FUN_00237790();
        if (uVar5 != 0) {
          cVar1 = **(char **)(iVar3 + 0xc);
          if (cVar1 != 'E') goto joined_r0x00237c91;
          *(char **)(iVar3 + 0xc) = *(char **)(iVar3 + 0xc) + 1;
          uVar7 = FUN_002355c0();
          if (-1 < (int)uVar7) {
            iVar8 = *(int *)(iVar3 + 0x14);
            pcVar2 = *(char **)(iVar3 + 0xc);
            if (iVar8 < *(int *)(iVar3 + 0x18)) {
              puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
              puVar4[1] = 0;
              *(int *)(iVar3 + 0x14) = iVar8 + 1;
              puVar4[3] = uVar7;
              iVar8 = *(int *)(iVar3 + 0x20);
              *puVar4 = 0x45;
              puVar4[2] = uVar5;
              if (iVar8 < *(int *)(iVar3 + 0x24)) {
                *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;
                *(int *)(iVar3 + 0x20) = iVar8 + 1;
                cVar1 = *pcVar2;
                goto joined_r0x00237c91;
              }
            }
            cVar1 = *pcVar2;
            puVar4 = (uint *)0x0;
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
      else {
        if (pcVar2[1] != 't') {
          return (uint *)0x0;
        }
        puVar4 = (uint *)0x0;
        *(char **)(iVar3 + 0xc) = pcVar2 + 1;
        cVar1 = pcVar2[1];
        if (cVar1 != 't') goto joined_r0x00237c91;
        *(char **)(iVar3 + 0xc) = pcVar2 + 2;
        uVar5 = FUN_002355c0();
        if (-1 < (int)uVar5) {
          iVar8 = *(int *)(iVar3 + 0x14);
          if (iVar8 < *(int *)(iVar3 + 0x18)) {
            puVar4 = (uint *)(iVar8 * 0x10 + *(int *)(iVar3 + 0x10));
            puVar4[1] = 0;
            *(int *)(iVar3 + 0x14) = iVar8 + 1;
            pcVar2 = *(char **)(iVar3 + 0xc);
            puVar4[2] = uVar5;
            iVar8 = *(int *)(iVar3 + 0x20);
            *puVar4 = 0x47;
            if (iVar8 < *(int *)(iVar3 + 0x24)) {
              *(uint **)(*(int *)(iVar3 + 0x1c) + iVar8 * 4) = puVar4;
              *(int *)(iVar3 + 0x20) = iVar8 + 1;
              cVar1 = *pcVar2;
            }
            else {
              cVar1 = *pcVar2;
              puVar4 = (uint *)0x0;
            }
            goto joined_r0x00237c91;
          }
          goto LAB_00237f40;
        }
      }
    }
  }
LAB_00237bbc:
  cVar1 = **(char **)(iVar3 + 0xc);
joined_r0x00237c91:
  if (cVar1 != 'B') {
    return puVar4;
  }
  puVar4 = (uint *)FUN_002357e0();
  return puVar4;
}

