
debug_type
parse_stab_type(void *dhandle,stab_handle *info,char *type_name,char **pp,
               debug_type_conflict **slotp,char *p_end)

{
  byte bVar1;
  byte *p_00;
  int iVar2;
  bfd_boolean bVar3;
  bfd *pbVar4;
  long lVar5;
  debug_type_conflict *ppdVar6;
  debug_type pdVar7;
  debug_type target_type;
  debug_type_conflict type;
  stab_handle *info_00;
  uint uVar8;
  char *pcVar9;
  byte *pbVar10;
  byte *pbVar11;
  int unaff_EDI;
  debug_type_conflict **slotp_00;
  undefined8 uVar12;
  char **pp_00;
  char *p_end_00;
  uint local_e0;
  byte local_dc;
  bfd_boolean varargs;
  bfd_boolean varargs_1;
  char *p;
  int typenums [2];
  int xtypenums [2];
  
  uVar12 = __x86_get_pc_thunk_di();
  info_00 = (stab_handle *)((ulonglong)uVar12 >> 0x20);
  p_end_00 = (char *)uVar12;
  slotp_00 = (debug_type_conflict **)(unaff_EDI + 0x1ca09);
  if (info != (stab_handle *)0x0) {
    info->abfd = (bfd *)0x0;
  }
                    /* WARNING: Load size is inaccurate */
  p_00 = *dhandle;
  if (type_name <= p_00) {
    return (debug_type)0x0;
  }
  info_00->self_crossref = 0;
  iVar2 = *(int *)(&UNK_0001c9bd + unaff_EDI);
  bVar1 = *p_00;
  if (((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {
    pbVar11 = p_00 + 1;
    typenums[1] = -1;
    typenums[0] = -1;
    local_dc = *p_00;
LAB_0002379c:
    *(byte **)dhandle = pbVar11;
    if ((byte)(local_dc - 0x23) < 0x56) {
                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      pdVar7 = (debug_type)
               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();
      return pdVar7;
    }
  }
  else {
    pp_00 = (char **)0x2368c;
    bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);
    if (bVar3 == 0) {
      return (debug_type)0x0;
    }
                    /* WARNING: Load size is inaccurate */
    pcVar9 = *dhandle;
    if (*pcVar9 != '=') {
      pdVar7 = stab_find_type(p_end_00,info_00,typenums);
      return pdVar7;
    }
    if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {
      pp_00 = (char **)0x236d1;
      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,
                                     (stab_handle *)typenums);
      info->abfd = pbVar4;
                    /* WARNING: Load size is inaccurate */
      pcVar9 = *dhandle;
    }
    local_e0 = 0xffffffff;
    *(char **)dhandle = pcVar9 + 1;
    pbVar11 = (byte *)(pcVar9 + 1);
    do {
      while( true ) {
        do {
          pbVar10 = pbVar11;
          local_dc = *pbVar10;
          pbVar11 = pbVar10 + 1;
          if (local_dc != 0x40) goto LAB_0002379c;
          bVar1 = pbVar10[1];
          uVar8 = (uint)bVar1;
          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {
            *(byte **)dhandle = pbVar11;
            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);
            if (pdVar7 == (debug_type)0x0) {
              return (debug_type)0x0;
            }
                    /* WARNING: Load size is inaccurate */
            if (**dhandle == ',') {
              *(char **)dhandle = *dhandle + 1;
              pcVar9 = p_end_00;
              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,
                                            p_end_00);
              if (target_type == (debug_type)0x0) {
                return (debug_type)0x0;
              }
              type = debug_make_offset_type(p_end_00,pdVar7,target_type);
              if (type == (debug_type_conflict)0x0) {
                return (debug_type)0x0;
              }
              if (typenums[0] != -1) {
                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,
                                         (stab_handle *)typenums);
                if (ppdVar6 == (debug_type_conflict *)0x0) {
                  return (debug_type)0x0;
                }
                *ppdVar6 = type;
              }
              if (local_e0 != 0xffffffff) {
                bVar3 = debug_record_type_size(pcVar9,type,local_e0);
                if (bVar3 == 0) {
                  return (debug_type)0x0;
                }
                return type;
              }
              return type;
            }
            goto _L900;
          }
          while ((char)uVar8 != ';') {
            if ((char)uVar8 == '\0') goto _L900;
            pbVar11 = pbVar11 + 1;
            uVar8 = (uint)*pbVar11;
          }
          pbVar11 = pbVar11 + 1;
          *(byte **)dhandle = pbVar11;
          bVar1 = pbVar10[1];
        } while (bVar1 == 0x53);
        if (bVar1 != 0x73) break;
        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);
        if (lVar5 < 8) {
          local_e0 = 0xffffffff;
                    /* WARNING: Load size is inaccurate */
          pbVar11 = *dhandle;
        }
        else {
          local_e0 = lVar5 >> 3;
                    /* WARNING: Load size is inaccurate */
          pbVar11 = *dhandle;
        }
      }
    } while (bVar1 != 0);
  }
_L900:
  bad_stab((char *)p_00);
  return (debug_type)0x0;
}



int FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  long lVar4;
  int *piVar5;
  int iVar6;
  uint uVar7;
  char *pcVar8;
  byte *pbVar9;
  byte *pbVar10;
  int unaff_EDI;
  int iVar11;
  undefined8 uVar12;
  undefined4 uVar13;
  int local_e0;
  byte local_dc;
  int local_40;
  int local_3c;
  
  uVar12 = FUN_0001c3b7();
  uVar13 = (undefined4)uVar12;
  iVar11 = unaff_EDI + 0x1ca09;
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = 0;
  }
  pbVar9 = (byte *)*param_1;
  if (param_3 <= pbVar9) {
    return 0;
  }
  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;
  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);
  bVar1 = *pbVar9;
  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {
    pbVar10 = pbVar9 + 1;
    local_dc = *pbVar9;
LAB_0002379c:
    *param_1 = (int)pbVar10;
    if ((byte)(local_dc - 0x23) < 0x56) {
                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()
      ;
      return iVar11;
    }
  }
  else {
    iVar2 = FUN_00020b30(iVar11,uVar13);
    if (iVar2 == 0) {
      return 0;
    }
    pcVar8 = (char *)*param_1;
    if (*pcVar8 != '=') {
      iVar11 = FUN_00020e50();
      return iVar11;
    }
    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {
      uVar3 = FUN_00020cf0();
      *param_2 = uVar3;
      pcVar8 = (char *)*param_1;
    }
    local_e0 = -1;
    *param_1 = (int)(pcVar8 + 1);
    pbVar10 = (byte *)(pcVar8 + 1);
    do {
      while( true ) {
        do {
          pbVar9 = pbVar10;
          local_dc = *pbVar9;
          pbVar10 = pbVar9 + 1;
          if (local_dc != 0x40) goto LAB_0002379c;
          bVar1 = pbVar9[1];
          uVar7 = (uint)bVar1;
          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {
            *param_1 = (int)pbVar10;
            iVar11 = FUN_000235f0(param_1,0,param_3);
            if (iVar11 == 0) {
              return 0;
            }
            if (*(char *)*param_1 == ',') {
              *param_1 = (int)((char *)*param_1 + 1);
              uVar3 = uVar13;
              iVar6 = FUN_000235f0(param_1,0,param_3);
              if (iVar6 == 0) {
                return 0;
              }
              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);
              if (iVar11 == 0) {
                return 0;
              }
              if (local_40 != -1) {
                piVar5 = (int *)FUN_00020cf0();
                if (piVar5 == (int *)0x0) {
                  return 0;
                }
                *piVar5 = iVar11;
              }
              if (local_e0 != -1) {
                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);
                if (iVar6 == 0) {
                  return 0;
                }
                return iVar11;
              }
              return iVar11;
            }
            goto LAB_00023940;
          }
          while ((char)uVar7 != ';') {
            if ((char)uVar7 == '\0') goto LAB_00023940;
            pbVar10 = pbVar10 + 1;
            uVar7 = (uint)*pbVar10;
          }
          pbVar10 = pbVar10 + 1;
          *param_1 = (int)pbVar10;
          bVar1 = pbVar9[1];
        } while (bVar1 == 0x53);
        if (bVar1 != 0x73) break;
        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);
        if (lVar4 < 8) {
          local_e0 = -1;
          pbVar10 = (byte *)*param_1;
        }
        else {
          local_e0 = lVar4 >> 3;
          pbVar10 = (byte *)*param_1;
        }
      }
    } while (bVar1 != 0);
  }
LAB_00023940:
  FUN_00020930();
  return 0;
}


PUSH EBP
PUSH EDI
CALL 0x0001c3b7
ADD EDI,0x1ca09
PUSH ESI
PUSH EBX
SUB ESP,0xec
MOV dword ptr [ESP],EDI
MOV EDI,dword ptr [ESP + 0x104]
TEST EDI,EDI
JZ 0x00023619
MOV dword ptr [EDI],0x0
MOV ESI,dword ptr [ESP + 0x100]
MOV ESI,dword ptr [ESI]
CMP ESI,dword ptr [ESP + 0x108]
JNC 0x00023928
MOV EBX,dword ptr [ESP]
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [ESP + 0x18],EDX
MOV dword ptr [EDX + 0xe8],0x0
MOV ECX,dword ptr [EBX + 0xffffffb4]
MOVZX EDX,byte ptr [ESI]
MOV dword ptr [ESP + 0x4],EAX
MOV dword ptr [ESP + 0x8],ECX
MOV EAX,EDX
TEST byte ptr [ECX + EDX*0x2],0x4
JNZ 0x00023670
CMP DL,0x28
SETNZ DL
CMP AL,0x2d
SETNZ AL
TEST DL,AL
JNZ 0x00023770
LEA EBP,[ESP + 0xbc]
MOV ECX,dword ptr [ESP + 0x108]
MOV EAX,dword ptr [ESP + 0x100]
MOV EDX,EBP
CALL 0x00020b30
TEST EAX,EAX
JZ 0x00023928
MOV EAX,dword ptr [ESP + 0x100]
MOV EBX,dword ptr [EAX]
CMP byte ptr [EBX],0x3d
JNZ 0x000239a8
TEST EDI,EDI
JZ 0x000236e0
MOV EAX,dword ptr [ESP + 0xbc]
TEST EAX,EAX
JS 0x000236e0
MOV ECX,dword ptr [ESP + 0xc0]
TEST ECX,ECX
JS 0x000236e0
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,EBP
LEA EDX,[EAX + 0x58]
ADD EAX,0x54
CALL 0x00020cf0
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ESP + 0x100]
MOV EBX,dword ptr [EAX]
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x100]
ADD EBX,0x1
MOV dword ptr [ESP + 0x1c],0xffffffff
XOR EDI,EDI
MOV dword ptr [EAX],EBX
MOVZX EAX,byte ptr [EBX]
LEA EBP,[EBX + 0x1]
CMP AL,0x40
JNZ 0x00024ac0
MOVZX EDX,byte ptr [EBX + 0x1]
MOV ECX,dword ptr [ESP + 0x8]
MOV EAX,EDX
TEST byte ptr [ECX + EDX*0x2],0x4
JNZ 0x000249ae
CMP DL,0x2d
SETZ CL
CMP DL,0x28
SETZ DL
OR CL,DL
JZ 0x0002373f
JMP 0x000249ae
TEST AL,AL
JZ 0x00023940
ADD EBP,0x1
MOVZX EAX,byte ptr [EBP]
CMP AL,0x3b
JNZ 0x00023730
MOV EAX,dword ptr [ESP + 0x100]
ADD EBP,0x1
MOV dword ptr [EAX],EBP
MOVZX EAX,byte ptr [EBX + 0x1]
CMP AL,0x53
JZ 0x00023998
CMP AL,0x73
JZ 0x00023960
TEST AL,AL
JZ 0x00023940
MOV EBX,EBP
JMP 0x000236f6
MOV dword ptr [ESP + 0x1c],0xffffffff
LEA EBP,[ESI + 0x1]
MOV EBX,ESI
XOR EDI,EDI
MOV dword ptr [ESP + 0xc0],0xffffffff
MOV dword ptr [ESP + 0xbc],0xffffffff
MOVZX EAX,byte ptr [ESI]
MOV byte ptr [ESP + 0x20],AL
MOV EAX,dword ptr [ESP + 0x100]
MOV dword ptr [EAX],EBP
MOVZX EAX,byte ptr [ESP + 0x20]
SUB EAX,0x23
CMP AL,0x55
JA 0x00023940
MOV ECX,dword ptr [ESP]
MOVZX EAX,AL
MOV EDX,dword ptr [ECX + EAX*0x4 + 0xffff4868]
ADD EDX,ECX
JMP EDX
XOR EBP,EBP
ADD ESP,0xec
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,ESI
XOR EBP,EBP
CALL 0x00020930
ADD ESP,0xec
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
ADD EBX,0x2
PUSH 0xa
PUSH 0x0
PUSH EBX
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000138c0
ADD ESP,0x10
CMP EAX,0x7
JG 0x000239c6
MOV EAX,dword ptr [ESP + 0x100]
MOV dword ptr [ESP + 0x1c],0xffffffff
MOV EBP,dword ptr [EAX]
MOV EBX,EBP
JMP 0x000236f6
MOV EDI,0x1
MOV EBX,EBP
JMP 0x000236f6
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x4]
MOV ECX,EBP
CALL 0x00020e50
ADD ESP,0xec
MOV EBP,EAX
POP EBX
POP ESI
MOV EAX,EBP
POP EDI
POP EBP
RET
SAR EAX,0x3
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [ESP + 0x100]
MOV EBP,dword ptr [EAX]
MOV EBX,EBP
JMP 0x000236f6
TEST EBP,EBP
JZ 0x00023928
CMP dword ptr [ESP + 0xbc],-0x1
JZ 0x00023aa2
MOV EAX,dword ptr [ESP + 0x18]
LEA ECX,[ESP + 0xbc]
LEA EDX,[EAX + 0x58]
ADD EAX,0x54
CALL 0x00020cf0
TEST EAX,EAX
JZ 0x00023928
MOV dword ptr [EAX],EBP
MOV EAX,dword ptr [ESP + 0x1c]
CMP EAX,-0x1
JZ 0x0002392a
SUB ESP,0x4
PUSH EAX
PUSH EBP
PUSH dword ptr [ESP + 0x10]
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x000201c0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0002392a
JMP 0x00023928
MOV EAX,dword ptr [ESP + 0x100]
MOV dword ptr [EAX],EBP
SUB ESP,0x4
XOR ECX,ECX
PUSH dword ptr [ESP + 0x10c]
PUSH 0x0
PUSH dword ptr [ESP + 0x10c]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x000235f0
ADD ESP,0x10
MOV EBX,EAX
TEST EAX,EAX
JZ 0x00023928
MOV EAX,dword ptr [ESP + 0x100]
MOV EAX,dword ptr [EAX]
CMP byte ptr [EAX],0x2c
JNZ 0x00023940
MOV EDI,dword ptr [ESP + 0x100]
ADD EAX,0x1
SUB ESP,0x4
XOR ECX,ECX
MOV dword ptr [EDI],EAX
PUSH dword ptr [ESP + 0x10c]
PUSH 0x0
PUSH dword ptr [ESP + 0x10c]
MOV EDI,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,EDI
CALL 0x000235f0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00023928
SUB ESP,0x4
PUSH EAX
PUSH EBX
PUSH EDI
MOV EBX,dword ptr [ESP + 0x10]
CALL 0x0001fc20
ADD ESP,0x10
MOV EBP,EAX
JMP 0x00023a70
MOV byte ptr [ESP + 0x20],AL
JMP 0x0002379c
(translation_unit "int FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}\n\n" (function_definition "int FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}" primitive_type (function_declarator "FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)" identifier (parameter_list "(int *param_1,undefined4 *param_2,byte *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int local_e0;" primitive_type identifier ;) (declaration "byte local_dc;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (expression_statement "uVar12 = FUN_0001c3b7();" (assignment_expression "uVar12 = FUN_0001c3b7()" identifier = (call_expression "FUN_0001c3b7()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar13 = (undefined4)uVar12;" (assignment_expression "uVar13 = (undefined4)uVar12" identifier = (cast_expression "(undefined4)uVar12" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar11 = unaff_EDI + 0x1ca09;" (assignment_expression "iVar11 = unaff_EDI + 0x1ca09" identifier = (binary_expression "unaff_EDI + 0x1ca09" identifier + number_literal)) ;) (if_statement "if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }" if (parenthesized_expression "(param_2 != (undefined4 *)0x0)" ( (binary_expression "param_2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_2 = 0;\n  }" { (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) })) (expression_statement "pbVar9 = (byte *)*param_1;" (assignment_expression "pbVar9 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (param_3 <= pbVar9) {\n    return 0;\n  }" if (parenthesized_expression "(param_3 <= pbVar9)" ( (binary_expression "param_3 <= pbVar9" identifier <= identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;" (assignment_expression "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0" (pointer_expression "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" * (cast_expression "(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" ( (binary_expression "(int)((ulonglong)uVar12 >> 0x20) + 0xe8" (cast_expression "(int)((ulonglong)uVar12 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) )))) = number_literal) ;) (expression_statement "iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);" (assignment_expression "iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI)" identifier = (pointer_expression "*(int *)(&UNK_0001c9bd + unaff_EDI)" * (cast_expression "(int *)(&UNK_0001c9bd + unaff_EDI)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001c9bd + unaff_EDI)" ( (binary_expression "&UNK_0001c9bd + unaff_EDI" (pointer_expression "&UNK_0001c9bd" & identifier) + identifier) ))))) ;) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (if_statement "if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" if (parenthesized_expression "(((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d))" ( (binary_expression "((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)" (parenthesized_expression "((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar6 + (uint)bVar1 * 2) & 4)" ( (binary_expression "*(byte *)(iVar6 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(iVar6 + (uint)bVar1 * 2)" * (cast_expression "(byte *)(iVar6 + (uint)bVar1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (uint)bVar1 * 2)" ( (binary_expression "iVar6 + (uint)bVar1 * 2" identifier + (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(bVar1 != 0x28 && bVar1 != 0x2d)" ( (binary_expression "bVar1 != 0x28 && bVar1 != 0x2d" (binary_expression "bVar1 != 0x28" identifier != number_literal) && (binary_expression "bVar1 != 0x2d" identifier != number_literal)) ))) )) (compound_statement "{\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }" { (expression_statement "pbVar10 = pbVar9 + 1;" (assignment_expression "pbVar10 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_dc = *pbVar9;" (assignment_expression "local_dc = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (labeled_statement "LAB_0002379c:\n    *param_1 = (int)pbVar10;" statement_identifier : (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }" if (parenthesized_expression "((byte)(local_dc - 0x23) < 0x56)" ( (binary_expression "(byte)(local_dc - 0x23) < 0x56" (call_expression "(byte)(local_dc - 0x23)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_dc - 0x23)" ( (binary_expression "local_dc - 0x23" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }" { comment comment (expression_statement "iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;" (assignment_expression "iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()" identifier = (call_expression "(*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()" (parenthesized_expression "(*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))" ( (pointer_expression "*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" * (cast_expression "(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" ( (binary_expression "*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11" (pointer_expression "*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" * (cast_expression "(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" ( (binary_expression "iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4" (binary_expression "iVar11 + -47000" identifier + number_literal) + (binary_expression "(uint)(byte)(local_dc - 0x23) * 4" (call_expression "(uint)(byte)(local_dc - 0x23)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(local_dc - 0x23)" ( (binary_expression "local_dc - 0x23" identifier - number_literal) ))) * number_literal)) )))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) }) (else_clause "else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" else (compound_statement "{\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" { (expression_statement "iVar2 = FUN_00020b30(iVar11,uVar13);" (assignment_expression "iVar2 = FUN_00020b30(iVar11,uVar13)" identifier = (call_expression "FUN_00020b30(iVar11,uVar13)" identifier (argument_list "(iVar11,uVar13)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar8 = (char *)*param_1;" (assignment_expression "pcVar8 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }" if (parenthesized_expression "(*pcVar8 != '=')" ( (binary_expression "*pcVar8 != '='" (pointer_expression "*pcVar8" * identifier) != (char_literal "'='" ' character ')) )) (compound_statement "{\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }" { (expression_statement "iVar11 = FUN_00020e50();" (assignment_expression "iVar11 = FUN_00020e50()" identifier = (call_expression "FUN_00020e50()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) (if_statement "if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }" if (parenthesized_expression "(((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c))" ( (binary_expression "((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)" (parenthesized_expression "((param_2 != (undefined4 *)0x0) && (-1 < local_40))" ( (binary_expression "(param_2 != (undefined4 *)0x0) && (-1 < local_40)" (parenthesized_expression "(param_2 != (undefined4 *)0x0)" ( (binary_expression "param_2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(-1 < local_40)" ( (binary_expression "-1 < local_40" number_literal < identifier) ))) )) && (parenthesized_expression "(-1 < local_3c)" ( (binary_expression "-1 < local_3c" number_literal < identifier) ))) )) (compound_statement "{\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }" { (expression_statement "uVar3 = FUN_00020cf0();" (assignment_expression "uVar3 = FUN_00020cf0()" identifier = (call_expression "FUN_00020cf0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "pcVar8 = (char *)*param_1;" (assignment_expression "pcVar8 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "local_e0 = -1;" (assignment_expression "local_e0 = -1" identifier = number_literal) ;) (expression_statement "*param_1 = (int)(pcVar8 + 1);" (assignment_expression "*param_1 = (int)(pcVar8 + 1)" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)(pcVar8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar8 + 1)" ( (binary_expression "pcVar8 + 1" identifier + number_literal) )))) ;) (expression_statement "pbVar10 = (byte *)(pcVar8 + 1);" (assignment_expression "pbVar10 = (byte *)(pcVar8 + 1)" identifier = (cast_expression "(byte *)(pcVar8 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar8 + 1)" ( (binary_expression "pcVar8 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);" do (compound_statement "{\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    }" { (while_statement "while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }" { (do_statement "do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);" do (compound_statement "{\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        }" { (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "local_dc = *pbVar9;" (assignment_expression "local_dc = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "pbVar10 = pbVar9 + 1;" (assignment_expression "pbVar10 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (local_dc != 0x40) goto LAB_0002379c;" if (parenthesized_expression "(local_dc != 0x40)" ( (binary_expression "local_dc != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_0002379c;" goto statement_identifier ;)) (expression_statement "bVar1 = pbVar9[1];" (assignment_expression "bVar1 = pbVar9[1]" identifier = (subscript_expression "pbVar9[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (uint)bVar1;" (assignment_expression "uVar7 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }" if (parenthesized_expression "(((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28))" ( (binary_expression "((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)" (parenthesized_expression "((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar6 + uVar7 * 2) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar6 + uVar7 * 2) & 4)" ( (binary_expression "*(byte *)(iVar6 + uVar7 * 2) & 4" (pointer_expression "*(byte *)(iVar6 + uVar7 * 2)" * (cast_expression "(byte *)(iVar6 + uVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + uVar7 * 2)" ( (binary_expression "iVar6 + uVar7 * 2" identifier + (binary_expression "uVar7 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar1 == 0x2d || bVar1 == 0x28)" ( (binary_expression "bVar1 == 0x2d || bVar1 == 0x28" (binary_expression "bVar1 == 0x2d" identifier == number_literal) || (binary_expression "bVar1 == 0x28" identifier == number_literal)) ))) )) (compound_statement "{\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }" { (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar11 = FUN_000235f0(param_1,0,param_3);" (assignment_expression "iVar11 = FUN_000235f0(param_1,0,param_3)" identifier = (call_expression "FUN_000235f0(param_1,0,param_3)" identifier (argument_list "(param_1,0,param_3)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar11 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }" if (parenthesized_expression "(*(char *)*param_1 == ',')" ( (binary_expression "*(char *)*param_1 == ','" (pointer_expression "*(char *)*param_1" * (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) == (char_literal "','" ' character ')) )) (compound_statement "{\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }" { (expression_statement "*param_1 = (int)((char *)*param_1 + 1);" (assignment_expression "*param_1 = (int)((char *)*param_1 + 1)" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)((char *)*param_1 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((char *)*param_1 + 1)" ( (binary_expression "(char *)*param_1 + 1" (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) ;) (expression_statement "uVar3 = uVar13;" (assignment_expression "uVar3 = uVar13" identifier = identifier) ;) (expression_statement "iVar6 = FUN_000235f0(param_1,0,param_3);" (assignment_expression "iVar6 = FUN_000235f0(param_1,0,param_3)" identifier = (call_expression "FUN_000235f0(param_1,0,param_3)" identifier (argument_list "(param_1,0,param_3)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                return 0;\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);" (assignment_expression "iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6)" identifier = (call_expression "FUN_0001fc20(uVar13,iVar11,iVar6)" identifier (argument_list "(uVar13,iVar11,iVar6)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar11 == 0) {\n                return 0;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }" if (parenthesized_expression "(local_40 != -1)" ( (binary_expression "local_40 != -1" identifier != number_literal) )) (compound_statement "{\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }" { (expression_statement "piVar5 = (int *)FUN_00020cf0();" (assignment_expression "piVar5 = (int *)FUN_00020cf0()" identifier = (cast_expression "(int *)FUN_00020cf0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020cf0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n                  return 0;\n                }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*piVar5 = iVar11;" (assignment_expression "*piVar5 = iVar11" (pointer_expression "*piVar5" * identifier) = identifier) ;) })) (if_statement "if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }" if (parenthesized_expression "(local_e0 != -1)" ( (binary_expression "local_e0 != -1" identifier != number_literal) )) (compound_statement "{\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }" { (expression_statement "iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);" (assignment_expression "iVar6 = FUN_000201c0(uVar3,iVar11,local_e0)" identifier = (call_expression "FUN_000201c0(uVar3,iVar11,local_e0)" identifier (argument_list "(uVar3,iVar11,local_e0)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                  return 0;\n                }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return iVar11;" return identifier ;) })) (return_statement "return iVar11;" return identifier ;) })) (goto_statement "goto LAB_00023940;" goto statement_identifier ;) })) (while_statement "while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }" while (parenthesized_expression "((char)uVar7 != ';')" ( (binary_expression "(char)uVar7 != ';'" (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "';'" ' character ')) )) (compound_statement "{\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }" { (if_statement "if ((char)uVar7 == '\0') goto LAB_00023940;" if (parenthesized_expression "((char)uVar7 == '\0')" ( (binary_expression "(char)uVar7 == '\0'" (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00023940;" goto statement_identifier ;)) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (uint)*pbVar10;" (assignment_expression "uVar7 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) })) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar1 = pbVar9[1];" (assignment_expression "bVar1 = pbVar9[1]" identifier = (subscript_expression "pbVar9[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(bVar1 == 0x53)" ( (binary_expression "bVar1 == 0x53" identifier == number_literal) )) ;) (if_statement "if (bVar1 != 0x73) break;" if (parenthesized_expression "(bVar1 != 0x73)" ( (binary_expression "bVar1 != 0x73" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);" (assignment_expression "lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10)" identifier = (call_expression "strtol((char *)(pbVar9 + 2),(char **)0x0,10)" identifier (argument_list "((char *)(pbVar9 + 2),(char **)0x0,10)" ( (cast_expression "(char *)(pbVar9 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar9 + 2)" ( (binary_expression "pbVar9 + 2" identifier + number_literal) ))) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (if_statement "if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" if (parenthesized_expression "(lVar4 < 8)" ( (binary_expression "lVar4 < 8" identifier < number_literal) )) (compound_statement "{\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }" { (expression_statement "local_e0 = -1;" (assignment_expression "local_e0 = -1" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }) (else_clause "else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" else (compound_statement "{\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" { (expression_statement "local_e0 = lVar4 >> 3;" (assignment_expression "local_e0 = lVar4 >> 3" identifier = (binary_expression "lVar4 >> 3" identifier >> number_literal)) ;) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }))) })) }) while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) ;) }))) (labeled_statement "LAB_00023940:\n  FUN_00020930();" statement_identifier : (expression_statement "FUN_00020930();" (call_expression "FUN_00020930()" identifier (argument_list "()" ( ))) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "debug_type\nparse_stab_type(void *dhandle,stab_handle *info,char *type_name,char **pp,\n               debug_type_conflict **slotp,char *p_end)\n\n{\n  byte bVar1;\n  byte *p_00;\n  int iVar2;\n  bfd_boolean bVar3;\n  bfd *pbVar4;\n  long lVar5;\n  debug_type_conflict *ppdVar6;\n  debug_type pdVar7;\n  debug_type target_type;\n  debug_type_conflict type;\n  stab_handle *info_00;\n  uint uVar8;\n  char *pcVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  debug_type_conflict **slotp_00;\n  undefined8 uVar12;\n  char **pp_00;\n  char *p_end_00;\n  uint local_e0;\n  byte local_dc;\n  bfd_boolean varargs;\n  bfd_boolean varargs_1;\n  char *p;\n  int typenums [2];\n  int xtypenums [2];\n  \n  uVar12 = __x86_get_pc_thunk_di();\n  info_00 = (stab_handle *)((ulonglong)uVar12 >> 0x20);\n  p_end_00 = (char *)uVar12;\n  slotp_00 = (debug_type_conflict **)(unaff_EDI + 0x1ca09);\n  if (info != (stab_handle *)0x0) {\n    info->abfd = (bfd *)0x0;\n  }\n                    /* WARNING: Load size is inaccurate */\n  p_00 = *dhandle;\n  if (type_name <= p_00) {\n    return (debug_type)0x0;\n  }\n  info_00->self_crossref = 0;\n  iVar2 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *p_00;\n  if (((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar11 = p_00 + 1;\n    typenums[1] = -1;\n    typenums[0] = -1;\n    local_dc = *p_00;\nLAB_0002379c:\n    *(byte **)dhandle = pbVar11;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();\n      return pdVar7;\n    }\n  }\n  else {\n    pp_00 = (char **)0x2368c;\n    bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);\n    if (bVar3 == 0) {\n      return (debug_type)0x0;\n    }\n                    /* WARNING: Load size is inaccurate */\n    pcVar9 = *dhandle;\n    if (*pcVar9 != '=') {\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }\n    if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }\n    local_e0 = 0xffffffff;\n    *(char **)dhandle = pcVar9 + 1;\n    pbVar11 = (byte *)(pcVar9 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    } while (bVar1 != 0);\n  }\n_L900:\n  bad_stab((char *)p_00);\n  return (debug_type)0x0;\n}\n\n" (function_definition "debug_type\nparse_stab_type(void *dhandle,stab_handle *info,char *type_name,char **pp,\n               debug_type_conflict **slotp,char *p_end)\n\n{\n  byte bVar1;\n  byte *p_00;\n  int iVar2;\n  bfd_boolean bVar3;\n  bfd *pbVar4;\n  long lVar5;\n  debug_type_conflict *ppdVar6;\n  debug_type pdVar7;\n  debug_type target_type;\n  debug_type_conflict type;\n  stab_handle *info_00;\n  uint uVar8;\n  char *pcVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  debug_type_conflict **slotp_00;\n  undefined8 uVar12;\n  char **pp_00;\n  char *p_end_00;\n  uint local_e0;\n  byte local_dc;\n  bfd_boolean varargs;\n  bfd_boolean varargs_1;\n  char *p;\n  int typenums [2];\n  int xtypenums [2];\n  \n  uVar12 = __x86_get_pc_thunk_di();\n  info_00 = (stab_handle *)((ulonglong)uVar12 >> 0x20);\n  p_end_00 = (char *)uVar12;\n  slotp_00 = (debug_type_conflict **)(unaff_EDI + 0x1ca09);\n  if (info != (stab_handle *)0x0) {\n    info->abfd = (bfd *)0x0;\n  }\n                    /* WARNING: Load size is inaccurate */\n  p_00 = *dhandle;\n  if (type_name <= p_00) {\n    return (debug_type)0x0;\n  }\n  info_00->self_crossref = 0;\n  iVar2 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *p_00;\n  if (((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar11 = p_00 + 1;\n    typenums[1] = -1;\n    typenums[0] = -1;\n    local_dc = *p_00;\nLAB_0002379c:\n    *(byte **)dhandle = pbVar11;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();\n      return pdVar7;\n    }\n  }\n  else {\n    pp_00 = (char **)0x2368c;\n    bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);\n    if (bVar3 == 0) {\n      return (debug_type)0x0;\n    }\n                    /* WARNING: Load size is inaccurate */\n    pcVar9 = *dhandle;\n    if (*pcVar9 != '=') {\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }\n    if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }\n    local_e0 = 0xffffffff;\n    *(char **)dhandle = pcVar9 + 1;\n    pbVar11 = (byte *)(pcVar9 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    } while (bVar1 != 0);\n  }\n_L900:\n  bad_stab((char *)p_00);\n  return (debug_type)0x0;\n}" type_identifier (function_declarator "parse_stab_type(void *dhandle,stab_handle *info,char *type_name,char **pp,\n               debug_type_conflict **slotp,char *p_end)" identifier (parameter_list "(void *dhandle,stab_handle *info,char *type_name,char **pp,\n               debug_type_conflict **slotp,char *p_end)" ( (parameter_declaration "void *dhandle" primitive_type (pointer_declarator "*dhandle" * identifier)) , (parameter_declaration "stab_handle *info" type_identifier (pointer_declarator "*info" * identifier)) , (parameter_declaration "char *type_name" primitive_type (pointer_declarator "*type_name" * identifier)) , (parameter_declaration "char **pp" primitive_type (pointer_declarator "**pp" * (pointer_declarator "*pp" * identifier))) , (parameter_declaration "debug_type_conflict **slotp" type_identifier (pointer_declarator "**slotp" * (pointer_declarator "*slotp" * identifier))) , (parameter_declaration "char *p_end" primitive_type (pointer_declarator "*p_end" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  byte *p_00;\n  int iVar2;\n  bfd_boolean bVar3;\n  bfd *pbVar4;\n  long lVar5;\n  debug_type_conflict *ppdVar6;\n  debug_type pdVar7;\n  debug_type target_type;\n  debug_type_conflict type;\n  stab_handle *info_00;\n  uint uVar8;\n  char *pcVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  int unaff_EDI;\n  debug_type_conflict **slotp_00;\n  undefined8 uVar12;\n  char **pp_00;\n  char *p_end_00;\n  uint local_e0;\n  byte local_dc;\n  bfd_boolean varargs;\n  bfd_boolean varargs_1;\n  char *p;\n  int typenums [2];\n  int xtypenums [2];\n  \n  uVar12 = __x86_get_pc_thunk_di();\n  info_00 = (stab_handle *)((ulonglong)uVar12 >> 0x20);\n  p_end_00 = (char *)uVar12;\n  slotp_00 = (debug_type_conflict **)(unaff_EDI + 0x1ca09);\n  if (info != (stab_handle *)0x0) {\n    info->abfd = (bfd *)0x0;\n  }\n                    /* WARNING: Load size is inaccurate */\n  p_00 = *dhandle;\n  if (type_name <= p_00) {\n    return (debug_type)0x0;\n  }\n  info_00->self_crossref = 0;\n  iVar2 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *p_00;\n  if (((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar11 = p_00 + 1;\n    typenums[1] = -1;\n    typenums[0] = -1;\n    local_dc = *p_00;\nLAB_0002379c:\n    *(byte **)dhandle = pbVar11;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();\n      return pdVar7;\n    }\n  }\n  else {\n    pp_00 = (char **)0x2368c;\n    bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);\n    if (bVar3 == 0) {\n      return (debug_type)0x0;\n    }\n                    /* WARNING: Load size is inaccurate */\n    pcVar9 = *dhandle;\n    if (*pcVar9 != '=') {\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }\n    if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }\n    local_e0 = 0xffffffff;\n    *(char **)dhandle = pcVar9 + 1;\n    pbVar11 = (byte *)(pcVar9 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    } while (bVar1 != 0);\n  }\n_L900:\n  bad_stab((char *)p_00);\n  return (debug_type)0x0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "byte *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (declaration "bfd *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "debug_type_conflict *ppdVar6;" type_identifier (pointer_declarator "*ppdVar6" * identifier) ;) (declaration "debug_type pdVar7;" type_identifier identifier ;) (declaration "debug_type target_type;" type_identifier identifier ;) (declaration "debug_type_conflict type;" type_identifier identifier ;) (declaration "stab_handle *info_00;" type_identifier (pointer_declarator "*info_00" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "debug_type_conflict **slotp_00;" type_identifier (pointer_declarator "**slotp_00" * (pointer_declarator "*slotp_00" * identifier)) ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "char **pp_00;" primitive_type (pointer_declarator "**pp_00" * (pointer_declarator "*pp_00" * identifier)) ;) (declaration "char *p_end_00;" primitive_type (pointer_declarator "*p_end_00" * identifier) ;) (declaration "uint local_e0;" type_identifier identifier ;) (declaration "byte local_dc;" type_identifier identifier ;) (declaration "bfd_boolean varargs;" type_identifier identifier ;) (declaration "bfd_boolean varargs_1;" type_identifier identifier ;) (declaration "char *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (declaration "int typenums [2];" primitive_type (array_declarator "typenums [2]" identifier [ number_literal ]) ;) (declaration "int xtypenums [2];" primitive_type (array_declarator "xtypenums [2]" identifier [ number_literal ]) ;) (expression_statement "uVar12 = __x86_get_pc_thunk_di();" (assignment_expression "uVar12 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "info_00 = (stab_handle *)((ulonglong)uVar12 >> 0x20);" (assignment_expression "info_00 = (stab_handle *)((ulonglong)uVar12 >> 0x20)" identifier = (cast_expression "(stab_handle *)((ulonglong)uVar12 >> 0x20)" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "p_end_00 = (char *)uVar12;" (assignment_expression "p_end_00 = (char *)uVar12" identifier = (cast_expression "(char *)uVar12" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "slotp_00 = (debug_type_conflict **)(unaff_EDI + 0x1ca09);" (assignment_expression "slotp_00 = (debug_type_conflict **)(unaff_EDI + 0x1ca09)" identifier = (cast_expression "(debug_type_conflict **)(unaff_EDI + 0x1ca09)" ( (type_descriptor "debug_type_conflict **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(unaff_EDI + 0x1ca09)" ( (binary_expression "unaff_EDI + 0x1ca09" identifier + number_literal) )))) ;) (if_statement "if (info != (stab_handle *)0x0) {\n    info->abfd = (bfd *)0x0;\n  }" if (parenthesized_expression "(info != (stab_handle *)0x0)" ( (binary_expression "info != (stab_handle *)0x0" identifier != (cast_expression "(stab_handle *)0x0" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    info->abfd = (bfd *)0x0;\n  }" { (expression_statement "info->abfd = (bfd *)0x0;" (assignment_expression "info->abfd = (bfd *)0x0" (field_expression "info->abfd" identifier -> field_identifier) = (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) comment (expression_statement "p_00 = *dhandle;" (assignment_expression "p_00 = *dhandle" identifier = (pointer_expression "*dhandle" * identifier)) ;) (if_statement "if (type_name <= p_00) {\n    return (debug_type)0x0;\n  }" if (parenthesized_expression "(type_name <= p_00)" ( (binary_expression "type_name <= p_00" identifier <= identifier) )) (compound_statement "{\n    return (debug_type)0x0;\n  }" { (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })) (expression_statement "info_00->self_crossref = 0;" (assignment_expression "info_00->self_crossref = 0" (field_expression "info_00->self_crossref" identifier -> field_identifier) = number_literal) ;) (expression_statement "iVar2 = *(int *)(&UNK_0001c9bd + unaff_EDI);" (assignment_expression "iVar2 = *(int *)(&UNK_0001c9bd + unaff_EDI)" identifier = (pointer_expression "*(int *)(&UNK_0001c9bd + unaff_EDI)" * (cast_expression "(int *)(&UNK_0001c9bd + unaff_EDI)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001c9bd + unaff_EDI)" ( (binary_expression "&UNK_0001c9bd + unaff_EDI" (pointer_expression "&UNK_0001c9bd" & identifier) + identifier) ))))) ;) (expression_statement "bVar1 = *p_00;" (assignment_expression "bVar1 = *p_00" identifier = (pointer_expression "*p_00" * identifier)) ;) (if_statement "if (((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar11 = p_00 + 1;\n    typenums[1] = -1;\n    typenums[0] = -1;\n    local_dc = *p_00;\nLAB_0002379c:\n    *(byte **)dhandle = pbVar11;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();\n      return pdVar7;\n    }\n  }\n  else {\n    pp_00 = (char **)0x2368c;\n    bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);\n    if (bVar3 == 0) {\n      return (debug_type)0x0;\n    }\n                    /* WARNING: Load size is inaccurate */\n    pcVar9 = *dhandle;\n    if (*pcVar9 != '=') {\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }\n    if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }\n    local_e0 = 0xffffffff;\n    *(char **)dhandle = pcVar9 + 1;\n    pbVar11 = (byte *)(pcVar9 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    } while (bVar1 != 0);\n  }" if (parenthesized_expression "(((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d))" ( (binary_expression "((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)" (parenthesized_expression "((*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar2 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar2 + (uint)bVar1 * 2) & 4)" ( (binary_expression "*(byte *)(iVar2 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(iVar2 + (uint)bVar1 * 2)" * (cast_expression "(byte *)(iVar2 + (uint)bVar1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + (uint)bVar1 * 2)" ( (binary_expression "iVar2 + (uint)bVar1 * 2" identifier + (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(bVar1 != 0x28 && bVar1 != 0x2d)" ( (binary_expression "bVar1 != 0x28 && bVar1 != 0x2d" (binary_expression "bVar1 != 0x28" identifier != number_literal) && (binary_expression "bVar1 != 0x2d" identifier != number_literal)) ))) )) (compound_statement "{\n    pbVar11 = p_00 + 1;\n    typenums[1] = -1;\n    typenums[0] = -1;\n    local_dc = *p_00;\nLAB_0002379c:\n    *(byte **)dhandle = pbVar11;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();\n      return pdVar7;\n    }\n  }" { (expression_statement "pbVar11 = p_00 + 1;" (assignment_expression "pbVar11 = p_00 + 1" identifier = (binary_expression "p_00 + 1" identifier + number_literal)) ;) (expression_statement "typenums[1] = -1;" (assignment_expression "typenums[1] = -1" (subscript_expression "typenums[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "typenums[0] = -1;" (assignment_expression "typenums[0] = -1" (subscript_expression "typenums[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_dc = *p_00;" (assignment_expression "local_dc = *p_00" identifier = (pointer_expression "*p_00" * identifier)) ;) (labeled_statement "LAB_0002379c:\n    *(byte **)dhandle = pbVar11;" statement_identifier : (expression_statement "*(byte **)dhandle = pbVar11;" (assignment_expression "*(byte **)dhandle = pbVar11" (pointer_expression "*(byte **)dhandle" * (cast_expression "(byte **)dhandle" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;)) (if_statement "if ((byte)(local_dc - 0x23) < 0x56) {\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();\n      return pdVar7;\n    }" if (parenthesized_expression "((byte)(local_dc - 0x23) < 0x56)" ( (binary_expression "(byte)(local_dc - 0x23) < 0x56" (call_expression "(byte)(local_dc - 0x23)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_dc - 0x23)" ( (binary_expression "local_dc - 0x23" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();\n      return pdVar7;\n    }" { comment comment (expression_statement "pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))();" (assignment_expression "pdVar7 = (debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))()" identifier = (call_expression "(debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))()" (call_expression "(debug_type)\n               (*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))" (parenthesized_expression "(debug_type)" ( identifier )) (argument_list "(*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00))" ( (pointer_expression "*(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00)" * (cast_expression "(code *)((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00)" ( (binary_expression "(int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6] + (int)slotp_00" (cast_expression "(int)slotp_00[(byte)(local_dc - 0x23) - 0x2de6]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "slotp_00[(byte)(local_dc - 0x23) - 0x2de6]" identifier [ (binary_expression "(byte)(local_dc - 0x23) - 0x2de6" (call_expression "(byte)(local_dc - 0x23)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_dc - 0x23)" ( (binary_expression "local_dc - 0x23" identifier - number_literal) ))) - number_literal) ])) + (cast_expression "(int)slotp_00" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ))) (argument_list "()" ( )))) ;) (return_statement "return pdVar7;" return identifier ;) })) }) (else_clause "else {\n    pp_00 = (char **)0x2368c;\n    bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);\n    if (bVar3 == 0) {\n      return (debug_type)0x0;\n    }\n                    /* WARNING: Load size is inaccurate */\n    pcVar9 = *dhandle;\n    if (*pcVar9 != '=') {\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }\n    if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }\n    local_e0 = 0xffffffff;\n    *(char **)dhandle = pcVar9 + 1;\n    pbVar11 = (byte *)(pcVar9 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    } while (bVar1 != 0);\n  }" else (compound_statement "{\n    pp_00 = (char **)0x2368c;\n    bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);\n    if (bVar3 == 0) {\n      return (debug_type)0x0;\n    }\n                    /* WARNING: Load size is inaccurate */\n    pcVar9 = *dhandle;\n    if (*pcVar9 != '=') {\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }\n    if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }\n    local_e0 = 0xffffffff;\n    *(char **)dhandle = pcVar9 + 1;\n    pbVar11 = (byte *)(pcVar9 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    } while (bVar1 != 0);\n  }" { (expression_statement "pp_00 = (char **)0x2368c;" (assignment_expression "pp_00 = (char **)0x2368c" identifier = (cast_expression "(char **)0x2368c" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name);" (assignment_expression "bVar3 = parse_stab_type_number((char **)dhandle,typenums,type_name)" identifier = (call_expression "parse_stab_type_number((char **)dhandle,typenums,type_name)" identifier (argument_list "((char **)dhandle,typenums,type_name)" ( (cast_expression "(char **)dhandle" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) , identifier , identifier )))) ;) (if_statement "if (bVar3 == 0) {\n      return (debug_type)0x0;\n    }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      return (debug_type)0x0;\n    }" { (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })) comment (expression_statement "pcVar9 = *dhandle;" (assignment_expression "pcVar9 = *dhandle" identifier = (pointer_expression "*dhandle" * identifier)) ;) (if_statement "if (*pcVar9 != '=') {\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }" if (parenthesized_expression "(*pcVar9 != '=')" ( (binary_expression "*pcVar9 != '='" (pointer_expression "*pcVar9" * identifier) != (char_literal "'='" ' character ')) )) (compound_statement "{\n      pdVar7 = stab_find_type(p_end_00,info_00,typenums);\n      return pdVar7;\n    }" { (expression_statement "pdVar7 = stab_find_type(p_end_00,info_00,typenums);" (assignment_expression "pdVar7 = stab_find_type(p_end_00,info_00,typenums)" identifier = (call_expression "stab_find_type(p_end_00,info_00,typenums)" identifier (argument_list "(p_end_00,info_00,typenums)" ( identifier , identifier , identifier )))) ;) (return_statement "return pdVar7;" return identifier ;) })) (if_statement "if (((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }" if (parenthesized_expression "(((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1]))" ( (binary_expression "((info != (stab_handle *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])" (parenthesized_expression "((info != (stab_handle *)0x0) && (-1 < typenums[0]))" ( (binary_expression "(info != (stab_handle *)0x0) && (-1 < typenums[0])" (parenthesized_expression "(info != (stab_handle *)0x0)" ( (binary_expression "info != (stab_handle *)0x0" identifier != (cast_expression "(stab_handle *)0x0" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(-1 < typenums[0])" ( (binary_expression "-1 < typenums[0]" number_literal < (subscript_expression "typenums[0]" identifier [ number_literal ])) ))) )) && (parenthesized_expression "(-1 < typenums[1])" ( (binary_expression "-1 < typenums[1]" number_literal < (subscript_expression "typenums[1]" identifier [ number_literal ])) ))) )) (compound_statement "{\n      pp_00 = (char **)0x236d1;\n      pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);\n      info->abfd = pbVar4;\n                    /* WARNING: Load size is inaccurate */\n      pcVar9 = *dhandle;\n    }" { (expression_statement "pp_00 = (char **)0x236d1;" (assignment_expression "pp_00 = (char **)0x236d1" identifier = (cast_expression "(char **)0x236d1" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums);" (assignment_expression "pbVar4 = (bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums)" identifier = (cast_expression "(bfd *)stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums)" identifier (argument_list "((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                     (stab_handle *)typenums)" ( (cast_expression "(stab_handle *)&info_00->files" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info_00->files" & (field_expression "info_00->files" identifier -> field_identifier))) , (cast_expression "(int *)&info_00->file_types" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info_00->file_types" & (field_expression "info_00->file_types" identifier -> field_identifier))) , (cast_expression "(stab_handle *)typenums" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (expression_statement "info->abfd = pbVar4;" (assignment_expression "info->abfd = pbVar4" (field_expression "info->abfd" identifier -> field_identifier) = identifier) ;) comment (expression_statement "pcVar9 = *dhandle;" (assignment_expression "pcVar9 = *dhandle" identifier = (pointer_expression "*dhandle" * identifier)) ;) })) (expression_statement "local_e0 = 0xffffffff;" (assignment_expression "local_e0 = 0xffffffff" identifier = number_literal) ;) (expression_statement "*(char **)dhandle = pcVar9 + 1;" (assignment_expression "*(char **)dhandle = pcVar9 + 1" (pointer_expression "*(char **)dhandle" * (cast_expression "(char **)dhandle" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (binary_expression "pcVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = (byte *)(pcVar9 + 1);" (assignment_expression "pbVar11 = (byte *)(pcVar9 + 1)" identifier = (cast_expression "(byte *)(pcVar9 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 1)" ( (binary_expression "pcVar9 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    } while (bVar1 != 0);" do (compound_statement "{\n      while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }\n    }" { (while_statement "while( true ) {\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);\n        if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n      }" { (do_statement "do {\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        } while (bVar1 == 0x53);" do (compound_statement "{\n          pbVar10 = pbVar11;\n          local_dc = *pbVar10;\n          pbVar11 = pbVar10 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar10[1];\n          uVar8 = (uint)bVar1;\n          if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }\n          while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }\n          pbVar11 = pbVar11 + 1;\n          *(byte **)dhandle = pbVar11;\n          bVar1 = pbVar10[1];\n        }" { (expression_statement "pbVar10 = pbVar11;" (assignment_expression "pbVar10 = pbVar11" identifier = identifier) ;) (expression_statement "local_dc = *pbVar10;" (assignment_expression "local_dc = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "pbVar11 = pbVar10 + 1;" (assignment_expression "pbVar11 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (if_statement "if (local_dc != 0x40) goto LAB_0002379c;" if (parenthesized_expression "(local_dc != 0x40)" ( (binary_expression "local_dc != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_0002379c;" goto statement_identifier ;)) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) (expression_statement "uVar8 = (uint)bVar1;" (assignment_expression "uVar8 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }" if (parenthesized_expression "(((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28))" ( (binary_expression "((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)" (parenthesized_expression "((*(byte *)(iVar2 + uVar8 * 2) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar2 + uVar8 * 2) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar2 + uVar8 * 2) & 4)" ( (binary_expression "*(byte *)(iVar2 + uVar8 * 2) & 4" (pointer_expression "*(byte *)(iVar2 + uVar8 * 2)" * (cast_expression "(byte *)(iVar2 + uVar8 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + uVar8 * 2)" ( (binary_expression "iVar2 + uVar8 * 2" identifier + (binary_expression "uVar8 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar1 == 0x2d || bVar1 == 0x28)" ( (binary_expression "bVar1 == 0x2d || bVar1 == 0x28" (binary_expression "bVar1 == 0x2d" identifier == number_literal) || (binary_expression "bVar1 == 0x28" identifier == number_literal)) ))) )) (compound_statement "{\n            *(byte **)dhandle = pbVar11;\n            pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);\n            if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }\n                    /* WARNING: Load size is inaccurate */\n            if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }\n            goto _L900;\n          }" { (expression_statement "*(byte **)dhandle = pbVar11;" (assignment_expression "*(byte **)dhandle = pbVar11" (pointer_expression "*(byte **)dhandle" * (cast_expression "(byte **)dhandle" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00);" (assignment_expression "pdVar7 = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00)" identifier = (call_expression "parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00)" identifier (argument_list "(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,p_end_00)" ( identifier , (cast_expression "(stab_handle *)0x0" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (pdVar7 == (debug_type)0x0) {\n              return (debug_type)0x0;\n            }" if (parenthesized_expression "(pdVar7 == (debug_type)0x0)" ( (binary_expression "pdVar7 == (debug_type)0x0" identifier == (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal)) )) (compound_statement "{\n              return (debug_type)0x0;\n            }" { (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })) comment (if_statement "if (**dhandle == ',') {\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }" if (parenthesized_expression "(**dhandle == ',')" ( (binary_expression "**dhandle == ','" (pointer_expression "**dhandle" * (pointer_expression "*dhandle" * identifier)) == (char_literal "','" ' character ')) )) (compound_statement "{\n              *(char **)dhandle = *dhandle + 1;\n              pcVar9 = p_end_00;\n              target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);\n              if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }\n              type = debug_make_offset_type(p_end_00,pdVar7,target_type);\n              if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }\n              if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }\n              if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }\n              return type;\n            }" { (expression_statement "*(char **)dhandle = *dhandle + 1;" (assignment_expression "*(char **)dhandle = *dhandle + 1" (pointer_expression "*(char **)dhandle" * (cast_expression "(char **)dhandle" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = (binary_expression "*dhandle + 1" (pointer_expression "*dhandle" * identifier) + number_literal)) ;) (expression_statement "pcVar9 = p_end_00;" (assignment_expression "pcVar9 = p_end_00" identifier = identifier) ;) (expression_statement "target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00);" (assignment_expression "target_type = parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00)" identifier = (call_expression "parse_stab_type(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00)" identifier (argument_list "(dhandle,(stab_handle *)0x0,type_name,pp_00,slotp_00,\n                                            p_end_00)" ( identifier , (cast_expression "(stab_handle *)0x0" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (target_type == (debug_type)0x0) {\n                return (debug_type)0x0;\n              }" if (parenthesized_expression "(target_type == (debug_type)0x0)" ( (binary_expression "target_type == (debug_type)0x0" identifier == (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal)) )) (compound_statement "{\n                return (debug_type)0x0;\n              }" { (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })) (expression_statement "type = debug_make_offset_type(p_end_00,pdVar7,target_type);" (assignment_expression "type = debug_make_offset_type(p_end_00,pdVar7,target_type)" identifier = (call_expression "debug_make_offset_type(p_end_00,pdVar7,target_type)" identifier (argument_list "(p_end_00,pdVar7,target_type)" ( identifier , identifier , identifier )))) ;) (if_statement "if (type == (debug_type_conflict)0x0) {\n                return (debug_type)0x0;\n              }" if (parenthesized_expression "(type == (debug_type_conflict)0x0)" ( (binary_expression "type == (debug_type_conflict)0x0" identifier == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n                return (debug_type)0x0;\n              }" { (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })) (if_statement "if (typenums[0] != -1) {\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }" if (parenthesized_expression "(typenums[0] != -1)" ( (binary_expression "typenums[0] != -1" (subscript_expression "typenums[0]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);\n                if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }\n                *ppdVar6 = type;\n              }" { (expression_statement "ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums);" (assignment_expression "ppdVar6 = stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums)" identifier = (call_expression "stab_find_slot((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums)" identifier (argument_list "((stab_handle *)&info_00->files,(int *)&info_00->file_types,\n                                         (stab_handle *)typenums)" ( (cast_expression "(stab_handle *)&info_00->files" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info_00->files" & (field_expression "info_00->files" identifier -> field_identifier))) , (cast_expression "(int *)&info_00->file_types" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&info_00->file_types" & (field_expression "info_00->file_types" identifier -> field_identifier))) , (cast_expression "(stab_handle *)typenums" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (ppdVar6 == (debug_type_conflict *)0x0) {\n                  return (debug_type)0x0;\n                }" if (parenthesized_expression "(ppdVar6 == (debug_type_conflict *)0x0)" ( (binary_expression "ppdVar6 == (debug_type_conflict *)0x0" identifier == (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  return (debug_type)0x0;\n                }" { (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })) (expression_statement "*ppdVar6 = type;" (assignment_expression "*ppdVar6 = type" (pointer_expression "*ppdVar6" * identifier) = identifier) ;) })) (if_statement "if (local_e0 != 0xffffffff) {\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }" if (parenthesized_expression "(local_e0 != 0xffffffff)" ( (binary_expression "local_e0 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n                bVar3 = debug_record_type_size(pcVar9,type,local_e0);\n                if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }\n                return type;\n              }" { (expression_statement "bVar3 = debug_record_type_size(pcVar9,type,local_e0);" (assignment_expression "bVar3 = debug_record_type_size(pcVar9,type,local_e0)" identifier = (call_expression "debug_record_type_size(pcVar9,type,local_e0)" identifier (argument_list "(pcVar9,type,local_e0)" ( identifier , identifier , identifier )))) ;) (if_statement "if (bVar3 == 0) {\n                  return (debug_type)0x0;\n                }" if (parenthesized_expression "(bVar3 == 0)" ( (binary_expression "bVar3 == 0" identifier == number_literal) )) (compound_statement "{\n                  return (debug_type)0x0;\n                }" { (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })) (return_statement "return type;" return identifier ;) })) (return_statement "return type;" return identifier ;) })) (goto_statement "goto _L900;" goto statement_identifier ;) })) (while_statement "while ((char)uVar8 != ';') {\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }" while (parenthesized_expression "((char)uVar8 != ';')" ( (binary_expression "(char)uVar8 != ';'" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "';'" ' character ')) )) (compound_statement "{\n            if ((char)uVar8 == '\0') goto _L900;\n            pbVar11 = pbVar11 + 1;\n            uVar8 = (uint)*pbVar11;\n          }" { (if_statement "if ((char)uVar8 == '\0') goto _L900;" if (parenthesized_expression "((char)uVar8 == '\0')" ( (binary_expression "(char)uVar8 == '\0'" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto _L900;" goto statement_identifier ;)) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)*pbVar11;" (assignment_expression "uVar8 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) })) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "*(byte **)dhandle = pbVar11;" (assignment_expression "*(byte **)dhandle = pbVar11" (pointer_expression "*(byte **)dhandle" * (cast_expression "(byte **)dhandle" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "bVar1 = pbVar10[1];" (assignment_expression "bVar1 = pbVar10[1]" identifier = (subscript_expression "pbVar10[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(bVar1 == 0x53)" ( (binary_expression "bVar1 == 0x53" identifier == number_literal) )) ;) (if_statement "if (bVar1 != 0x73) break;" if (parenthesized_expression "(bVar1 != 0x73)" ( (binary_expression "bVar1 != 0x73" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10);" (assignment_expression "lVar5 = strtol((char *)(pbVar10 + 2),(char **)0x0,10)" identifier = (call_expression "strtol((char *)(pbVar10 + 2),(char **)0x0,10)" identifier (argument_list "((char *)(pbVar10 + 2),(char **)0x0,10)" ( (cast_expression "(char *)(pbVar10 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar10 + 2)" ( (binary_expression "pbVar10 + 2" identifier + number_literal) ))) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (if_statement "if (lVar5 < 8) {\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }\n        else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }" if (parenthesized_expression "(lVar5 < 8)" ( (binary_expression "lVar5 < 8" identifier < number_literal) )) (compound_statement "{\n          local_e0 = 0xffffffff;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }" { (expression_statement "local_e0 = 0xffffffff;" (assignment_expression "local_e0 = 0xffffffff" identifier = number_literal) ;) comment (expression_statement "pbVar11 = *dhandle;" (assignment_expression "pbVar11 = *dhandle" identifier = (pointer_expression "*dhandle" * identifier)) ;) }) (else_clause "else {\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }" else (compound_statement "{\n          local_e0 = lVar5 >> 3;\n                    /* WARNING: Load size is inaccurate */\n          pbVar11 = *dhandle;\n        }" { (expression_statement "local_e0 = lVar5 >> 3;" (assignment_expression "local_e0 = lVar5 >> 3" identifier = (binary_expression "lVar5 >> 3" identifier >> number_literal)) ;) comment (expression_statement "pbVar11 = *dhandle;" (assignment_expression "pbVar11 = *dhandle" identifier = (pointer_expression "*dhandle" * identifier)) ;) }))) })) }) while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) ;) }))) (labeled_statement "_L900:\n  bad_stab((char *)p_00);" statement_identifier : (expression_statement "bad_stab((char *)p_00);" (call_expression "bad_stab((char *)p_00)" identifier (argument_list "((char *)p_00)" ( (cast_expression "(char *)p_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;)) (return_statement "return (debug_type)0x0;" return (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal) ;) })))
(translation_unit "int FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}\n\n" (function_definition "int FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}" primitive_type (function_declarator "FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)" identifier (parameter_list "(int *param_1,undefined4 *param_2,byte *param_3)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined8 uVar12;" type_identifier identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int local_e0;" primitive_type identifier ;) (declaration "byte local_dc;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (expression_statement "uVar12 = FUN_0001c3b7();" (assignment_expression "uVar12 = FUN_0001c3b7()" identifier = (call_expression "FUN_0001c3b7()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar13 = (undefined4)uVar12;" (assignment_expression "uVar13 = (undefined4)uVar12" identifier = (cast_expression "(undefined4)uVar12" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "iVar11 = unaff_EDI + 0x1ca09;" (assignment_expression "iVar11 = unaff_EDI + 0x1ca09" identifier = (binary_expression "unaff_EDI + 0x1ca09" identifier + number_literal)) ;) (if_statement "if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }" if (parenthesized_expression "(param_2 != (undefined4 *)0x0)" ( (binary_expression "param_2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    *param_2 = 0;\n  }" { (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" * identifier) = number_literal) ;) })) (expression_statement "pbVar9 = (byte *)*param_1;" (assignment_expression "pbVar9 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (param_3 <= pbVar9) {\n    return 0;\n  }" if (parenthesized_expression "(param_3 <= pbVar9)" ( (binary_expression "param_3 <= pbVar9" identifier <= identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;" (assignment_expression "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0" (pointer_expression "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" * (cast_expression "(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" ( (binary_expression "(int)((ulonglong)uVar12 >> 0x20) + 0xe8" (cast_expression "(int)((ulonglong)uVar12 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar12 >> 0x20)" ( (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) ))) + number_literal) )))) = number_literal) ;) (expression_statement "iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);" (assignment_expression "iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI)" identifier = (pointer_expression "*(int *)(&UNK_0001c9bd + unaff_EDI)" * (cast_expression "(int *)(&UNK_0001c9bd + unaff_EDI)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001c9bd + unaff_EDI)" ( (binary_expression "&UNK_0001c9bd + unaff_EDI" (pointer_expression "&UNK_0001c9bd" & identifier) + identifier) ))))) ;) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (if_statement "if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" if (parenthesized_expression "(((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d))" ( (binary_expression "((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)" (parenthesized_expression "((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar6 + (uint)bVar1 * 2) & 4)" ( (binary_expression "*(byte *)(iVar6 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(iVar6 + (uint)bVar1 * 2)" * (cast_expression "(byte *)(iVar6 + (uint)bVar1 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + (uint)bVar1 * 2)" ( (binary_expression "iVar6 + (uint)bVar1 * 2" identifier + (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(bVar1 != 0x28 && bVar1 != 0x2d)" ( (binary_expression "bVar1 != 0x28 && bVar1 != 0x2d" (binary_expression "bVar1 != 0x28" identifier != number_literal) && (binary_expression "bVar1 != 0x2d" identifier != number_literal)) ))) )) (compound_statement "{\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }" { (expression_statement "pbVar10 = pbVar9 + 1;" (assignment_expression "pbVar10 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "local_dc = *pbVar9;" (assignment_expression "local_dc = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (labeled_statement "LAB_0002379c:\n    *param_1 = (int)pbVar10;" statement_identifier : (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (if_statement "if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }" if (parenthesized_expression "((byte)(local_dc - 0x23) < 0x56)" ( (binary_expression "(byte)(local_dc - 0x23) < 0x56" (call_expression "(byte)(local_dc - 0x23)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(local_dc - 0x23)" ( (binary_expression "local_dc - 0x23" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }" { (expression_statement "iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;" (assignment_expression "iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()" identifier = (call_expression "(*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()" (parenthesized_expression "(*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))" ( (pointer_expression "*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" * (cast_expression "(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" ( (binary_expression "*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11" (pointer_expression "*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" * (cast_expression "(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" ( (binary_expression "iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4" (binary_expression "iVar11 + -47000" identifier + number_literal) + (binary_expression "(uint)(byte)(local_dc - 0x23) * 4" (call_expression "(uint)(byte)(local_dc - 0x23)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(byte)" ( identifier ))) (argument_list "(local_dc - 0x23)" ( (binary_expression "local_dc - 0x23" identifier - number_literal) ))) * number_literal)) )))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) }) (else_clause "else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" else (compound_statement "{\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" { (expression_statement "iVar2 = FUN_00020b30(iVar11,uVar13);" (assignment_expression "iVar2 = FUN_00020b30(iVar11,uVar13)" identifier = (call_expression "FUN_00020b30(iVar11,uVar13)" identifier (argument_list "(iVar11,uVar13)" ( identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n      return 0;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar8 = (char *)*param_1;" (assignment_expression "pcVar8 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (if_statement "if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }" if (parenthesized_expression "(*pcVar8 != '=')" ( (binary_expression "*pcVar8 != '='" (pointer_expression "*pcVar8" * identifier) != (char_literal "'='" ' character ')) )) (compound_statement "{\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }" { (expression_statement "iVar11 = FUN_00020e50();" (assignment_expression "iVar11 = FUN_00020e50()" identifier = (call_expression "FUN_00020e50()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) (if_statement "if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }" if (parenthesized_expression "(((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c))" ( (binary_expression "((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)" (parenthesized_expression "((param_2 != (undefined4 *)0x0) && (-1 < local_40))" ( (binary_expression "(param_2 != (undefined4 *)0x0) && (-1 < local_40)" (parenthesized_expression "(param_2 != (undefined4 *)0x0)" ( (binary_expression "param_2 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(-1 < local_40)" ( (binary_expression "-1 < local_40" number_literal < identifier) ))) )) && (parenthesized_expression "(-1 < local_3c)" ( (binary_expression "-1 < local_3c" number_literal < identifier) ))) )) (compound_statement "{\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }" { (expression_statement "uVar3 = FUN_00020cf0();" (assignment_expression "uVar3 = FUN_00020cf0()" identifier = (call_expression "FUN_00020cf0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "pcVar8 = (char *)*param_1;" (assignment_expression "pcVar8 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) })) (expression_statement "local_e0 = -1;" (assignment_expression "local_e0 = -1" identifier = number_literal) ;) (expression_statement "*param_1 = (int)(pcVar8 + 1);" (assignment_expression "*param_1 = (int)(pcVar8 + 1)" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)(pcVar8 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar8 + 1)" ( (binary_expression "pcVar8 + 1" identifier + number_literal) )))) ;) (expression_statement "pbVar10 = (byte *)(pcVar8 + 1);" (assignment_expression "pbVar10 = (byte *)(pcVar8 + 1)" identifier = (cast_expression "(byte *)(pcVar8 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar8 + 1)" ( (binary_expression "pcVar8 + 1" identifier + number_literal) )))) ;) (do_statement "do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);" do (compound_statement "{\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    }" { (while_statement "while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }" { (do_statement "do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);" do (compound_statement "{\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        }" { (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" identifier = identifier) ;) (expression_statement "local_dc = *pbVar9;" (assignment_expression "local_dc = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "pbVar10 = pbVar9 + 1;" (assignment_expression "pbVar10 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (local_dc != 0x40) goto LAB_0002379c;" if (parenthesized_expression "(local_dc != 0x40)" ( (binary_expression "local_dc != 0x40" identifier != number_literal) )) (goto_statement "goto LAB_0002379c;" goto statement_identifier ;)) (expression_statement "bVar1 = pbVar9[1];" (assignment_expression "bVar1 = pbVar9[1]" identifier = (subscript_expression "pbVar9[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (uint)bVar1;" (assignment_expression "uVar7 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }" if (parenthesized_expression "(((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28))" ( (binary_expression "((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)" (parenthesized_expression "((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar6 + uVar7 * 2) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar6 + uVar7 * 2) & 4)" ( (binary_expression "*(byte *)(iVar6 + uVar7 * 2) & 4" (pointer_expression "*(byte *)(iVar6 + uVar7 * 2)" * (cast_expression "(byte *)(iVar6 + uVar7 * 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + uVar7 * 2)" ( (binary_expression "iVar6 + uVar7 * 2" identifier + (binary_expression "uVar7 * 2" identifier * number_literal)) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "(bVar1 == 0x2d || bVar1 == 0x28)" ( (binary_expression "bVar1 == 0x2d || bVar1 == 0x28" (binary_expression "bVar1 == 0x2d" identifier == number_literal) || (binary_expression "bVar1 == 0x28" identifier == number_literal)) ))) )) (compound_statement "{\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }" { (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar11 = FUN_000235f0(param_1,0,param_3);" (assignment_expression "iVar11 = FUN_000235f0(param_1,0,param_3)" identifier = (call_expression "FUN_000235f0(param_1,0,param_3)" identifier (argument_list "(param_1,0,param_3)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar11 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }" if (parenthesized_expression "(*(char *)*param_1 == ',')" ( (binary_expression "*(char *)*param_1 == ','" (pointer_expression "*(char *)*param_1" * (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) == (char_literal "','" ' character ')) )) (compound_statement "{\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }" { (expression_statement "*param_1 = (int)((char *)*param_1 + 1);" (assignment_expression "*param_1 = (int)((char *)*param_1 + 1)" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)((char *)*param_1 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((char *)*param_1 + 1)" ( (binary_expression "(char *)*param_1 + 1" (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier)) + number_literal) )))) ;) (expression_statement "uVar3 = uVar13;" (assignment_expression "uVar3 = uVar13" identifier = identifier) ;) (expression_statement "iVar6 = FUN_000235f0(param_1,0,param_3);" (assignment_expression "iVar6 = FUN_000235f0(param_1,0,param_3)" identifier = (call_expression "FUN_000235f0(param_1,0,param_3)" identifier (argument_list "(param_1,0,param_3)" ( identifier , number_literal , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                return 0;\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);" (assignment_expression "iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6)" identifier = (call_expression "FUN_0001fc20(uVar13,iVar11,iVar6)" identifier (argument_list "(uVar13,iVar11,iVar6)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar11 == 0) {\n                return 0;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                return 0;\n              }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }" if (parenthesized_expression "(local_40 != -1)" ( (binary_expression "local_40 != -1" identifier != number_literal) )) (compound_statement "{\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }" { (expression_statement "piVar5 = (int *)FUN_00020cf0();" (assignment_expression "piVar5 = (int *)FUN_00020cf0()" identifier = (cast_expression "(int *)FUN_00020cf0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00020cf0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar5 == (int *)0x0) {\n                  return 0;\n                }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*piVar5 = iVar11;" (assignment_expression "*piVar5 = iVar11" (pointer_expression "*piVar5" * identifier) = identifier) ;) })) (if_statement "if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }" if (parenthesized_expression "(local_e0 != -1)" ( (binary_expression "local_e0 != -1" identifier != number_literal) )) (compound_statement "{\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }" { (expression_statement "iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);" (assignment_expression "iVar6 = FUN_000201c0(uVar3,iVar11,local_e0)" identifier = (call_expression "FUN_000201c0(uVar3,iVar11,local_e0)" identifier (argument_list "(uVar3,iVar11,local_e0)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n                  return 0;\n                }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                  return 0;\n                }" { (return_statement "return 0;" return number_literal ;) })) (return_statement "return iVar11;" return identifier ;) })) (return_statement "return iVar11;" return identifier ;) })) (goto_statement "goto LAB_00023940;" goto statement_identifier ;) })) (while_statement "while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }" while (parenthesized_expression "((char)uVar7 != ';')" ( (binary_expression "(char)uVar7 != ';'" (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier) != (char_literal "';'" ' character ')) )) (compound_statement "{\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }" { (if_statement "if ((char)uVar7 == '\0') goto LAB_00023940;" if (parenthesized_expression "((char)uVar7 == '\0')" ( (binary_expression "(char)uVar7 == '\0'" (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00023940;" goto statement_identifier ;)) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (uint)*pbVar10;" (assignment_expression "uVar7 = (uint)*pbVar10" identifier = (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) })) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" * identifier) = (cast_expression "(int)pbVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar1 = pbVar9[1];" (assignment_expression "bVar1 = pbVar9[1]" identifier = (subscript_expression "pbVar9[1]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "(bVar1 == 0x53)" ( (binary_expression "bVar1 == 0x53" identifier == number_literal) )) ;) (if_statement "if (bVar1 != 0x73) break;" if (parenthesized_expression "(bVar1 != 0x73)" ( (binary_expression "bVar1 != 0x73" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);" (assignment_expression "lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10)" identifier = (call_expression "strtol((char *)(pbVar9 + 2),(char **)0x0,10)" identifier (argument_list "((char *)(pbVar9 + 2),(char **)0x0,10)" ( (cast_expression "(char *)(pbVar9 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar9 + 2)" ( (binary_expression "pbVar9 + 2" identifier + number_literal) ))) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (if_statement "if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" if (parenthesized_expression "(lVar4 < 8)" ( (binary_expression "lVar4 < 8" identifier < number_literal) )) (compound_statement "{\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }" { (expression_statement "local_e0 = -1;" (assignment_expression "local_e0 = -1" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }) (else_clause "else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" else (compound_statement "{\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" { (expression_statement "local_e0 = lVar4 >> 3;" (assignment_expression "local_e0 = lVar4 >> 3" identifier = (binary_expression "lVar4 >> 3" identifier >> number_literal)) ;) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) }))) })) }) while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) ;) }))) (labeled_statement "LAB_00023940:\n  FUN_00020930();" statement_identifier : (expression_statement "FUN_00020930();" (call_expression "FUN_00020930()" identifier (argument_list "()" ( ))) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) 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 = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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)) )))) + IDENT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })) (goto_statement goto statement_identifier ;) })) (while_statement while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) != (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }))) })) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (return_statement return LIT ;) })))
(function_definition "int FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}" (primitive_type "int") (function_declarator "FUN_000235f0(int *param_1,undefined4 *param_2,byte *param_3)" (identifier "FUN_000235f0") (parameter_list "(int *param_1,undefined4 *param_2,byte *param_3)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  long lVar4;\n  int *piVar5;\n  int iVar6;\n  uint uVar7;\n  char *pcVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  int unaff_EDI;\n  int iVar11;\n  undefined8 uVar12;\n  undefined4 uVar13;\n  int local_e0;\n  byte local_dc;\n  int local_40;\n  int local_3c;\n  \n  uVar12 = FUN_0001c3b7();\n  uVar13 = (undefined4)uVar12;\n  iVar11 = unaff_EDI + 0x1ca09;\n  if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }\n  pbVar9 = (byte *)*param_1;\n  if (param_3 <= pbVar9) {\n    return 0;\n  }\n  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;\n  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);\n  bVar1 = *pbVar9;\n  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }\nLAB_00023940:\n  FUN_00020930();\n  return 0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined8 uVar12;" (type_identifier "undefined8") (identifier "uVar12") (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "int local_e0;" (primitive_type "int") (identifier "local_e0") (; ";")) (declaration "byte local_dc;" (type_identifier "byte") (identifier "local_dc") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (expression_statement "uVar12 = FUN_0001c3b7();" (assignment_expression "uVar12 = FUN_0001c3b7()" (identifier "uVar12") (= "=") (call_expression "FUN_0001c3b7()" (identifier "FUN_0001c3b7") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar13 = (undefined4)uVar12;" (assignment_expression "uVar13 = (undefined4)uVar12" (identifier "uVar13") (= "=") (cast_expression "(undefined4)uVar12" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "iVar11 = unaff_EDI + 0x1ca09;" (assignment_expression "iVar11 = unaff_EDI + 0x1ca09" (identifier "iVar11") (= "=") (binary_expression "unaff_EDI + 0x1ca09" (identifier "unaff_EDI") (+ "+") (number_literal "0x1ca09"))) (; ";")) (if_statement "if (param_2 != (undefined4 *)0x0) {\n    *param_2 = 0;\n  }" (if "if") (parenthesized_expression "(param_2 != (undefined4 *)0x0)" (( "(") (binary_expression "param_2 != (undefined4 *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    *param_2 = 0;\n  }" ({ "{") (expression_statement "*param_2 = 0;" (assignment_expression "*param_2 = 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "pbVar9 = (byte *)*param_1;" (assignment_expression "pbVar9 = (byte *)*param_1" (identifier "pbVar9") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (param_3 <= pbVar9) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(param_3 <= pbVar9)" (( "(") (binary_expression "param_3 <= pbVar9" (identifier "param_3") (<= "<=") (identifier "pbVar9")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;" (assignment_expression "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0" (pointer_expression "*(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" (* "*") (cast_expression "(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)((ulonglong)uVar12 >> 0x20) + 0xe8)" (( "(") (binary_expression "(int)((ulonglong)uVar12 >> 0x20) + 0xe8" (cast_expression "(int)((ulonglong)uVar12 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar12 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar12 >> 0x20" (cast_expression "(ulonglong)uVar12" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar12")) (>> ">>") (number_literal "0x20")) () ")"))) (+ "+") (number_literal "0xe8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);" (assignment_expression "iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(&UNK_0001c9bd + unaff_EDI)" (* "*") (cast_expression "(int *)(&UNK_0001c9bd + unaff_EDI)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_0001c9bd + unaff_EDI)" (( "(") (binary_expression "&UNK_0001c9bd + unaff_EDI" (pointer_expression "&UNK_0001c9bd" (& "&") (identifier "UNK_0001c9bd")) (+ "+") (identifier "unaff_EDI")) () ")"))))) (; ";")) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" (identifier "bVar1") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";")) (if_statement "if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }\n  else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" (if "if") (parenthesized_expression "(((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d))" (( "(") (binary_expression "((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)" (parenthesized_expression "((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar6 + (uint)bVar1 * 2) & 4)" (( "(") (binary_expression "*(byte *)(iVar6 + (uint)bVar1 * 2) & 4" (pointer_expression "*(byte *)(iVar6 + (uint)bVar1 * 2)" (* "*") (cast_expression "(byte *)(iVar6 + (uint)bVar1 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + (uint)bVar1 * 2)" (( "(") (binary_expression "iVar6 + (uint)bVar1 * 2" (identifier "iVar6") (+ "+") (binary_expression "(uint)bVar1 * 2" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar1 != 0x28 && bVar1 != 0x2d)" (( "(") (binary_expression "bVar1 != 0x28 && bVar1 != 0x2d" (binary_expression "bVar1 != 0x28" (identifier "bVar1") (!= "!=") (number_literal "0x28")) (&& "&&") (binary_expression "bVar1 != 0x2d" (identifier "bVar1") (!= "!=") (number_literal "0x2d"))) () ")"))) () ")")) (compound_statement "{\n    pbVar10 = pbVar9 + 1;\n    local_dc = *pbVar9;\nLAB_0002379c:\n    *param_1 = (int)pbVar10;\n    if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }\n  }" ({ "{") (expression_statement "pbVar10 = pbVar9 + 1;" (assignment_expression "pbVar10 = pbVar9 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_dc = *pbVar9;" (assignment_expression "local_dc = *pbVar9" (identifier "local_dc") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";")) (labeled_statement "LAB_0002379c:\n    *param_1 = (int)pbVar10;" (statement_identifier "LAB_0002379c") (: ":") (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)pbVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar10"))) (; ";"))) (if_statement "if ((byte)(local_dc - 0x23) < 0x56) {\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }" (if "if") (parenthesized_expression "((byte)(local_dc - 0x23) < 0x56)" (( "(") (binary_expression "(byte)(local_dc - 0x23) < 0x56" (call_expression "(byte)(local_dc - 0x23)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(local_dc - 0x23)" (( "(") (binary_expression "local_dc - 0x23" (identifier "local_dc") (- "-") (number_literal "0x23")) () ")"))) (< "<") (number_literal "0x56")) () ")")) (compound_statement "{\n                    \n                    \n      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;\n      return iVar11;\n    }" ({ "{") (expression_statement "iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()\n      ;" (assignment_expression "iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()" (identifier "iVar11") (= "=") (call_expression "(*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()" (parenthesized_expression "(*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))" (( "(") (pointer_expression "*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" (* "*") (cast_expression "(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11)" (( "(") (binary_expression "*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11" (pointer_expression "*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" (* "*") (cast_expression "(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4)" (( "(") (binary_expression "iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4" (binary_expression "iVar11 + -47000" (identifier "iVar11") (+ "+") (number_literal "-47000")) (+ "+") (binary_expression "(uint)(byte)(local_dc - 0x23) * 4" (call_expression "(uint)(byte)(local_dc - 0x23)" (call_expression "(uint)(byte)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(byte)" (( "(") (identifier "byte") () ")"))) (argument_list "(local_dc - 0x23)" (( "(") (binary_expression "local_dc - 0x23" (identifier "local_dc") (- "-") (number_literal "0x23")) () ")"))) (* "*") (number_literal "4"))) () ")")))) (+ "+") (identifier "iVar11")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" (else "else") (compound_statement "{\n    iVar2 = FUN_00020b30(iVar11,uVar13);\n    if (iVar2 == 0) {\n      return 0;\n    }\n    pcVar8 = (char *)*param_1;\n    if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }\n    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }\n    local_e0 = -1;\n    *param_1 = (int)(pcVar8 + 1);\n    pbVar10 = (byte *)(pcVar8 + 1);\n    do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);\n  }" ({ "{") (expression_statement "iVar2 = FUN_00020b30(iVar11,uVar13);" (assignment_expression "iVar2 = FUN_00020b30(iVar11,uVar13)" (identifier "iVar2") (= "=") (call_expression "FUN_00020b30(iVar11,uVar13)" (identifier "FUN_00020b30") (argument_list "(iVar11,uVar13)" (( "(") (identifier "iVar11") (, ",") (identifier "uVar13") () ")")))) (; ";")) (if_statement "if (iVar2 == 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pcVar8 = (char *)*param_1;" (assignment_expression "pcVar8 = (char *)*param_1" (identifier "pcVar8") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (if_statement "if (*pcVar8 != '=') {\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }" (if "if") (parenthesized_expression "(*pcVar8 != '=')" (( "(") (binary_expression "*pcVar8 != '='" (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) (!= "!=") (char_literal "'='" (' "'") (character "=") (' "'"))) () ")")) (compound_statement "{\n      iVar11 = FUN_00020e50();\n      return iVar11;\n    }" ({ "{") (expression_statement "iVar11 = FUN_00020e50();" (assignment_expression "iVar11 = FUN_00020e50()" (identifier "iVar11") (= "=") (call_expression "FUN_00020e50()" (identifier "FUN_00020e50") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}"))) (if_statement "if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }" (if "if") (parenthesized_expression "(((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c))" (( "(") (binary_expression "((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)" (parenthesized_expression "((param_2 != (undefined4 *)0x0) && (-1 < local_40))" (( "(") (binary_expression "(param_2 != (undefined4 *)0x0) && (-1 < local_40)" (parenthesized_expression "(param_2 != (undefined4 *)0x0)" (( "(") (binary_expression "param_2 != (undefined4 *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < local_40)" (( "(") (binary_expression "-1 < local_40" (number_literal "-1") (< "<") (identifier "local_40")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(-1 < local_3c)" (( "(") (binary_expression "-1 < local_3c" (number_literal "-1") (< "<") (identifier "local_3c")) () ")"))) () ")")) (compound_statement "{\n      uVar3 = FUN_00020cf0();\n      *param_2 = uVar3;\n      pcVar8 = (char *)*param_1;\n    }" ({ "{") (expression_statement "uVar3 = FUN_00020cf0();" (assignment_expression "uVar3 = FUN_00020cf0()" (identifier "uVar3") (= "=") (call_expression "FUN_00020cf0()" (identifier "FUN_00020cf0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*param_2 = uVar3;" (assignment_expression "*param_2 = uVar3" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "pcVar8 = (char *)*param_1;" (assignment_expression "pcVar8 = (char *)*param_1" (identifier "pcVar8") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}"))) (expression_statement "local_e0 = -1;" (assignment_expression "local_e0 = -1" (identifier "local_e0") (= "=") (number_literal "-1")) (; ";")) (expression_statement "*param_1 = (int)(pcVar8 + 1);" (assignment_expression "*param_1 = (int)(pcVar8 + 1)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)(pcVar8 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar8 + 1)" (( "(") (binary_expression "pcVar8 + 1" (identifier "pcVar8") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pbVar10 = (byte *)(pcVar8 + 1);" (assignment_expression "pbVar10 = (byte *)(pcVar8 + 1)" (identifier "pbVar10") (= "=") (cast_expression "(byte *)(pcVar8 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar8 + 1)" (( "(") (binary_expression "pcVar8 + 1" (identifier "pcVar8") (+ "+") (number_literal "1")) () ")")))) (; ";")) (do_statement "do {\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    } while (bVar1 != 0);" (do "do") (compound_statement "{\n      while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }\n    }" ({ "{") (while_statement "while( true ) {\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);\n        if (bVar1 != 0x73) break;\n        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);\n        if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }\n      }" ({ "{") (do_statement "do {\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        } while (bVar1 == 0x53);" (do "do") (compound_statement "{\n          pbVar9 = pbVar10;\n          local_dc = *pbVar9;\n          pbVar10 = pbVar9 + 1;\n          if (local_dc != 0x40) goto LAB_0002379c;\n          bVar1 = pbVar9[1];\n          uVar7 = (uint)bVar1;\n          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }\n          while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }\n          pbVar10 = pbVar10 + 1;\n          *param_1 = (int)pbVar10;\n          bVar1 = pbVar9[1];\n        }" ({ "{") (expression_statement "pbVar9 = pbVar10;" (assignment_expression "pbVar9 = pbVar10" (identifier "pbVar9") (= "=") (identifier "pbVar10")) (; ";")) (expression_statement "local_dc = *pbVar9;" (assignment_expression "local_dc = *pbVar9" (identifier "local_dc") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";")) (expression_statement "pbVar10 = pbVar9 + 1;" (assignment_expression "pbVar10 = pbVar9 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_dc != 0x40) goto LAB_0002379c;" (if "if") (parenthesized_expression "(local_dc != 0x40)" (( "(") (binary_expression "local_dc != 0x40" (identifier "local_dc") (!= "!=") (number_literal "0x40")) () ")")) (goto_statement "goto LAB_0002379c;" (goto "goto") (statement_identifier "LAB_0002379c") (; ";"))) (expression_statement "bVar1 = pbVar9[1];" (assignment_expression "bVar1 = pbVar9[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = (uint)bVar1;" (assignment_expression "uVar7 = (uint)bVar1" (identifier "uVar7") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }" (if "if") (parenthesized_expression "(((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28))" (( "(") (binary_expression "((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)" (parenthesized_expression "((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(iVar6 + uVar7 * 2) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar6 + uVar7 * 2) & 4)" (( "(") (binary_expression "*(byte *)(iVar6 + uVar7 * 2) & 4" (pointer_expression "*(byte *)(iVar6 + uVar7 * 2)" (* "*") (cast_expression "(byte *)(iVar6 + uVar7 * 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + uVar7 * 2)" (( "(") (binary_expression "iVar6 + uVar7 * 2" (identifier "iVar6") (+ "+") (binary_expression "uVar7 * 2" (identifier "uVar7") (* "*") (number_literal "2"))) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar1 == 0x2d || bVar1 == 0x28)" (( "(") (binary_expression "bVar1 == 0x2d || bVar1 == 0x28" (binary_expression "bVar1 == 0x2d" (identifier "bVar1") (== "==") (number_literal "0x2d")) (|| "||") (binary_expression "bVar1 == 0x28" (identifier "bVar1") (== "==") (number_literal "0x28"))) () ")"))) () ")")) (compound_statement "{\n            *param_1 = (int)pbVar10;\n            iVar11 = FUN_000235f0(param_1,0,param_3);\n            if (iVar11 == 0) {\n              return 0;\n            }\n            if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }\n            goto LAB_00023940;\n          }" ({ "{") (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)pbVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar10"))) (; ";")) (expression_statement "iVar11 = FUN_000235f0(param_1,0,param_3);" (assignment_expression "iVar11 = FUN_000235f0(param_1,0,param_3)" (identifier "iVar11") (= "=") (call_expression "FUN_000235f0(param_1,0,param_3)" (identifier "FUN_000235f0") (argument_list "(param_1,0,param_3)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar11 == 0) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(char *)*param_1 == ',') {\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }" (if "if") (parenthesized_expression "(*(char *)*param_1 == ',')" (( "(") (binary_expression "*(char *)*param_1 == ','" (pointer_expression "*(char *)*param_1" (* "*") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (== "==") (char_literal "','" (' "'") (character ",") (' "'"))) () ")")) (compound_statement "{\n              *param_1 = (int)((char *)*param_1 + 1);\n              uVar3 = uVar13;\n              iVar6 = FUN_000235f0(param_1,0,param_3);\n              if (iVar6 == 0) {\n                return 0;\n              }\n              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);\n              if (iVar11 == 0) {\n                return 0;\n              }\n              if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }\n              if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }\n              return iVar11;\n            }" ({ "{") (expression_statement "*param_1 = (int)((char *)*param_1 + 1);" (assignment_expression "*param_1 = (int)((char *)*param_1 + 1)" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)((char *)*param_1 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((char *)*param_1 + 1)" (( "(") (binary_expression "(char *)*param_1 + 1" (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar3 = uVar13;" (assignment_expression "uVar3 = uVar13" (identifier "uVar3") (= "=") (identifier "uVar13")) (; ";")) (expression_statement "iVar6 = FUN_000235f0(param_1,0,param_3);" (assignment_expression "iVar6 = FUN_000235f0(param_1,0,param_3)" (identifier "iVar6") (= "=") (call_expression "FUN_000235f0(param_1,0,param_3)" (identifier "FUN_000235f0") (argument_list "(param_1,0,param_3)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n                return 0;\n              }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);" (assignment_expression "iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6)" (identifier "iVar11") (= "=") (call_expression "FUN_0001fc20(uVar13,iVar11,iVar6)" (identifier "FUN_0001fc20") (argument_list "(uVar13,iVar11,iVar6)" (( "(") (identifier "uVar13") (, ",") (identifier "iVar11") (, ",") (identifier "iVar6") () ")")))) (; ";")) (if_statement "if (iVar11 == 0) {\n                return 0;\n              }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                return 0;\n              }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (local_40 != -1) {\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }" (if "if") (parenthesized_expression "(local_40 != -1)" (( "(") (binary_expression "local_40 != -1" (identifier "local_40") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n                piVar5 = (int *)FUN_00020cf0();\n                if (piVar5 == (int *)0x0) {\n                  return 0;\n                }\n                *piVar5 = iVar11;\n              }" ({ "{") (expression_statement "piVar5 = (int *)FUN_00020cf0();" (assignment_expression "piVar5 = (int *)FUN_00020cf0()" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_00020cf0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00020cf0()" (identifier "FUN_00020cf0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar5 == (int *)0x0) {\n                  return 0;\n                }" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  return 0;\n                }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*piVar5 = iVar11;" (assignment_expression "*piVar5 = iVar11" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (identifier "iVar11")) (; ";")) (} "}"))) (if_statement "if (local_e0 != -1) {\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }" (if "if") (parenthesized_expression "(local_e0 != -1)" (( "(") (binary_expression "local_e0 != -1" (identifier "local_e0") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);\n                if (iVar6 == 0) {\n                  return 0;\n                }\n                return iVar11;\n              }" ({ "{") (expression_statement "iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);" (assignment_expression "iVar6 = FUN_000201c0(uVar3,iVar11,local_e0)" (identifier "iVar6") (= "=") (call_expression "FUN_000201c0(uVar3,iVar11,local_e0)" (identifier "FUN_000201c0") (argument_list "(uVar3,iVar11,local_e0)" (( "(") (identifier "uVar3") (, ",") (identifier "iVar11") (, ",") (identifier "local_e0") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n                  return 0;\n                }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  return 0;\n                }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}"))) (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}"))) (goto_statement "goto LAB_00023940;" (goto "goto") (statement_identifier "LAB_00023940") (; ";")) (} "}"))) (while_statement "while ((char)uVar7 != ';') {\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }" (while "while") (parenthesized_expression "((char)uVar7 != ';')" (( "(") (binary_expression "(char)uVar7 != ';'" (cast_expression "(char)uVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar7")) (!= "!=") (char_literal "';'" (' "'") (character ";") (' "'"))) () ")")) (compound_statement "{\n            if ((char)uVar7 == '\0') goto LAB_00023940;\n            pbVar10 = pbVar10 + 1;\n            uVar7 = (uint)*pbVar10;\n          }" ({ "{") (if_statement "if ((char)uVar7 == '\0') goto LAB_00023940;" (if "if") (parenthesized_expression "((char)uVar7 == '\0')" (( "(") (binary_expression "(char)uVar7 == '\0'" (cast_expression "(char)uVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar7")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00023940;" (goto "goto") (statement_identifier "LAB_00023940") (; ";"))) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = (uint)*pbVar10;" (assignment_expression "uVar7 = (uint)*pbVar10" (identifier "uVar7") (= "=") (binary_expression "(uint)*pbVar10" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar10"))) (; ";")) (} "}"))) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_1 = (int)pbVar10;" (assignment_expression "*param_1 = (int)pbVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(int)pbVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar10"))) (; ";")) (expression_statement "bVar1 = pbVar9[1];" (assignment_expression "bVar1 = pbVar9[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar9[1]" (identifier "pbVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar1 == 0x53)" (( "(") (binary_expression "bVar1 == 0x53" (identifier "bVar1") (== "==") (number_literal "0x53")) () ")")) (; ";")) (if_statement "if (bVar1 != 0x73) break;" (if "if") (parenthesized_expression "(bVar1 != 0x73)" (( "(") (binary_expression "bVar1 != 0x73" (identifier "bVar1") (!= "!=") (number_literal "0x73")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);" (assignment_expression "lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10)" (identifier "lVar4") (= "=") (call_expression "strtol((char *)(pbVar9 + 2),(char **)0x0,10)" (identifier "strtol") (argument_list "((char *)(pbVar9 + 2),(char **)0x0,10)" (( "(") (cast_expression "(char *)(pbVar9 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pbVar9 + 2)" (( "(") (binary_expression "pbVar9 + 2" (identifier "pbVar9") (+ "+") (number_literal "2")) () ")"))) (, ",") (cast_expression "(char **)0x0" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0")) (, ",") (number_literal "10") () ")")))) (; ";")) (if_statement "if (lVar4 < 8) {\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }\n        else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" (if "if") (parenthesized_expression "(lVar4 < 8)" (( "(") (binary_expression "lVar4 < 8" (identifier "lVar4") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n          local_e0 = -1;\n          pbVar10 = (byte *)*param_1;\n        }" ({ "{") (expression_statement "local_e0 = -1;" (assignment_expression "local_e0 = -1" (identifier "local_e0") (= "=") (number_literal "-1")) (; ";")) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" (identifier "pbVar10") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}")) (else_clause "else {\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" (else "else") (compound_statement "{\n          local_e0 = lVar4 >> 3;\n          pbVar10 = (byte *)*param_1;\n        }" ({ "{") (expression_statement "local_e0 = lVar4 >> 3;" (assignment_expression "local_e0 = lVar4 >> 3" (identifier "local_e0") (= "=") (binary_expression "lVar4 >> 3" (identifier "lVar4") (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "pbVar10 = (byte *)*param_1;" (assignment_expression "pbVar10 = (byte *)*param_1" (identifier "pbVar10") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (} "}")))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (labeled_statement "LAB_00023940:\n  FUN_00020930();" (statement_identifier "LAB_00023940") (: ":") (expression_statement "FUN_00020930();" (call_expression "FUN_00020930()" (identifier "FUN_00020930") (argument_list "()" (( "(") () ")"))) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

type_1
function_1(void *dhandle,type_2 *var_3,char *var_4,char **pp,
               type_3 **slotp,char *p_end)

{
  type_4 var_7;
  type_4 *var_5;
  int var_6;
  type_5 var_10;
  type_6 *pbVar4;
  long var_25;
  type_3 *var_20;
  type_1 var_16;
  type_1 var_17;
  type_3 var_19;
  type_2 *info_00;
  type_7 var_15;
  char *var_13;
  type_4 *var_14;
  type_4 *var_23;
  int var_2;
  type_3 **slotp_00;
  type_8 uVar12;
  char **pp_00;
  char *p_end_00;
  type_7 var_21;
  type_4 var_8;
  type_5 varargs;
  type_5 varargs_1;
  char *p;
  int typenums [2];
  int xtypenums [2];
  
  uVar12 = var_1();
  info_00 = (type_2 *)((type_9)uVar12 >> 0x20);
  p_end_00 = (char *)uVar12;
  slotp_00 = (type_3 **)(var_2 + 0x1ca09);
  if (var_3 != (type_2 *)0x0) {
    var_3->abfd = (type_6 *)0x0;
  }
                    /* WARNING: Load size is inaccurate */
  var_5 = *dhandle;
  if (var_4 <= var_5) {
    return (type_1)0x0;
  }
  info_00->self_crossref = 0;
  var_6 = *(int *)(&UNK_0001c9bd + var_2);
  var_7 = *var_5;
  if (((*(type_4 *)(var_6 + (type_7)var_7 * 2) & 4) == 0) && (var_7 != 0x28 && var_7 != 0x2d)) {
    var_23 = var_5 + 1;
    typenums[1] = -1;
    typenums[0] = -1;
    var_8 = *var_5;
LAB_0002379c:
    *(type_4 **)dhandle = var_23;
    if ((type_4)(var_8 - 0x23) < 0x56) {
                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      var_16 = (type_1)
               (*(type_10 *)((int)slotp_00[(type_4)(var_8 - 0x23) - 0x2de6] + (int)slotp_00))();
      return var_16;
    }
  }
  else {
    pp_00 = (char **)0x2368c;
    var_10 = var_9((char **)dhandle,typenums,var_4);
    if (var_10 == 0) {
      return (type_1)0x0;
    }
                    /* WARNING: Load size is inaccurate */
    var_13 = *dhandle;
    if (*var_13 != '=') {
      var_16 = var_11(p_end_00,info_00,typenums);
      return var_16;
    }
    if (((var_3 != (type_2 *)0x0) && (-1 < typenums[0])) && (-1 < typenums[1])) {
      pp_00 = (char **)0x236d1;
      pbVar4 = (type_6 *)var_12((type_2 *)&info_00->files,(int *)&info_00->file_types,
                                     (type_2 *)typenums);
      var_3->abfd = pbVar4;
                    /* WARNING: Load size is inaccurate */
      var_13 = *dhandle;
    }
    var_21 = 0xffffffff;
    *(char **)dhandle = var_13 + 1;
    var_23 = (type_4 *)(var_13 + 1);
    do {
      while( true ) {
        do {
          var_14 = var_23;
          var_8 = *var_14;
          var_23 = var_14 + 1;
          if (var_8 != 0x40) goto LAB_0002379c;
          var_7 = var_14[1];
          var_15 = (type_7)var_7;
          if (((*(type_4 *)(var_6 + var_15 * 2) & 4) != 0) || (var_7 == 0x2d || var_7 == 0x28)) {
            *(type_4 **)dhandle = var_23;
            var_16 = function_1(dhandle,(type_2 *)0x0,var_4,pp_00,slotp_00,p_end_00);
            if (var_16 == (type_1)0x0) {
              return (type_1)0x0;
            }
                    /* WARNING: Load size is inaccurate */
            if (**dhandle == ',') {
              *(char **)dhandle = *dhandle + 1;
              var_13 = p_end_00;
              var_17 = function_1(dhandle,(type_2 *)0x0,var_4,pp_00,slotp_00,
                                            p_end_00);
              if (var_17 == (type_1)0x0) {
                return (type_1)0x0;
              }
              var_19 = var_18(p_end_00,var_16,var_17);
              if (var_19 == (type_3)0x0) {
                return (type_1)0x0;
              }
              if (typenums[0] != -1) {
                var_20 = var_12((type_2 *)&info_00->files,(int *)&info_00->file_types,
                                         (type_2 *)typenums);
                if (var_20 == (type_3 *)0x0) {
                  return (type_1)0x0;
                }
                *var_20 = var_19;
              }
              if (var_21 != 0xffffffff) {
                var_10 = var_22(var_13,var_19,var_21);
                if (var_10 == 0) {
                  return (type_1)0x0;
                }
                return var_19;
              }
              return var_19;
            }
            goto _L900;
          }
          while ((char)var_15 != ';') {
            if ((char)var_15 == '\0') goto _L900;
            var_23 = var_23 + 1;
            var_15 = (type_7)*var_23;
          }
          var_23 = var_23 + 1;
          *(type_4 **)dhandle = var_23;
          var_7 = var_14[1];
        } while (var_7 == 0x53);
        if (var_7 != 0x73) break;
        var_25 = var_24((char *)(var_14 + 2),(char **)0x0,10);
        if (var_25 < 8) {
          var_21 = 0xffffffff;
                    /* WARNING: Load size is inaccurate */
          var_23 = *dhandle;
        }
        else {
          var_21 = var_25 >> 3;
                    /* WARNING: Load size is inaccurate */
          var_23 = *dhandle;
        }
      }
    } while (var_7 != 0);
  }
_L900:
  var_26((char *)var_5);
  return (type_1)0x0;
}


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

int MASKED(int *param_1,undefined4 *param_2,byte *param_3)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  long lVar4;
  int *piVar5;
  int iVar6;
  uint uVar7;
  char *pcVar8;
  byte *pbVar9;
  byte *pbVar10;
  int unaff_EDI;
  int iVar11;
  undefined8 uVar12;
  undefined4 uVar13;
  int local_e0;
  byte local_dc;
  int local_40;
  int local_3c;
  
  uVar12 = FUN_0001c3b7();
  uVar13 = (undefined4)uVar12;
  iVar11 = unaff_EDI + 0x1ca09;
  if (param_2 != (undefined4 *)0x0) {
    *param_2 = 0;
  }
  pbVar9 = (byte *)*param_1;
  if (param_3 <= pbVar9) {
    return 0;
  }
  *(undefined4 *)((int)((ulonglong)uVar12 >> 0x20) + 0xe8) = 0;
  iVar6 = *(int *)(&UNK_0001c9bd + unaff_EDI);
  bVar1 = *pbVar9;
  if (((*(byte *)(iVar6 + (uint)bVar1 * 2) & 4) == 0) && (bVar1 != 0x28 && bVar1 != 0x2d)) {
    pbVar10 = pbVar9 + 1;
    local_dc = *pbVar9;
LAB_0002379c:
    *param_1 = (int)pbVar10;
    if ((byte)(local_dc - 0x23) < 0x56) {
                    /* WARNING: Could not recover jumptable at 0x000237c4. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      iVar11 = (*(code *)(*(int *)(iVar11 + -47000 + (uint)(byte)(local_dc - 0x23) * 4) + iVar11))()
      ;
      return iVar11;
    }
  }
  else {
    iVar2 = FUN_00020b30(iVar11,uVar13);
    if (iVar2 == 0) {
      return 0;
    }
    pcVar8 = (char *)*param_1;
    if (*pcVar8 != '=') {
      iVar11 = FUN_00020e50();
      return iVar11;
    }
    if (((param_2 != (undefined4 *)0x0) && (-1 < local_40)) && (-1 < local_3c)) {
      uVar3 = FUN_00020cf0();
      *param_2 = uVar3;
      pcVar8 = (char *)*param_1;
    }
    local_e0 = -1;
    *param_1 = (int)(pcVar8 + 1);
    pbVar10 = (byte *)(pcVar8 + 1);
    do {
      while( true ) {
        do {
          pbVar9 = pbVar10;
          local_dc = *pbVar9;
          pbVar10 = pbVar9 + 1;
          if (local_dc != 0x40) goto LAB_0002379c;
          bVar1 = pbVar9[1];
          uVar7 = (uint)bVar1;
          if (((*(byte *)(iVar6 + uVar7 * 2) & 4) != 0) || (bVar1 == 0x2d || bVar1 == 0x28)) {
            *param_1 = (int)pbVar10;
            iVar11 = MASKED(param_1,0,param_3);
            if (iVar11 == 0) {
              return 0;
            }
            if (*(char *)*param_1 == ',') {
              *param_1 = (int)((char *)*param_1 + 1);
              uVar3 = uVar13;
              iVar6 = MASKED(param_1,0,param_3);
              if (iVar6 == 0) {
                return 0;
              }
              iVar11 = FUN_0001fc20(uVar13,iVar11,iVar6);
              if (iVar11 == 0) {
                return 0;
              }
              if (local_40 != -1) {
                piVar5 = (int *)FUN_00020cf0();
                if (piVar5 == (int *)0x0) {
                  return 0;
                }
                *piVar5 = iVar11;
              }
              if (local_e0 != -1) {
                iVar6 = FUN_000201c0(uVar3,iVar11,local_e0);
                if (iVar6 == 0) {
                  return 0;
                }
                return iVar11;
              }
              return iVar11;
            }
            goto LAB_00023940;
          }
          while ((char)uVar7 != ';') {
            if ((char)uVar7 == '\0') goto LAB_00023940;
            pbVar10 = pbVar10 + 1;
            uVar7 = (uint)*pbVar10;
          }
          pbVar10 = pbVar10 + 1;
          *param_1 = (int)pbVar10;
          bVar1 = pbVar9[1];
        } while (bVar1 == 0x53);
        if (bVar1 != 0x73) break;
        lVar4 = strtol((char *)(pbVar9 + 2),(char **)0x0,10);
        if (lVar4 < 8) {
          local_e0 = -1;
          pbVar10 = (byte *)*param_1;
        }
        else {
          local_e0 = lVar4 >> 3;
          pbVar10 = (byte *)*param_1;
        }
      }
    } while (bVar1 != 0);
  }
LAB_00023940:
  FUN_00020930();
  return 0;
}

