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

bfd_boolean __regparm3
stab_demangle_qualified(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)

{
  char cVar1;
  byte bVar2;
  byte bVar3;
  char *s;
  byte *pbVar4;
  undefined *puVar5;
  bfd_boolean bVar6;
  size_t sVar7;
  debug_field *ppdVar8;
  debug_type_kind kind;
  debug_type pdVar9;
  char *__s1;
  int iVar10;
  debug_field field;
  char *pcVar11;
  uint uVar12;
  byte *pbVar13;
  uint len;
  long local_4c;
  debug_type_conflict local_40;
  char *name;
  undefined4 uStack_14;
  
  puVar5 = PTR__sch_istable_00072fc4;
  uStack_14 = 0x41589;
  s = *pp;
  cVar1 = s[1];
  if ('0' < cVar1) {
    if (cVar1 < ':') {
      local_4c = cVar1 + -0x30;
      *pp = s + (s[2] == '_') + 2;
LAB_00041652:
      puVar5 = PTR__sch_istable_00072fc4;
      local_40 = (debug_type_conflict)0x0;
      do {
        if (local_4c == 0) {
          if (ptype == (debug_type_conflict *)0x0) {
            return 1;
          }
          *ptype = local_40;
          return 1;
        }
        pbVar4 = (byte *)*pp;
        bVar2 = *pbVar4;
        pbVar13 = pbVar4;
        if (bVar2 == 0x5f) {
          pbVar13 = pbVar4 + 1;
          *pp = (char *)pbVar13;
          bVar2 = pbVar4[1];
        }
        uVar12 = (uint)bVar2;
        if (bVar2 == 0x74) {
          if (ptype == (debug_type_conflict *)0x0) {
            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);
          }
          else {
            bVar6 = stab_demangle_template(minfo,pp,&name);
            pcVar11 = name;
            if (bVar6 == 0) {
              return 0;
            }
            sVar7 = strlen(name);
            local_40 = stab_find_tagged_type
                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,
                                  DEBUG_KIND_CLASS);
            free(name);
            pdVar9 = local_40;
          }
          if (pdVar9 == (debug_type)0x0) {
            return 0;
          }
        }
        else {
          len = 0;
          if ((puVar5[uVar12 * 2] & 4) != 0) {
            len = 0;
            do {
              pbVar13 = pbVar13 + 1;
              *pp = (char *)pbVar13;
              len = (char)uVar12 + -0x30 + len * 10;
              uVar12 = (uint)*pbVar13;
            } while ((puVar5[uVar12 * 2] & 4) != 0);
            sVar7 = strlen((char *)pbVar13);
            if (sVar7 < len) goto LAB_00041620;
          }
          if (ptype != (debug_type_conflict *)0x0) {
            if ((local_40 != (debug_type_conflict)0x0) &&
               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))
            {
              pcVar11 = savestring(*pp,len);
              field = *ppdVar8;
              if (field == (debug_field)0x0) {
                free(pcVar11);
              }
              else {
                do {
                  local_40 = debug_get_field_type(minfo->dhandle,field);
                  if (local_40 == (debug_type_conflict)0x0) {
                    free(pcVar11);
                    return 0;
                  }
                  __s1 = debug_get_type_name(minfo->dhandle,local_40);
                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {
                    free(pcVar11);
                    *pp = *pp + len;
                    goto LAB_000416db;
                  }
                  ppdVar8 = ppdVar8 + 1;
                  field = *ppdVar8;
                } while (field != (debug_field)0x0);
                free(pcVar11);
              }
            }
            kind = DEBUG_KIND_CLASS;
            if (local_4c == 1) {
              pcVar11 = savestring(*pp,len);
              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);
              free(pcVar11);
              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;
              kind = DEBUG_KIND_ILLEGAL;
            }
            local_40 = stab_find_tagged_type
                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);
            if (local_40 == (debug_type)0x0) {
              return 0;
            }
          }
LAB_000417be:
          *pp = *pp + len;
        }
LAB_000416db:
        local_4c = local_4c + -1;
      } while( true );
    }
    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&
       (s[2] != 0x30)) {
      pbVar13 = (byte *)(s + 2);
      local_4c = strtol((char *)pbVar13,(char **)0x0,10);
      bVar2 = s[2];
      bVar3 = puVar5[(uint)bVar2 * 2];
      while ((bVar3 & 4) != 0) {
        pbVar13 = pbVar13 + 1;
        bVar2 = *pbVar13;
        bVar3 = puVar5[(uint)bVar2 * 2];
      }
      if (bVar2 == 0x5f) {
        *pp = (char *)(pbVar13 + 1);
        goto LAB_00041652;
      }
    }
  }
LAB_00041620:
  stab_bad_demangle(s);
  return 0;
}



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

undefined4 __regparm3 FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)

{
  char cVar1;
  byte bVar2;
  byte bVar3;
  byte *pbVar4;
  undefined *puVar5;
  size_t sVar6;
  int *piVar7;
  undefined4 uVar8;
  char *__s2;
  char *__s1;
  int iVar9;
  void *__ptr;
  uint uVar10;
  byte *pbVar11;
  uint uVar12;
  long local_4c;
  int local_40;
  char *local_20;
  
  puVar5 = PTR__sch_istable_00072fc4;
  iVar9 = *param_2;
  cVar1 = *(char *)(iVar9 + 1);
  if ('0' < cVar1) {
    if (cVar1 < ':') {
      local_4c = cVar1 + -0x30;
      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');
LAB_00041652:
      puVar5 = PTR__sch_istable_00072fc4;
      local_40 = 0;
      do {
        if (local_4c == 0) {
          if (param_3 == (int *)0x0) {
            return 1;
          }
          *param_3 = local_40;
          return 1;
        }
        pbVar4 = (byte *)*param_2;
        bVar2 = *pbVar4;
        pbVar11 = pbVar4;
        if (bVar2 == 0x5f) {
          pbVar11 = pbVar4 + 1;
          *param_2 = (int)pbVar11;
          bVar2 = pbVar4[1];
        }
        uVar10 = (uint)bVar2;
        if (bVar2 == 0x74) {
          if (param_3 == (int *)0x0) {
            iVar9 = FUN_00040f70();
          }
          else {
            iVar9 = FUN_00040f70();
            if (iVar9 == 0) {
              return 0;
            }
            sVar6 = strlen(local_20);
            local_40 = FUN_0003fa10(sVar6,9);
            free(local_20);
            iVar9 = local_40;
          }
          if (iVar9 == 0) {
            return 0;
          }
        }
        else {
          uVar12 = 0;
          if ((puVar5[uVar10 * 2] & 4) != 0) {
            uVar12 = 0;
            do {
              pbVar11 = pbVar11 + 1;
              *param_2 = (int)pbVar11;
              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;
              uVar10 = (uint)*pbVar11;
            } while ((puVar5[uVar10 * 2] & 4) != 0);
            sVar6 = strlen((char *)pbVar11);
            if (sVar6 < uVar12) goto LAB_00041620;
          }
          if (param_3 != (int *)0x0) {
            if ((local_40 != 0) &&
               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {
              __s2 = (char *)FUN_0003f060();
              iVar9 = *piVar7;
              if (iVar9 == 0) {
                free(__s2);
              }
              else {
                do {
                  local_40 = FUN_0003ec90(*param_1,iVar9);
                  if (local_40 == 0) {
                    free(__s2);
                    return 0;
                  }
                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);
                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {
                    free(__s2);
                    *param_2 = *param_2 + uVar12;
                    goto LAB_000416db;
                  }
                  piVar7 = piVar7 + 1;
                  iVar9 = *piVar7;
                } while (iVar9 != 0);
                free(__s2);
              }
            }
            uVar8 = 9;
            if (local_4c == 1) {
              __ptr = (void *)FUN_0003f060();
              local_40 = FUN_0003e8b0(*param_1,__ptr);
              free(__ptr);
              if (local_40 != 0) goto LAB_000417be;
              uVar8 = 0;
            }
            local_40 = FUN_0003fa10(uVar12,uVar8);
            if (local_40 == 0) {
              return 0;
            }
          }
LAB_000417be:
          *param_2 = *param_2 + uVar12;
        }
LAB_000416db:
        local_4c = local_4c + -1;
      } while( true );
    }
    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))
       && (*(byte *)(iVar9 + 2) != 0x30)) {
      pbVar11 = (byte *)(iVar9 + 2);
      local_4c = strtol((char *)pbVar11,(char **)0x0,10);
      bVar2 = *(byte *)(iVar9 + 2);
      bVar3 = puVar5[(uint)bVar2 * 2];
      while ((bVar3 & 4) != 0) {
        pbVar11 = pbVar11 + 1;
        bVar2 = *pbVar11;
        bVar3 = puVar5[(uint)bVar2 * 2];
      }
      if (bVar2 == 0x5f) {
        *param_2 = (int)(pbVar11 + 1);
        goto LAB_00041652;
      }
    }
  }
LAB_00041620:
  FUN_0003ef70();
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000153d0
ADD EBX,0x31a77
SUB ESP,0x4c
MOV ESI,dword ptr [EDX]
MOV dword ptr [ESP + 0x14],EAX
MOVSX EAX,byte ptr [ESI + 0x1]
MOV dword ptr [ESP + 0x18],ECX
MOV dword ptr [ESP + 0x24],ESI
CMP AL,0x31
JL 0x00041620
MOV EDI,EDX
CMP AL,0x39
JLE 0x00041638
CMP AL,0x5f
JNZ 0x00041620
MOVZX EDX,byte ptr [ESI + 0x2]
MOV EBP,dword ptr [EBX + 0xffffffc4]
TEST byte ptr [EBP + EDX*0x2],0x4
JZ 0x00041620
CMP DL,0x30
JZ 0x00041620
MOV EAX,dword ptr [ESP + 0x24]
SUB ESP,0x4
PUSH 0xa
LEA ESI,[EAX + 0x2]
PUSH 0x0
PUSH ESI
CALL 0x000147d0
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x34]
ADD ESP,0x10
MOVZX EDX,byte ptr [EAX + 0x2]
MOV EAX,EDX
TEST byte ptr [EBP + EDX*0x2],0x4
JZ 0x0004160f
LEA ESI,[ESI]
LEA ESI,[ESI]
ADD ESI,0x1
MOVZX EDX,byte ptr [ESI]
MOV EAX,EDX
TEST byte ptr [EBP + EDX*0x2],0x4
JNZ 0x00041600
CMP AL,0x5f
JNZ 0x00041620
ADD ESI,0x1
MOV dword ptr [ESP + 0x10],ECX
MOV dword ptr [EDI],ESI
JMP 0x00041652
MOV EAX,dword ptr [ESP + 0x24]
CALL 0x0003ef70
XOR EAX,EAX
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [ESP + 0x24]
SUB EAX,0x30
MOV dword ptr [ESP + 0x10],EAX
XOR EAX,EAX
CMP byte ptr [ESI + 0x2],0x5f
SETZ AL
LEA EAX,[ESI + EAX*0x1 + 0x2]
MOV dword ptr [EDX],EAX
LEA EAX,[ESP + 0x3c]
MOV dword ptr [ESP + 0x1c],0x0
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [EBX + 0xffffffc4]
MOV dword ptr [ESP + 0x8],EAX
JMP 0x000416e0
MOV ESI,dword ptr [ESP + 0x18]
TEST ESI,ESI
JZ 0x000417c8
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x14]
MOV EDX,EDI
CALL 0x00040f70
TEST EAX,EAX
JZ 0x000417dd
MOV ESI,dword ptr [ESP + 0x3c]
SUB ESP,0xc
PUSH ESI
CALL 0x00014480
POP EBP
POP EDX
MOV EBP,dword ptr [ESP + 0x1c]
MOV ECX,dword ptr [EBP + 0x4]
MOV dword ptr [ESP + 0x14],ECX
LEA EDX,[ECX + 0xe4]
MOV ECX,ESI
PUSH 0x9
PUSH EAX
MOV EAX,dword ptr [EBP]
CALL 0x0003fa10
MOV dword ptr [ESP + 0x2c],EAX
POP ECX
MOV ESI,EAX
PUSH dword ptr [ESP + 0x48]
CALL 0x00014120
ADD ESP,0x10
TEST ESI,ESI
JZ 0x000417dd
SUB dword ptr [ESP + 0x10],0x1
MOV EDX,dword ptr [ESP + 0x10]
TEST EDX,EDX
JZ 0x000418c8
MOV EAX,dword ptr [EDI]
MOVZX EDX,byte ptr [EAX]
CMP DL,0x5f
JNZ 0x00041701
LEA ECX,[EAX + 0x1]
MOV dword ptr [EDI],ECX
MOVZX EDX,byte ptr [EAX + 0x1]
MOV EAX,ECX
CMP DL,0x74
JZ 0x00041670
MOV EBP,dword ptr [ESP + 0x8]
MOVZX ECX,DL
ADD EAX,0x1
XOR ESI,ESI
TEST byte ptr [EBP + ECX*0x2],0x4
JZ 0x0004175b
LEA ESI,[ESI]
LEA ECX,[ESI + ESI*0x4]
MOVSX EDX,DL
MOV dword ptr [EDI],EAX
MOV EBP,dword ptr [ESP + 0x8]
LEA ESI,[EDX + ECX*0x2 + -0x30]
MOVZX ECX,byte ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
ADD EAX,0x1
MOV EDX,ECX
TEST byte ptr [EBP + ECX*0x2],0x4
JNZ 0x00041720
MOV EBP,dword ptr [ESP + 0xc]
SUB ESP,0xc
PUSH EBP
CALL 0x00014480
ADD ESP,0x10
CMP EAX,ESI
JC 0x00041620
MOV ECX,dword ptr [ESP + 0x18]
TEST ECX,ECX
JZ 0x000417be
MOV EAX,dword ptr [ESP + 0x1c]
TEST EAX,EAX
JZ 0x00041783
SUB ESP,0x8
PUSH EAX
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x0003ec50
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x000417f0
CMP dword ptr [ESP + 0x10],0x1
MOV EAX,0x9
JZ 0x00041885
MOV EBP,dword ptr [ESP + 0x14]
SUB ESP,0x8
MOV ECX,dword ptr [EBP + 0x4]
MOV dword ptr [ESP + 0x14],ECX
LEA EDX,[ECX + 0xe4]
MOV ECX,dword ptr [EDI]
PUSH EAX
MOV EAX,dword ptr [EBP]
PUSH ESI
CALL 0x0003fa10
MOV dword ptr [ESP + 0x2c],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000417dd
ADD dword ptr [EDI],ESI
JMP 0x000416db
MOV EAX,dword ptr [ESP + 0x14]
XOR ECX,ECX
MOV EDX,EDI
CALL 0x00040f70
TEST EAX,EAX
JNZ 0x000416db
ADD ESP,0x4c
XOR EAX,EAX
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EDI]
MOV EDX,ESI
CALL 0x0003f060
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JZ 0x00041922
MOV dword ptr [ESP + 0x2c],EDI
MOV EDI,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x28],ESI
JMP 0x00041858
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [EDI]
CALL 0x0003eac0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0004184a
SUB ESP,0x8
PUSH dword ptr [ESP + 0x14]
PUSH EAX
CALL 0x00014080
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00041900
ADD EBP,0x4
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JZ 0x000418e4
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [EDI]
CALL 0x0003ec90
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x00041820
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x00014120
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EDI]
MOV EDX,ESI
CALL 0x0003f060
SUB ESP,0x8
PUSH EAX
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x20]
PUSH dword ptr [EAX]
CALL 0x0003e8b0
MOV dword ptr [ESP],EBP
MOV dword ptr [ESP + 0x2c],EAX
CALL 0x00014120
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x1c]
TEST EAX,EAX
JNZ 0x000417be
XOR EAX,EAX
JMP 0x00041793
MOV EBX,dword ptr [ESP + 0x18]
MOV EAX,0x1
TEST EBX,EBX
JZ 0x0004162b
MOV EDI,dword ptr [ESP + 0x1c]
MOV dword ptr [EBX],EDI
JMP 0x0004162b
MOV ESI,dword ptr [ESP + 0x28]
MOV EDI,dword ptr [ESP + 0x2c]
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x00014120
ADD ESP,0x10
JMP 0x00041783
MOV dword ptr [ESP + 0x1c],ESI
MOV EDI,dword ptr [ESP + 0x2c]
SUB ESP,0xc
MOV ESI,dword ptr [ESP + 0x34]
PUSH dword ptr [ESP + 0x18]
CALL 0x00014120
ADD ESP,0x10
ADD dword ptr [EDI],ESI
JMP 0x000416db
SUB ESP,0xc
PUSH dword ptr [ESP + 0x18]
CALL 0x00014120
ADD ESP,0x10
JMP 0x00041783
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 __regparm3 FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}\n\n" comment (function_definition "undefined4 __regparm3 FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)" identifier (parameter_list "(undefined4 *param_1,int *param_2,int *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "long local_4c;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "char *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" identifier = identifier) ;) (expression_statement "iVar9 = *param_2;" (assignment_expression "iVar9 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "cVar1 = *(char *)(iVar9 + 1);" (assignment_expression "cVar1 = *(char *)(iVar9 + 1)" identifier = (pointer_expression "*(char *)(iVar9 + 1)" * (cast_expression "(char *)(iVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) ))))) ;) (if_statement "if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" if (parenthesized_expression "('0' < cVar1)" ( (binary_expression "'0' < cVar1" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" { (if_statement "if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" if (parenthesized_expression "(cVar1 < ':')" ( (binary_expression "cVar1 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" { (expression_statement "local_4c = cVar1 + -0x30;" (assignment_expression "local_4c = cVar1 + -0x30" identifier = (binary_expression "cVar1 + -0x30" identifier + number_literal)) ;) (expression_statement "*param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');" (assignment_expression "*param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_')" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_')" (binary_expression "iVar9 + 2" identifier + number_literal) + (call_expression "(uint)(*(char *)(iVar9 + 2) == '_')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(iVar9 + 2) == '_')" ( (binary_expression "*(char *)(iVar9 + 2) == '_'" (pointer_expression "*(char *)(iVar9 + 2)" * (cast_expression "(char *)(iVar9 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) == (char_literal "'_'" ' character ')) ))))) ;) (labeled_statement "LAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;" statement_identifier : (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" identifier = identifier) ;)) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );" do (compound_statement "{\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      }" { (if_statement "if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }" { (if_statement "if (param_3 == (int *)0x0) {\n            return 1;\n          }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*param_3 = local_40;" (assignment_expression "*param_3 = local_40" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "pbVar4 = (byte *)*param_2;" (assignment_expression "pbVar4 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (if_statement "if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }" if (parenthesized_expression "(bVar2 == 0x5f)" ( (binary_expression "bVar2 == 0x5f" identifier == number_literal) )) (compound_statement "{\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }" { (expression_statement "pbVar11 = pbVar4 + 1;" (assignment_expression "pbVar11 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pbVar11;" (assignment_expression "*param_2 = (int)pbVar11" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar2 = pbVar4[1];" (assignment_expression "bVar2 = pbVar4[1]" identifier = (subscript_expression "pbVar4[1]" identifier [ number_literal ])) ;) })) (expression_statement "uVar10 = (uint)bVar2;" (assignment_expression "uVar10 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" if (parenthesized_expression "(bVar2 == 0x74)" ( (binary_expression "bVar2 == 0x74" identifier == number_literal) )) (compound_statement "{\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }" { (if_statement "if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar9 = FUN_00040f70();\n          }" { (expression_statement "iVar9 = FUN_00040f70();" (assignment_expression "iVar9 = FUN_00040f70()" identifier = (call_expression "FUN_00040f70()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" else (compound_statement "{\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" { (expression_statement "iVar9 = FUN_00040f70();" (assignment_expression "iVar9 = FUN_00040f70()" identifier = (call_expression "FUN_00040f70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar9 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "sVar6 = strlen(local_20);" (assignment_expression "sVar6 = strlen(local_20)" identifier = (call_expression "strlen(local_20)" identifier (argument_list "(local_20)" ( identifier )))) ;) (expression_statement "local_40 = FUN_0003fa10(sVar6,9);" (assignment_expression "local_40 = FUN_0003fa10(sVar6,9)" identifier = (call_expression "FUN_0003fa10(sVar6,9)" identifier (argument_list "(sVar6,9)" ( identifier , number_literal )))) ;) (expression_statement "free(local_20);" (call_expression "free(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "iVar9 = local_40;" (assignment_expression "iVar9 = local_40" identifier = identifier) ;) }))) (if_statement "if (iVar9 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" else (compound_statement "{\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }" if (parenthesized_expression "((puVar5[uVar10 * 2] & 4) != 0)" ( (binary_expression "(puVar5[uVar10 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar10 * 2] & 4)" ( (binary_expression "puVar5[uVar10 * 2] & 4" (subscript_expression "puVar5[uVar10 * 2]" identifier [ (binary_expression "uVar10 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);" do (compound_statement "{\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pbVar11;" (assignment_expression "*param_2 = (int)pbVar11" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;" (assignment_expression "uVar12 = (char)uVar10 + -0x30 + uVar12 * 10" identifier = (binary_expression "(char)uVar10 + -0x30 + uVar12 * 10" (binary_expression "(char)uVar10 + -0x30" (cast_expression "(char)uVar10" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) + (binary_expression "uVar12 * 10" identifier * number_literal))) ;) (expression_statement "uVar10 = (uint)*pbVar11;" (assignment_expression "uVar10 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "((puVar5[uVar10 * 2] & 4) != 0)" ( (binary_expression "(puVar5[uVar10 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar10 * 2] & 4)" ( (binary_expression "puVar5[uVar10 * 2] & 4" (subscript_expression "puVar5[uVar10 * 2]" identifier [ (binary_expression "uVar10 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "sVar6 = strlen((char *)pbVar11);" (assignment_expression "sVar6 = strlen((char *)pbVar11)" identifier = (call_expression "strlen((char *)pbVar11)" identifier (argument_list "((char *)pbVar11)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar6 < uVar12) goto LAB_00041620;" if (parenthesized_expression "(sVar6 < uVar12)" ( (binary_expression "sVar6 < uVar12" identifier < identifier) )) (goto_statement "goto LAB_00041620;" goto statement_identifier ;)) })) (if_statement "if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }" { (if_statement "if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }" if (parenthesized_expression "((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0))" ( (binary_expression "(local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)" (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)" ( (comma_expression "piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0" (assignment_expression "piVar7 = (int *)FUN_0003ec50(*param_1,local_40)" identifier = (cast_expression "(int *)FUN_0003ec50(*param_1,local_40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003ec50(*param_1,local_40)" identifier (argument_list "(*param_1,local_40)" ( (pointer_expression "*param_1" * identifier) , identifier ))))) , (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }" { (expression_statement "__s2 = (char *)FUN_0003f060();" (assignment_expression "__s2 = (char *)FUN_0003f060()" identifier = (cast_expression "(char *)FUN_0003f060()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003f060()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar9 = *piVar7;" (assignment_expression "iVar9 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (if_statement "if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                free(__s2);\n              }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) }) (else_clause "else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" else (compound_statement "{\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" { (do_statement "do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);" do (compound_statement "{\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                }" { (expression_statement "local_40 = FUN_0003ec90(*param_1,iVar9);" (assignment_expression "local_40 = FUN_0003ec90(*param_1,iVar9)" identifier = (call_expression "FUN_0003ec90(*param_1,iVar9)" identifier (argument_list "(*param_1,iVar9)" ( (pointer_expression "*param_1" * identifier) , identifier )))) ;) (if_statement "if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n                    free(__s2);\n                    return 0;\n                  }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "__s1 = (char *)FUN_0003eac0(*param_1,local_40);" (assignment_expression "__s1 = (char *)FUN_0003eac0(*param_1,local_40)" identifier = (cast_expression "(char *)FUN_0003eac0(*param_1,local_40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003eac0(*param_1,local_40)" identifier (argument_list "(*param_1,local_40)" ( (pointer_expression "*param_1" * identifier) , identifier ))))) ;) (if_statement "if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }" if (parenthesized_expression "((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0))" ( (binary_expression "(__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)" (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar9 = strcmp(__s1,__s2), iVar9 == 0)" ( (comma_expression "iVar9 = strcmp(__s1,__s2), iVar9 == 0" (assignment_expression "iVar9 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) (expression_statement "*param_2 = *param_2 + uVar12;" (assignment_expression "*param_2 = *param_2 + uVar12" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + uVar12" (pointer_expression "*param_2" * identifier) + identifier)) ;) (goto_statement "goto LAB_000416db;" goto statement_identifier ;) })) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = *piVar7;" (assignment_expression "iVar9 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) }))) })) (expression_statement "uVar8 = 9;" (assignment_expression "uVar8 = 9" identifier = number_literal) ;) (if_statement "if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }" if (parenthesized_expression "(local_4c == 1)" ( (binary_expression "local_4c == 1" identifier == number_literal) )) (compound_statement "{\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }" { (expression_statement "__ptr = (void *)FUN_0003f060();" (assignment_expression "__ptr = (void *)FUN_0003f060()" identifier = (cast_expression "(void *)FUN_0003f060()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003f060()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_40 = FUN_0003e8b0(*param_1,__ptr);" (assignment_expression "local_40 = FUN_0003e8b0(*param_1,__ptr)" identifier = (call_expression "FUN_0003e8b0(*param_1,__ptr)" identifier (argument_list "(*param_1,__ptr)" ( (pointer_expression "*param_1" * identifier) , identifier )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (local_40 != 0) goto LAB_000417be;" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000417be;" goto statement_identifier ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) })) (expression_statement "local_40 = FUN_0003fa10(uVar12,uVar8);" (assignment_expression "local_40 = FUN_0003fa10(uVar12,uVar8)" identifier = (call_expression "FUN_0003fa10(uVar12,uVar8)" identifier (argument_list "(uVar12,uVar8)" ( identifier , identifier )))) ;) (if_statement "if (local_40 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_000417be:\n          *param_2 = *param_2 + uVar12;" statement_identifier : (expression_statement "*param_2 = *param_2 + uVar12;" (assignment_expression "*param_2 = *param_2 + uVar12" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + uVar12" (pointer_expression "*param_2" * identifier) + identifier)) ;)) }))) (labeled_statement "LAB_000416db:\n        local_4c = local_4c + -1;" statement_identifier : (expression_statement "local_4c = local_4c + -1;" (assignment_expression "local_4c = local_4c + -1" identifier = (binary_expression "local_4c + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }" if (parenthesized_expression "(((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30))" ( (binary_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)" (parenthesized_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))" ( (binary_expression "(cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0)" (parenthesized_expression "(cVar1 == '_')" ( (binary_expression "cVar1 == '_'" identifier == (char_literal "'_'" ' character ')) )) && (parenthesized_expression "((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0)" ( (binary_expression "(PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0" (parenthesized_expression "(PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4)" ( (binary_expression "PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4" (subscript_expression "PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2]" identifier [ (binary_expression "(uint)*(byte *)(iVar9 + 2) * 2" (binary_expression "(uint)*(byte *)(iVar9 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) * number_literal) ]) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(*(byte *)(iVar9 + 2) != 0x30)" ( (binary_expression "*(byte *)(iVar9 + 2) != 0x30" (pointer_expression "*(byte *)(iVar9 + 2)" * (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }" { (expression_statement "pbVar11 = (byte *)(iVar9 + 2);" (assignment_expression "pbVar11 = (byte *)(iVar9 + 2)" identifier = (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) ;) (expression_statement "local_4c = strtol((char *)pbVar11,(char **)0x0,10);" (assignment_expression "local_4c = strtol((char *)pbVar11,(char **)0x0,10)" identifier = (call_expression "strtol((char *)pbVar11,(char **)0x0,10)" identifier (argument_list "((char *)pbVar11,(char **)0x0,10)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "bVar2 = *(byte *)(iVar9 + 2);" (assignment_expression "bVar2 = *(byte *)(iVar9 + 2)" identifier = (pointer_expression "*(byte *)(iVar9 + 2)" * (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" identifier = (subscript_expression "puVar5[(uint)bVar2 * 2]" identifier [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ])) ;) (while_statement "while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" while (parenthesized_expression "((bVar3 & 4) != 0)" ( (binary_expression "(bVar3 & 4) != 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" identifier = (subscript_expression "puVar5[(uint)bVar2 * 2]" identifier [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ])) ;) })) (if_statement "if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }" if (parenthesized_expression "(bVar2 == 0x5f)" ( (binary_expression "bVar2 == 0x5f" identifier == number_literal) )) (compound_statement "{\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }" { (expression_statement "*param_2 = (int)(pbVar11 + 1);" (assignment_expression "*param_2 = (int)(pbVar11 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pbVar11 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar11 + 1)" ( (binary_expression "pbVar11 + 1" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00041652;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00041620:\n  FUN_0003ef70();" statement_identifier : (expression_statement "FUN_0003ef70();" (call_expression "FUN_0003ef70()" identifier (argument_list "()" ( ))) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbfd_boolean __regparm3\nstab_demangle_qualified(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)\n\n{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  char *s;\n  byte *pbVar4;\n  undefined *puVar5;\n  bfd_boolean bVar6;\n  size_t sVar7;\n  debug_field *ppdVar8;\n  debug_type_kind kind;\n  debug_type pdVar9;\n  char *__s1;\n  int iVar10;\n  debug_field field;\n  char *pcVar11;\n  uint uVar12;\n  byte *pbVar13;\n  uint len;\n  long local_4c;\n  debug_type_conflict local_40;\n  char *name;\n  undefined4 uStack_14;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  uStack_14 = 0x41589;\n  s = *pp;\n  cVar1 = s[1];\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *pp = s + (s[2] == '_') + 2;\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = (debug_type_conflict)0x0;\n      do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30)) {\n      pbVar13 = (byte *)(s + 2);\n      local_4c = strtol((char *)pbVar13,(char **)0x0,10);\n      bVar2 = s[2];\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  stab_bad_demangle(s);\n  return 0;\n}\n\n" comment (function_definition "bfd_boolean __regparm3\nstab_demangle_qualified(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)\n\n{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  char *s;\n  byte *pbVar4;\n  undefined *puVar5;\n  bfd_boolean bVar6;\n  size_t sVar7;\n  debug_field *ppdVar8;\n  debug_type_kind kind;\n  debug_type pdVar9;\n  char *__s1;\n  int iVar10;\n  debug_field field;\n  char *pcVar11;\n  uint uVar12;\n  byte *pbVar13;\n  uint len;\n  long local_4c;\n  debug_type_conflict local_40;\n  char *name;\n  undefined4 uStack_14;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  uStack_14 = 0x41589;\n  s = *pp;\n  cVar1 = s[1];\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *pp = s + (s[2] == '_') + 2;\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = (debug_type_conflict)0x0;\n      do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30)) {\n      pbVar13 = (byte *)(s + 2);\n      local_4c = strtol((char *)pbVar13,(char **)0x0,10);\n      bVar2 = s[2];\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  stab_bad_demangle(s);\n  return 0;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "stab_demangle_qualified(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)" identifier (parameter_list "(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)" ( (parameter_declaration "stab_demangle_info *minfo" type_identifier (pointer_declarator "*minfo" * identifier)) , (parameter_declaration "char **pp" primitive_type (pointer_declarator "**pp" * (pointer_declarator "*pp" * identifier))) , (parameter_declaration "debug_type_conflict *ptype" type_identifier (pointer_declarator "*ptype" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  char *s;\n  byte *pbVar4;\n  undefined *puVar5;\n  bfd_boolean bVar6;\n  size_t sVar7;\n  debug_field *ppdVar8;\n  debug_type_kind kind;\n  debug_type pdVar9;\n  char *__s1;\n  int iVar10;\n  debug_field field;\n  char *pcVar11;\n  uint uVar12;\n  byte *pbVar13;\n  uint len;\n  long local_4c;\n  debug_type_conflict local_40;\n  char *name;\n  undefined4 uStack_14;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  uStack_14 = 0x41589;\n  s = *pp;\n  cVar1 = s[1];\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *pp = s + (s[2] == '_') + 2;\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = (debug_type_conflict)0x0;\n      do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30)) {\n      pbVar13 = (byte *)(s + 2);\n      local_4c = strtol((char *)pbVar13,(char **)0x0,10);\n      bVar2 = s[2];\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  stab_bad_demangle(s);\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "char *s;" primitive_type (pointer_declarator "*s" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "bfd_boolean bVar6;" type_identifier identifier ;) (declaration "size_t sVar7;" primitive_type identifier ;) (declaration "debug_field *ppdVar8;" type_identifier (pointer_declarator "*ppdVar8" * identifier) ;) (declaration "debug_type_kind kind;" type_identifier identifier ;) (declaration "debug_type pdVar9;" type_identifier identifier ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "debug_field field;" type_identifier identifier ;) (declaration "char *pcVar11;" primitive_type (pointer_declarator "*pcVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "byte *pbVar13;" type_identifier (pointer_declarator "*pbVar13" * identifier) ;) (declaration "uint len;" type_identifier identifier ;) (declaration "long local_4c;" (sized_type_specifier "long" long) identifier ;) (declaration "debug_type_conflict local_40;" type_identifier identifier ;) (declaration "char *name;" primitive_type (pointer_declarator "*name" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" identifier = identifier) ;) (expression_statement "uStack_14 = 0x41589;" (assignment_expression "uStack_14 = 0x41589" identifier = number_literal) ;) (expression_statement "s = *pp;" (assignment_expression "s = *pp" identifier = (pointer_expression "*pp" * identifier)) ;) (expression_statement "cVar1 = s[1];" (assignment_expression "cVar1 = s[1]" identifier = (subscript_expression "s[1]" identifier [ number_literal ])) ;) (if_statement "if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *pp = s + (s[2] == '_') + 2;\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = (debug_type_conflict)0x0;\n      do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30)) {\n      pbVar13 = (byte *)(s + 2);\n      local_4c = strtol((char *)pbVar13,(char **)0x0,10);\n      bVar2 = s[2];\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" if (parenthesized_expression "('0' < cVar1)" ( (binary_expression "'0' < cVar1" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *pp = s + (s[2] == '_') + 2;\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = (debug_type_conflict)0x0;\n      do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30)) {\n      pbVar13 = (byte *)(s + 2);\n      local_4c = strtol((char *)pbVar13,(char **)0x0,10);\n      bVar2 = s[2];\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" { (if_statement "if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *pp = s + (s[2] == '_') + 2;\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = (debug_type_conflict)0x0;\n      do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" if (parenthesized_expression "(cVar1 < ':')" ( (binary_expression "cVar1 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n      local_4c = cVar1 + -0x30;\n      *pp = s + (s[2] == '_') + 2;\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = (debug_type_conflict)0x0;\n      do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" { (expression_statement "local_4c = cVar1 + -0x30;" (assignment_expression "local_4c = cVar1 + -0x30" identifier = (binary_expression "cVar1 + -0x30" identifier + number_literal)) ;) (expression_statement "*pp = s + (s[2] == '_') + 2;" (assignment_expression "*pp = s + (s[2] == '_') + 2" (pointer_expression "*pp" * identifier) = (binary_expression "s + (s[2] == '_') + 2" (binary_expression "s + (s[2] == '_')" identifier + (parenthesized_expression "(s[2] == '_')" ( (binary_expression "s[2] == '_'" (subscript_expression "s[2]" identifier [ number_literal ]) == (char_literal "'_'" ' character ')) ))) + number_literal)) ;) (labeled_statement "LAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;" statement_identifier : (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" identifier = identifier) ;)) (expression_statement "local_40 = (debug_type_conflict)0x0;" (assignment_expression "local_40 = (debug_type_conflict)0x0" identifier = (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) ;) (do_statement "do {\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );" do (compound_statement "{\n        if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*pp;\n        bVar2 = *pbVar4;\n        pbVar13 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }\n        uVar12 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      }" { (if_statement "if (local_4c == 0) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\n          if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }\n          *ptype = local_40;\n          return 1;\n        }" { (if_statement "if (ptype == (debug_type_conflict *)0x0) {\n            return 1;\n          }" if (parenthesized_expression "(ptype == (debug_type_conflict *)0x0)" ( (binary_expression "ptype == (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 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*ptype = local_40;" (assignment_expression "*ptype = local_40" (pointer_expression "*ptype" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "pbVar4 = (byte *)*pp;" (assignment_expression "pbVar4 = (byte *)*pp" identifier = (cast_expression "(byte *)*pp" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pp" * identifier))) ;) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar13 = pbVar4;" (assignment_expression "pbVar13 = pbVar4" identifier = identifier) ;) (if_statement "if (bVar2 == 0x5f) {\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }" if (parenthesized_expression "(bVar2 == 0x5f)" ( (binary_expression "bVar2 == 0x5f" identifier == number_literal) )) (compound_statement "{\n          pbVar13 = pbVar4 + 1;\n          *pp = (char *)pbVar13;\n          bVar2 = pbVar4[1];\n        }" { (expression_statement "pbVar13 = pbVar4 + 1;" (assignment_expression "pbVar13 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "*pp = (char *)pbVar13;" (assignment_expression "*pp = (char *)pbVar13" (pointer_expression "*pp" * identifier) = (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "bVar2 = pbVar4[1];" (assignment_expression "bVar2 = pbVar4[1]" identifier = (subscript_expression "pbVar4[1]" identifier [ number_literal ])) ;) })) (expression_statement "uVar12 = (uint)bVar2;" (assignment_expression "uVar12 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar2 == 0x74) {\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }\n        else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }" if (parenthesized_expression "(bVar2 == 0x74)" ( (binary_expression "bVar2 == 0x74" identifier == number_literal) )) (compound_statement "{\n          if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }\n          if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }\n        }" { (if_statement "if (ptype == (debug_type_conflict *)0x0) {\n            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }\n          else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }" if (parenthesized_expression "(ptype == (debug_type_conflict *)0x0)" ( (binary_expression "ptype == (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            pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);\n          }" { (expression_statement "pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0);" (assignment_expression "pdVar9 = (debug_type)stab_demangle_template(minfo,pp,(char **)0x0)" identifier = (cast_expression "(debug_type)stab_demangle_template(minfo,pp,(char **)0x0)" ( (type_descriptor "debug_type" type_identifier) ) (call_expression "stab_demangle_template(minfo,pp,(char **)0x0)" identifier (argument_list "(minfo,pp,(char **)0x0)" ( identifier , identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) ))))) ;) }) (else_clause "else {\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }" else (compound_statement "{\n            bVar6 = stab_demangle_template(minfo,pp,&name);\n            pcVar11 = name;\n            if (bVar6 == 0) {\n              return 0;\n            }\n            sVar7 = strlen(name);\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);\n            free(name);\n            pdVar9 = local_40;\n          }" { (expression_statement "bVar6 = stab_demangle_template(minfo,pp,&name);" (assignment_expression "bVar6 = stab_demangle_template(minfo,pp,&name)" identifier = (call_expression "stab_demangle_template(minfo,pp,&name)" identifier (argument_list "(minfo,pp,&name)" ( identifier , identifier , (pointer_expression "&name" & identifier) )))) ;) (expression_statement "pcVar11 = name;" (assignment_expression "pcVar11 = name" identifier = identifier) ;) (if_statement "if (bVar6 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "sVar7 = strlen(name);" (assignment_expression "sVar7 = strlen(name)" identifier = (call_expression "strlen(name)" identifier (argument_list "(name)" ( identifier )))) ;) (expression_statement "local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS);" (assignment_expression "local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS)" identifier = (call_expression "stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS)" identifier (argument_list "(minfo->dhandle,(stab_handle *)&minfo->info->tags,pcVar11,sVar7,\n                                  DEBUG_KIND_CLASS)" ( (field_expression "minfo->dhandle" identifier -> field_identifier) , (cast_expression "(stab_handle *)&minfo->info->tags" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&minfo->info->tags" & (field_expression "minfo->info->tags" (field_expression "minfo->info" identifier -> field_identifier) -> field_identifier))) , identifier , identifier , identifier )))) ;) (expression_statement "free(name);" (call_expression "free(name)" identifier (argument_list "(name)" ( identifier ))) ;) (expression_statement "pdVar9 = local_40;" (assignment_expression "pdVar9 = local_40" identifier = identifier) ;) }))) (if_statement "if (pdVar9 == (debug_type)0x0) {\n            return 0;\n          }" if (parenthesized_expression "(pdVar9 == (debug_type)0x0)" ( (binary_expression "pdVar9 == (debug_type)0x0" identifier == (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal)) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }" else (compound_statement "{\n          len = 0;\n          if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }\n          if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *pp = *pp + len;\n        }" { (expression_statement "len = 0;" (assignment_expression "len = 0" identifier = number_literal) ;) (if_statement "if ((puVar5[uVar12 * 2] & 4) != 0) {\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }" if (parenthesized_expression "((puVar5[uVar12 * 2] & 4) != 0)" ( (binary_expression "(puVar5[uVar12 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar12 * 2] & 4)" ( (binary_expression "puVar5[uVar12 * 2] & 4" (subscript_expression "puVar5[uVar12 * 2]" identifier [ (binary_expression "uVar12 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n            len = 0;\n            do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);\n            sVar7 = strlen((char *)pbVar13);\n            if (sVar7 < len) goto LAB_00041620;\n          }" { (expression_statement "len = 0;" (assignment_expression "len = 0" identifier = number_literal) ;) (do_statement "do {\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            } while ((puVar5[uVar12 * 2] & 4) != 0);" do (compound_statement "{\n              pbVar13 = pbVar13 + 1;\n              *pp = (char *)pbVar13;\n              len = (char)uVar12 + -0x30 + len * 10;\n              uVar12 = (uint)*pbVar13;\n            }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "*pp = (char *)pbVar13;" (assignment_expression "*pp = (char *)pbVar13" (pointer_expression "*pp" * identifier) = (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "len = (char)uVar12 + -0x30 + len * 10;" (assignment_expression "len = (char)uVar12 + -0x30 + len * 10" identifier = (binary_expression "(char)uVar12 + -0x30 + len * 10" (binary_expression "(char)uVar12 + -0x30" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) + (binary_expression "len * 10" identifier * number_literal))) ;) (expression_statement "uVar12 = (uint)*pbVar13;" (assignment_expression "uVar12 = (uint)*pbVar13" identifier = (binary_expression "(uint)*pbVar13" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "((puVar5[uVar12 * 2] & 4) != 0)" ( (binary_expression "(puVar5[uVar12 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar12 * 2] & 4)" ( (binary_expression "puVar5[uVar12 * 2] & 4" (subscript_expression "puVar5[uVar12 * 2]" identifier [ (binary_expression "uVar12 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "sVar7 = strlen((char *)pbVar13);" (assignment_expression "sVar7 = strlen((char *)pbVar13)" identifier = (call_expression "strlen((char *)pbVar13)" identifier (argument_list "((char *)pbVar13)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar7 < len) goto LAB_00041620;" if (parenthesized_expression "(sVar7 < len)" ( (binary_expression "sVar7 < len" identifier < identifier) )) (goto_statement "goto LAB_00041620;" goto statement_identifier ;)) })) (if_statement "if (ptype != (debug_type_conflict *)0x0) {\n            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(ptype != (debug_type_conflict *)0x0)" ( (binary_expression "ptype != (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            if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }\n            kind = DEBUG_KIND_CLASS;\n            if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }\n            local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);\n            if (local_40 == (debug_type)0x0) {\n              return 0;\n            }\n          }" { (if_statement "if ((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))\n            {\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }" if (parenthesized_expression "((local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0))" ( (binary_expression "(local_40 != (debug_type_conflict)0x0) &&\n               (ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0)" (parenthesized_expression "(local_40 != (debug_type_conflict)0x0)" ( (binary_expression "local_40 != (debug_type_conflict)0x0" identifier != (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) && (parenthesized_expression "(ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0)" ( (comma_expression "ppdVar8 = debug_get_fields(minfo->dhandle,local_40), ppdVar8 != (debug_field *)0x0" (assignment_expression "ppdVar8 = debug_get_fields(minfo->dhandle,local_40)" identifier = (call_expression "debug_get_fields(minfo->dhandle,local_40)" identifier (argument_list "(minfo->dhandle,local_40)" ( (field_expression "minfo->dhandle" identifier -> field_identifier) , identifier )))) , (binary_expression "ppdVar8 != (debug_field *)0x0" identifier != (cast_expression "(debug_field *)0x0" ( (type_descriptor "debug_field *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              pcVar11 = savestring(*pp,len);\n              field = *ppdVar8;\n              if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }\n            }" { (expression_statement "pcVar11 = savestring(*pp,len);" (assignment_expression "pcVar11 = savestring(*pp,len)" identifier = (call_expression "savestring(*pp,len)" identifier (argument_list "(*pp,len)" ( (pointer_expression "*pp" * identifier) , identifier )))) ;) (expression_statement "field = *ppdVar8;" (assignment_expression "field = *ppdVar8" identifier = (pointer_expression "*ppdVar8" * identifier)) ;) (if_statement "if (field == (debug_field)0x0) {\n                free(pcVar11);\n              }\n              else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }" if (parenthesized_expression "(field == (debug_field)0x0)" ( (binary_expression "field == (debug_field)0x0" identifier == (cast_expression "(debug_field)0x0" ( (type_descriptor "debug_field" type_identifier) ) number_literal)) )) (compound_statement "{\n                free(pcVar11);\n              }" { (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) }) (else_clause "else {\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }" else (compound_statement "{\n                do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);\n                free(pcVar11);\n              }" { (do_statement "do {\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                } while (field != (debug_field)0x0);" do (compound_statement "{\n                  local_40 = debug_get_field_type(minfo->dhandle,field);\n                  if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }\n                  __s1 = debug_get_type_name(minfo->dhandle,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }\n                  ppdVar8 = ppdVar8 + 1;\n                  field = *ppdVar8;\n                }" { (expression_statement "local_40 = debug_get_field_type(minfo->dhandle,field);" (assignment_expression "local_40 = debug_get_field_type(minfo->dhandle,field)" identifier = (call_expression "debug_get_field_type(minfo->dhandle,field)" identifier (argument_list "(minfo->dhandle,field)" ( (field_expression "minfo->dhandle" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (local_40 == (debug_type_conflict)0x0) {\n                    free(pcVar11);\n                    return 0;\n                  }" if (parenthesized_expression "(local_40 == (debug_type_conflict)0x0)" ( (binary_expression "local_40 == (debug_type_conflict)0x0" identifier == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n                    free(pcVar11);\n                    return 0;\n                  }" { (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "__s1 = debug_get_type_name(minfo->dhandle,local_40);" (assignment_expression "__s1 = debug_get_type_name(minfo->dhandle,local_40)" identifier = (call_expression "debug_get_type_name(minfo->dhandle,local_40)" identifier (argument_list "(minfo->dhandle,local_40)" ( (field_expression "minfo->dhandle" identifier -> field_identifier) , identifier )))) ;) (if_statement "if ((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)) {\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }" if (parenthesized_expression "((__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0))" ( (binary_expression "(__s1 != (char *)0x0) && (iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)" (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar10 = strcmp(__s1,pcVar11), iVar10 == 0)" ( (comma_expression "iVar10 = strcmp(__s1,pcVar11), iVar10 == 0" (assignment_expression "iVar10 = strcmp(__s1,pcVar11)" identifier = (call_expression "strcmp(__s1,pcVar11)" identifier (argument_list "(__s1,pcVar11)" ( identifier , identifier )))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                    free(pcVar11);\n                    *pp = *pp + len;\n                    goto LAB_000416db;\n                  }" { (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) (expression_statement "*pp = *pp + len;" (assignment_expression "*pp = *pp + len" (pointer_expression "*pp" * identifier) = (binary_expression "*pp + len" (pointer_expression "*pp" * identifier) + identifier)) ;) (goto_statement "goto LAB_000416db;" goto statement_identifier ;) })) (expression_statement "ppdVar8 = ppdVar8 + 1;" (assignment_expression "ppdVar8 = ppdVar8 + 1" identifier = (binary_expression "ppdVar8 + 1" identifier + number_literal)) ;) (expression_statement "field = *ppdVar8;" (assignment_expression "field = *ppdVar8" identifier = (pointer_expression "*ppdVar8" * identifier)) ;) }) while (parenthesized_expression "(field != (debug_field)0x0)" ( (binary_expression "field != (debug_field)0x0" identifier != (cast_expression "(debug_field)0x0" ( (type_descriptor "debug_field" type_identifier) ) number_literal)) )) ;) (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) }))) })) (expression_statement "kind = DEBUG_KIND_CLASS;" (assignment_expression "kind = DEBUG_KIND_CLASS" identifier = identifier) ;) (if_statement "if (local_4c == 1) {\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }" if (parenthesized_expression "(local_4c == 1)" ( (binary_expression "local_4c == 1" identifier == number_literal) )) (compound_statement "{\n              pcVar11 = savestring(*pp,len);\n              local_40 = debug_find_named_type(minfo->dhandle,pcVar11);\n              free(pcVar11);\n              if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;\n              kind = DEBUG_KIND_ILLEGAL;\n            }" { (expression_statement "pcVar11 = savestring(*pp,len);" (assignment_expression "pcVar11 = savestring(*pp,len)" identifier = (call_expression "savestring(*pp,len)" identifier (argument_list "(*pp,len)" ( (pointer_expression "*pp" * identifier) , identifier )))) ;) (expression_statement "local_40 = debug_find_named_type(minfo->dhandle,pcVar11);" (assignment_expression "local_40 = debug_find_named_type(minfo->dhandle,pcVar11)" identifier = (call_expression "debug_find_named_type(minfo->dhandle,pcVar11)" identifier (argument_list "(minfo->dhandle,pcVar11)" ( (field_expression "minfo->dhandle" identifier -> field_identifier) , identifier )))) ;) (expression_statement "free(pcVar11);" (call_expression "free(pcVar11)" identifier (argument_list "(pcVar11)" ( identifier ))) ;) (if_statement "if (local_40 != (debug_type_conflict)0x0) goto LAB_000417be;" if (parenthesized_expression "(local_40 != (debug_type_conflict)0x0)" ( (binary_expression "local_40 != (debug_type_conflict)0x0" identifier != (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_000417be;" goto statement_identifier ;)) (expression_statement "kind = DEBUG_KIND_ILLEGAL;" (assignment_expression "kind = DEBUG_KIND_ILLEGAL" identifier = identifier) ;) })) (expression_statement "local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind);" (assignment_expression "local_40 = stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind)" identifier = (call_expression "stab_find_tagged_type\n                                 (minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind)" identifier (argument_list "(minfo->dhandle,(stab_handle *)&minfo->info->tags,*pp,len,kind)" ( (field_expression "minfo->dhandle" identifier -> field_identifier) , (cast_expression "(stab_handle *)&minfo->info->tags" ( (type_descriptor "stab_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&minfo->info->tags" & (field_expression "minfo->info->tags" (field_expression "minfo->info" identifier -> field_identifier) -> field_identifier))) , (pointer_expression "*pp" * identifier) , identifier , identifier )))) ;) (if_statement "if (local_40 == (debug_type)0x0) {\n              return 0;\n            }" if (parenthesized_expression "(local_40 == (debug_type)0x0)" ( (binary_expression "local_40 == (debug_type)0x0" identifier == (cast_expression "(debug_type)0x0" ( (type_descriptor "debug_type" type_identifier) ) number_literal)) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_000417be:\n          *pp = *pp + len;" statement_identifier : (expression_statement "*pp = *pp + len;" (assignment_expression "*pp = *pp + len" (pointer_expression "*pp" * identifier) = (binary_expression "*pp + len" (pointer_expression "*pp" * identifier) + identifier)) ;)) }))) (labeled_statement "LAB_000416db:\n        local_4c = local_4c + -1;" statement_identifier : (expression_statement "local_4c = local_4c + -1;" (assignment_expression "local_4c = local_4c + -1" identifier = (binary_expression "local_4c + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30)) {\n      pbVar13 = (byte *)(s + 2);\n      local_4c = strtol((char *)pbVar13,(char **)0x0,10);\n      bVar2 = s[2];\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }\n    }" if (parenthesized_expression "(((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30))" ( (binary_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)) &&\n       (s[2] != 0x30)" (parenthesized_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0))" ( (binary_expression "(cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)" (parenthesized_expression "(cVar1 == '_')" ( (binary_expression "cVar1 == '_'" identifier == (char_literal "'_'" ' character ')) )) && (parenthesized_expression "((PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0)" ( (binary_expression "(PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4) != 0" (parenthesized_expression "(PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4)" ( (binary_expression "PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2] & 4" (subscript_expression "PTR__sch_istable_00072fc4[(uint)(byte)s[2] * 2]" identifier [ (binary_expression "(uint)(byte)s[2] * 2" (cast_expression "(uint)(byte)s[2]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)s[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "s[2]" identifier [ number_literal ]))) * number_literal) ]) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(s[2] != 0x30)" ( (binary_expression "s[2] != 0x30" (subscript_expression "s[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n      pbVar13 = (byte *)(s + 2);\n      local_4c = strtol((char *)pbVar13,(char **)0x0,10);\n      bVar2 = s[2];\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }\n    }" { (expression_statement "pbVar13 = (byte *)(s + 2);" (assignment_expression "pbVar13 = (byte *)(s + 2)" identifier = (cast_expression "(byte *)(s + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(s + 2)" ( (binary_expression "s + 2" identifier + number_literal) )))) ;) (expression_statement "local_4c = strtol((char *)pbVar13,(char **)0x0,10);" (assignment_expression "local_4c = strtol((char *)pbVar13,(char **)0x0,10)" identifier = (call_expression "strtol((char *)pbVar13,(char **)0x0,10)" identifier (argument_list "((char *)pbVar13,(char **)0x0,10)" ( (cast_expression "(char *)pbVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "bVar2 = s[2];" (assignment_expression "bVar2 = s[2]" identifier = (subscript_expression "s[2]" identifier [ number_literal ])) ;) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" identifier = (subscript_expression "puVar5[(uint)bVar2 * 2]" identifier [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ])) ;) (while_statement "while ((bVar3 & 4) != 0) {\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" while (parenthesized_expression "((bVar3 & 4) != 0)" ( (binary_expression "(bVar3 & 4) != 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        pbVar13 = pbVar13 + 1;\n        bVar2 = *pbVar13;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" { (expression_statement "pbVar13 = pbVar13 + 1;" (assignment_expression "pbVar13 = pbVar13 + 1" identifier = (binary_expression "pbVar13 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar13;" (assignment_expression "bVar2 = *pbVar13" identifier = (pointer_expression "*pbVar13" * identifier)) ;) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" identifier = (subscript_expression "puVar5[(uint)bVar2 * 2]" identifier [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ])) ;) })) (if_statement "if (bVar2 == 0x5f) {\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }" if (parenthesized_expression "(bVar2 == 0x5f)" ( (binary_expression "bVar2 == 0x5f" identifier == number_literal) )) (compound_statement "{\n        *pp = (char *)(pbVar13 + 1);\n        goto LAB_00041652;\n      }" { (expression_statement "*pp = (char *)(pbVar13 + 1);" (assignment_expression "*pp = (char *)(pbVar13 + 1)" (pointer_expression "*pp" * identifier) = (cast_expression "(char *)(pbVar13 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pbVar13 + 1)" ( (binary_expression "pbVar13 + 1" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00041652;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00041620:\n  stab_bad_demangle(s);" statement_identifier : (expression_statement "stab_bad_demangle(s);" (call_expression "stab_bad_demangle(s)" identifier (argument_list "(s)" ( identifier ))) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 __regparm3 FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}\n\n" (function_definition "undefined4 __regparm3 FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)" identifier (parameter_list "(undefined4 *param_1,int *param_2,int *param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "long local_4c;" (sized_type_specifier "long" long) identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "char *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" identifier = identifier) ;) (expression_statement "iVar9 = *param_2;" (assignment_expression "iVar9 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "cVar1 = *(char *)(iVar9 + 1);" (assignment_expression "cVar1 = *(char *)(iVar9 + 1)" identifier = (pointer_expression "*(char *)(iVar9 + 1)" * (cast_expression "(char *)(iVar9 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) ))))) ;) (if_statement "if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" if (parenthesized_expression "('0' < cVar1)" ( (binary_expression "'0' < cVar1" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" { (if_statement "if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" if (parenthesized_expression "(cVar1 < ':')" ( (binary_expression "cVar1 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" { (expression_statement "local_4c = cVar1 + -0x30;" (assignment_expression "local_4c = cVar1 + -0x30" identifier = (binary_expression "cVar1 + -0x30" identifier + number_literal)) ;) (expression_statement "*param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');" (assignment_expression "*param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_')" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_')" (binary_expression "iVar9 + 2" identifier + number_literal) + (call_expression "(uint)(*(char *)(iVar9 + 2) == '_')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(iVar9 + 2) == '_')" ( (binary_expression "*(char *)(iVar9 + 2) == '_'" (pointer_expression "*(char *)(iVar9 + 2)" * (cast_expression "(char *)(iVar9 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) == (char_literal "'_'" ' character ')) ))))) ;) (labeled_statement "LAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;" statement_identifier : (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" identifier = identifier) ;)) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (do_statement "do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );" do (compound_statement "{\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      }" { (if_statement "if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (compound_statement "{\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }" { (if_statement "if (param_3 == (int *)0x0) {\n            return 1;\n          }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            return 1;\n          }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*param_3 = local_40;" (assignment_expression "*param_3 = local_40" (pointer_expression "*param_3" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (expression_statement "pbVar4 = (byte *)*param_2;" (assignment_expression "pbVar4 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (if_statement "if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }" if (parenthesized_expression "(bVar2 == 0x5f)" ( (binary_expression "bVar2 == 0x5f" identifier == number_literal) )) (compound_statement "{\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }" { (expression_statement "pbVar11 = pbVar4 + 1;" (assignment_expression "pbVar11 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pbVar11;" (assignment_expression "*param_2 = (int)pbVar11" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar2 = pbVar4[1];" (assignment_expression "bVar2 = pbVar4[1]" identifier = (subscript_expression "pbVar4[1]" identifier [ number_literal ])) ;) })) (expression_statement "uVar10 = (uint)bVar2;" (assignment_expression "uVar10 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" if (parenthesized_expression "(bVar2 == 0x74)" ( (binary_expression "bVar2 == 0x74" identifier == number_literal) )) (compound_statement "{\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }" { (if_statement "if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" if (parenthesized_expression "(param_3 == (int *)0x0)" ( (binary_expression "param_3 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar9 = FUN_00040f70();\n          }" { (expression_statement "iVar9 = FUN_00040f70();" (assignment_expression "iVar9 = FUN_00040f70()" identifier = (call_expression "FUN_00040f70()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" else (compound_statement "{\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" { (expression_statement "iVar9 = FUN_00040f70();" (assignment_expression "iVar9 = FUN_00040f70()" identifier = (call_expression "FUN_00040f70()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar9 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "sVar6 = strlen(local_20);" (assignment_expression "sVar6 = strlen(local_20)" identifier = (call_expression "strlen(local_20)" identifier (argument_list "(local_20)" ( identifier )))) ;) (expression_statement "local_40 = FUN_0003fa10(sVar6,9);" (assignment_expression "local_40 = FUN_0003fa10(sVar6,9)" identifier = (call_expression "FUN_0003fa10(sVar6,9)" identifier (argument_list "(sVar6,9)" ( identifier , number_literal )))) ;) (expression_statement "free(local_20);" (call_expression "free(local_20)" identifier (argument_list "(local_20)" ( identifier ))) ;) (expression_statement "iVar9 = local_40;" (assignment_expression "iVar9 = local_40" identifier = identifier) ;) }))) (if_statement "if (iVar9 == 0) {\n            return 0;\n          }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n            return 0;\n          }" { (return_statement "return 0;" return number_literal ;) })) }) (else_clause "else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" else (compound_statement "{\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (if_statement "if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }" if (parenthesized_expression "((puVar5[uVar10 * 2] & 4) != 0)" ( (binary_expression "(puVar5[uVar10 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar10 * 2] & 4)" ( (binary_expression "puVar5[uVar10 * 2] & 4" (subscript_expression "puVar5[uVar10 * 2]" identifier [ (binary_expression "uVar10 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) (compound_statement "{\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);" do (compound_statement "{\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pbVar11;" (assignment_expression "*param_2 = (int)pbVar11" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;" (assignment_expression "uVar12 = (char)uVar10 + -0x30 + uVar12 * 10" identifier = (binary_expression "(char)uVar10 + -0x30 + uVar12 * 10" (binary_expression "(char)uVar10 + -0x30" (cast_expression "(char)uVar10" ( (type_descriptor "char" primitive_type) ) identifier) + number_literal) + (binary_expression "uVar12 * 10" identifier * number_literal))) ;) (expression_statement "uVar10 = (uint)*pbVar11;" (assignment_expression "uVar10 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) }) while (parenthesized_expression "((puVar5[uVar10 * 2] & 4) != 0)" ( (binary_expression "(puVar5[uVar10 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar10 * 2] & 4)" ( (binary_expression "puVar5[uVar10 * 2] & 4" (subscript_expression "puVar5[uVar10 * 2]" identifier [ (binary_expression "uVar10 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (expression_statement "sVar6 = strlen((char *)pbVar11);" (assignment_expression "sVar6 = strlen((char *)pbVar11)" identifier = (call_expression "strlen((char *)pbVar11)" identifier (argument_list "((char *)pbVar11)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (sVar6 < uVar12) goto LAB_00041620;" if (parenthesized_expression "(sVar6 < uVar12)" ( (binary_expression "sVar6 < uVar12" identifier < identifier) )) (goto_statement "goto LAB_00041620;" goto statement_identifier ;)) })) (if_statement "if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }" { (if_statement "if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }" if (parenthesized_expression "((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0))" ( (binary_expression "(local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)" (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) && (parenthesized_expression "(piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)" ( (comma_expression "piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0" (assignment_expression "piVar7 = (int *)FUN_0003ec50(*param_1,local_40)" identifier = (cast_expression "(int *)FUN_0003ec50(*param_1,local_40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003ec50(*param_1,local_40)" identifier (argument_list "(*param_1,local_40)" ( (pointer_expression "*param_1" * identifier) , identifier ))))) , (binary_expression "piVar7 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }" { (expression_statement "__s2 = (char *)FUN_0003f060();" (assignment_expression "__s2 = (char *)FUN_0003f060()" identifier = (cast_expression "(char *)FUN_0003f060()" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003f060()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar9 = *piVar7;" (assignment_expression "iVar9 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (if_statement "if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n                free(__s2);\n              }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) }) (else_clause "else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" else (compound_statement "{\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" { (do_statement "do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);" do (compound_statement "{\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                }" { (expression_statement "local_40 = FUN_0003ec90(*param_1,iVar9);" (assignment_expression "local_40 = FUN_0003ec90(*param_1,iVar9)" identifier = (call_expression "FUN_0003ec90(*param_1,iVar9)" identifier (argument_list "(*param_1,iVar9)" ( (pointer_expression "*param_1" * identifier) , identifier )))) ;) (if_statement "if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n                    free(__s2);\n                    return 0;\n                  }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "__s1 = (char *)FUN_0003eac0(*param_1,local_40);" (assignment_expression "__s1 = (char *)FUN_0003eac0(*param_1,local_40)" identifier = (cast_expression "(char *)FUN_0003eac0(*param_1,local_40)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003eac0(*param_1,local_40)" identifier (argument_list "(*param_1,local_40)" ( (pointer_expression "*param_1" * identifier) , identifier ))))) ;) (if_statement "if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }" if (parenthesized_expression "((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0))" ( (binary_expression "(__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)" (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar9 = strcmp(__s1,__s2), iVar9 == 0)" ( (comma_expression "iVar9 = strcmp(__s1,__s2), iVar9 == 0" (assignment_expression "iVar9 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) , (binary_expression "iVar9 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) (expression_statement "*param_2 = *param_2 + uVar12;" (assignment_expression "*param_2 = *param_2 + uVar12" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + uVar12" (pointer_expression "*param_2" * identifier) + identifier)) ;) (goto_statement "goto LAB_000416db;" goto statement_identifier ;) })) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = *piVar7;" (assignment_expression "iVar9 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) }) while (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) ;) (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) }))) })) (expression_statement "uVar8 = 9;" (assignment_expression "uVar8 = 9" identifier = number_literal) ;) (if_statement "if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }" if (parenthesized_expression "(local_4c == 1)" ( (binary_expression "local_4c == 1" identifier == number_literal) )) (compound_statement "{\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }" { (expression_statement "__ptr = (void *)FUN_0003f060();" (assignment_expression "__ptr = (void *)FUN_0003f060()" identifier = (cast_expression "(void *)FUN_0003f060()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0003f060()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_40 = FUN_0003e8b0(*param_1,__ptr);" (assignment_expression "local_40 = FUN_0003e8b0(*param_1,__ptr)" identifier = (call_expression "FUN_0003e8b0(*param_1,__ptr)" identifier (argument_list "(*param_1,__ptr)" ( (pointer_expression "*param_1" * identifier) , identifier )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (local_40 != 0) goto LAB_000417be;" if (parenthesized_expression "(local_40 != 0)" ( (binary_expression "local_40 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000417be;" goto statement_identifier ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) })) (expression_statement "local_40 = FUN_0003fa10(uVar12,uVar8);" (assignment_expression "local_40 = FUN_0003fa10(uVar12,uVar8)" identifier = (call_expression "FUN_0003fa10(uVar12,uVar8)" identifier (argument_list "(uVar12,uVar8)" ( identifier , identifier )))) ;) (if_statement "if (local_40 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(local_40 == 0)" ( (binary_expression "local_40 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) })) (labeled_statement "LAB_000417be:\n          *param_2 = *param_2 + uVar12;" statement_identifier : (expression_statement "*param_2 = *param_2 + uVar12;" (assignment_expression "*param_2 = *param_2 + uVar12" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + uVar12" (pointer_expression "*param_2" * identifier) + identifier)) ;)) }))) (labeled_statement "LAB_000416db:\n        local_4c = local_4c + -1;" statement_identifier : (expression_statement "local_4c = local_4c + -1;" (assignment_expression "local_4c = local_4c + -1" identifier = (binary_expression "local_4c + -1" identifier + number_literal)) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }" if (parenthesized_expression "(((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30))" ( (binary_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)" (parenthesized_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))" ( (binary_expression "(cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0)" (parenthesized_expression "(cVar1 == '_')" ( (binary_expression "cVar1 == '_'" identifier == (char_literal "'_'" ' character ')) )) && (parenthesized_expression "((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0)" ( (binary_expression "(PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0" (parenthesized_expression "(PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4)" ( (binary_expression "PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4" (subscript_expression "PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2]" identifier [ (binary_expression "(uint)*(byte *)(iVar9 + 2) * 2" (binary_expression "(uint)*(byte *)(iVar9 + 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) * number_literal) ]) & number_literal) )) != number_literal) ))) )) && (parenthesized_expression "(*(byte *)(iVar9 + 2) != 0x30)" ( (binary_expression "*(byte *)(iVar9 + 2) != 0x30" (pointer_expression "*(byte *)(iVar9 + 2)" * (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }" { (expression_statement "pbVar11 = (byte *)(iVar9 + 2);" (assignment_expression "pbVar11 = (byte *)(iVar9 + 2)" identifier = (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) )))) ;) (expression_statement "local_4c = strtol((char *)pbVar11,(char **)0x0,10);" (assignment_expression "local_4c = strtol((char *)pbVar11,(char **)0x0,10)" identifier = (call_expression "strtol((char *)pbVar11,(char **)0x0,10)" identifier (argument_list "((char *)pbVar11,(char **)0x0,10)" ( (cast_expression "(char *)pbVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "bVar2 = *(byte *)(iVar9 + 2);" (assignment_expression "bVar2 = *(byte *)(iVar9 + 2)" identifier = (pointer_expression "*(byte *)(iVar9 + 2)" * (cast_expression "(byte *)(iVar9 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 2)" ( (binary_expression "iVar9 + 2" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" identifier = (subscript_expression "puVar5[(uint)bVar2 * 2]" identifier [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ])) ;) (while_statement "while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" while (parenthesized_expression "((bVar3 & 4) != 0)" ( (binary_expression "(bVar3 & 4) != 0" (parenthesized_expression "(bVar3 & 4)" ( (binary_expression "bVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" { (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" identifier = (pointer_expression "*pbVar11" * identifier)) ;) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" identifier = (subscript_expression "puVar5[(uint)bVar2 * 2]" identifier [ (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal) ])) ;) })) (if_statement "if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }" if (parenthesized_expression "(bVar2 == 0x5f)" ( (binary_expression "bVar2 == 0x5f" identifier == number_literal) )) (compound_statement "{\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }" { (expression_statement "*param_2 = (int)(pbVar11 + 1);" (assignment_expression "*param_2 = (int)(pbVar11 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pbVar11 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar11 + 1)" ( (binary_expression "pbVar11 + 1" identifier + number_literal) )))) ;) (goto_statement "goto LAB_00041652;" goto statement_identifier ;) })) })) })) (labeled_statement "LAB_00041620:\n  FUN_0003ef70();" statement_identifier : (expression_statement "FUN_0003ef70();" (call_expression "FUN_0003ef70()" identifier (argument_list "()" ( ))) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (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 TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (char_literal ' character ') < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression IDENT + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' character ')) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 ])) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (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 = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) & LIT) )) != LIT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) })) (expression_statement (assignment_expression IDENT = 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 ( ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;)) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( BOOL )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT) ]) & LIT) )) != LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ])) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (return_statement return LIT ;) })))
(function_definition "undefined4 __regparm3 FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)\n\n{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00041580(undefined4 *param_1,int *param_2,int *param_3)" (identifier "FUN_00041580") (parameter_list "(undefined4 *param_1,int *param_2,int *param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  char cVar1;\n  byte bVar2;\n  byte bVar3;\n  byte *pbVar4;\n  undefined *puVar5;\n  size_t sVar6;\n  int *piVar7;\n  undefined4 uVar8;\n  char *__s2;\n  char *__s1;\n  int iVar9;\n  void *__ptr;\n  uint uVar10;\n  byte *pbVar11;\n  uint uVar12;\n  long local_4c;\n  int local_40;\n  char *local_20;\n  \n  puVar5 = PTR__sch_istable_00072fc4;\n  iVar9 = *param_2;\n  cVar1 = *(char *)(iVar9 + 1);\n  if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }\nLAB_00041620:\n  FUN_0003ef70();\n  return 0;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "char *__s1;" (primitive_type "char") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "long local_4c;" (sized_type_specifier "long" (long "long")) (identifier "local_4c") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "char *local_20;" (primitive_type "char") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" (identifier "puVar5") (= "=") (identifier "PTR__sch_istable_00072fc4")) (; ";")) (expression_statement "iVar9 = *param_2;" (assignment_expression "iVar9 = *param_2" (identifier "iVar9") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "cVar1 = *(char *)(iVar9 + 1);" (assignment_expression "cVar1 = *(char *)(iVar9 + 1)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)(iVar9 + 1)" (* "*") (cast_expression "(char *)(iVar9 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 1)" (( "(") (binary_expression "iVar9 + 1" (identifier "iVar9") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if ('0' < cVar1) {\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" (if "if") (parenthesized_expression "('0' < cVar1)" (( "(") (binary_expression "'0' < cVar1" (char_literal "'0'" (' "'") (character "0") (' "'")) (< "<") (identifier "cVar1")) () ")")) (compound_statement "{\n    if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }\n    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }\n  }" ({ "{") (if_statement "if (cVar1 < ':') {\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" (if "if") (parenthesized_expression "(cVar1 < ':')" (( "(") (binary_expression "cVar1 < ':'" (identifier "cVar1") (< "<") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")")) (compound_statement "{\n      local_4c = cVar1 + -0x30;\n      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');\nLAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;\n      local_40 = 0;\n      do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );\n    }" ({ "{") (expression_statement "local_4c = cVar1 + -0x30;" (assignment_expression "local_4c = cVar1 + -0x30" (identifier "local_4c") (= "=") (binary_expression "cVar1 + -0x30" (identifier "cVar1") (+ "+") (number_literal "-0x30"))) (; ";")) (expression_statement "*param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');" (assignment_expression "*param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_')" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_')" (binary_expression "iVar9 + 2" (identifier "iVar9") (+ "+") (number_literal "2")) (+ "+") (call_expression "(uint)(*(char *)(iVar9 + 2) == '_')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(iVar9 + 2) == '_')" (( "(") (binary_expression "*(char *)(iVar9 + 2) == '_'" (pointer_expression "*(char *)(iVar9 + 2)" (* "*") (cast_expression "(char *)(iVar9 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 2)" (( "(") (binary_expression "iVar9 + 2" (identifier "iVar9") (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))))) (; ";")) (labeled_statement "LAB_00041652:\n      puVar5 = PTR__sch_istable_00072fc4;" (statement_identifier "LAB_00041652") (: ":") (expression_statement "puVar5 = PTR__sch_istable_00072fc4;" (assignment_expression "puVar5 = PTR__sch_istable_00072fc4" (identifier "puVar5") (= "=") (identifier "PTR__sch_istable_00072fc4")) (; ";"))) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      } while( true );" (do "do") (compound_statement "{\n        if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }\n        pbVar4 = (byte *)*param_2;\n        bVar2 = *pbVar4;\n        pbVar11 = pbVar4;\n        if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }\n        uVar10 = (uint)bVar2;\n        if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }\nLAB_000416db:\n        local_4c = local_4c + -1;\n      }" ({ "{") (if_statement "if (local_4c == 0) {\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }" (if "if") (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          if (param_3 == (int *)0x0) {\n            return 1;\n          }\n          *param_3 = local_40;\n          return 1;\n        }" ({ "{") (if_statement "if (param_3 == (int *)0x0) {\n            return 1;\n          }" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            return 1;\n          }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "*param_3 = local_40;" (assignment_expression "*param_3 = local_40" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "local_40")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "pbVar4 = (byte *)*param_2;" (assignment_expression "pbVar4 = (byte *)*param_2" (identifier "pbVar4") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "bVar2 = *pbVar4;" (assignment_expression "bVar2 = *pbVar4" (identifier "bVar2") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" (identifier "pbVar11") (= "=") (identifier "pbVar4")) (; ";")) (if_statement "if (bVar2 == 0x5f) {\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }" (if "if") (parenthesized_expression "(bVar2 == 0x5f)" (( "(") (binary_expression "bVar2 == 0x5f" (identifier "bVar2") (== "==") (number_literal "0x5f")) () ")")) (compound_statement "{\n          pbVar11 = pbVar4 + 1;\n          *param_2 = (int)pbVar11;\n          bVar2 = pbVar4[1];\n        }" ({ "{") (expression_statement "pbVar11 = pbVar4 + 1;" (assignment_expression "pbVar11 = pbVar4 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_2 = (int)pbVar11;" (assignment_expression "*param_2 = (int)pbVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)pbVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar11"))) (; ";")) (expression_statement "bVar2 = pbVar4[1];" (assignment_expression "bVar2 = pbVar4[1]" (identifier "bVar2") (= "=") (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (expression_statement "uVar10 = (uint)bVar2;" (assignment_expression "uVar10 = (uint)bVar2" (identifier "uVar10") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (if_statement "if (bVar2 == 0x74) {\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }\n        else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" (if "if") (parenthesized_expression "(bVar2 == 0x74)" (( "(") (binary_expression "bVar2 == 0x74" (identifier "bVar2") (== "==") (number_literal "0x74")) () ")")) (compound_statement "{\n          if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }\n          if (iVar9 == 0) {\n            return 0;\n          }\n        }" ({ "{") (if_statement "if (param_3 == (int *)0x0) {\n            iVar9 = FUN_00040f70();\n          }\n          else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" (if "if") (parenthesized_expression "(param_3 == (int *)0x0)" (( "(") (binary_expression "param_3 == (int *)0x0" (identifier "param_3") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar9 = FUN_00040f70();\n          }" ({ "{") (expression_statement "iVar9 = FUN_00040f70();" (assignment_expression "iVar9 = FUN_00040f70()" (identifier "iVar9") (= "=") (call_expression "FUN_00040f70()" (identifier "FUN_00040f70") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" (else "else") (compound_statement "{\n            iVar9 = FUN_00040f70();\n            if (iVar9 == 0) {\n              return 0;\n            }\n            sVar6 = strlen(local_20);\n            local_40 = FUN_0003fa10(sVar6,9);\n            free(local_20);\n            iVar9 = local_40;\n          }" ({ "{") (expression_statement "iVar9 = FUN_00040f70();" (assignment_expression "iVar9 = FUN_00040f70()" (identifier "iVar9") (= "=") (call_expression "FUN_00040f70()" (identifier "FUN_00040f70") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar9 == 0) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "sVar6 = strlen(local_20);" (assignment_expression "sVar6 = strlen(local_20)" (identifier "sVar6") (= "=") (call_expression "strlen(local_20)" (identifier "strlen") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")")))) (; ";")) (expression_statement "local_40 = FUN_0003fa10(sVar6,9);" (assignment_expression "local_40 = FUN_0003fa10(sVar6,9)" (identifier "local_40") (= "=") (call_expression "FUN_0003fa10(sVar6,9)" (identifier "FUN_0003fa10") (argument_list "(sVar6,9)" (( "(") (identifier "sVar6") (, ",") (number_literal "9") () ")")))) (; ";")) (expression_statement "free(local_20);" (call_expression "free(local_20)" (identifier "free") (argument_list "(local_20)" (( "(") (identifier "local_20") () ")"))) (; ";")) (expression_statement "iVar9 = local_40;" (assignment_expression "iVar9 = local_40" (identifier "iVar9") (= "=") (identifier "local_40")) (; ";")) (} "}")))) (if_statement "if (iVar9 == 0) {\n            return 0;\n          }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return 0;\n          }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" (else "else") (compound_statement "{\n          uVar12 = 0;\n          if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }\n          if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }\nLAB_000417be:\n          *param_2 = *param_2 + uVar12;\n        }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((puVar5[uVar10 * 2] & 4) != 0) {\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }" (if "if") (parenthesized_expression "((puVar5[uVar10 * 2] & 4) != 0)" (( "(") (binary_expression "(puVar5[uVar10 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar10 * 2] & 4)" (( "(") (binary_expression "puVar5[uVar10 * 2] & 4" (subscript_expression "puVar5[uVar10 * 2]" (identifier "puVar5") ([ "[") (binary_expression "uVar10 * 2" (identifier "uVar10") (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar12 = 0;\n            do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);\n            sVar6 = strlen((char *)pbVar11);\n            if (sVar6 < uVar12) goto LAB_00041620;\n          }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            } while ((puVar5[uVar10 * 2] & 4) != 0);" (do "do") (compound_statement "{\n              pbVar11 = pbVar11 + 1;\n              *param_2 = (int)pbVar11;\n              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;\n              uVar10 = (uint)*pbVar11;\n            }" ({ "{") (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_2 = (int)pbVar11;" (assignment_expression "*param_2 = (int)pbVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)pbVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar11"))) (; ";")) (expression_statement "uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;" (assignment_expression "uVar12 = (char)uVar10 + -0x30 + uVar12 * 10" (identifier "uVar12") (= "=") (binary_expression "(char)uVar10 + -0x30 + uVar12 * 10" (binary_expression "(char)uVar10 + -0x30" (cast_expression "(char)uVar10" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar10")) (+ "+") (number_literal "-0x30")) (+ "+") (binary_expression "uVar12 * 10" (identifier "uVar12") (* "*") (number_literal "10")))) (; ";")) (expression_statement "uVar10 = (uint)*pbVar11;" (assignment_expression "uVar10 = (uint)*pbVar11" (identifier "uVar10") (= "=") (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((puVar5[uVar10 * 2] & 4) != 0)" (( "(") (binary_expression "(puVar5[uVar10 * 2] & 4) != 0" (parenthesized_expression "(puVar5[uVar10 * 2] & 4)" (( "(") (binary_expression "puVar5[uVar10 * 2] & 4" (subscript_expression "puVar5[uVar10 * 2]" (identifier "puVar5") ([ "[") (binary_expression "uVar10 * 2" (identifier "uVar10") (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "sVar6 = strlen((char *)pbVar11);" (assignment_expression "sVar6 = strlen((char *)pbVar11)" (identifier "sVar6") (= "=") (call_expression "strlen((char *)pbVar11)" (identifier "strlen") (argument_list "((char *)pbVar11)" (( "(") (cast_expression "(char *)pbVar11" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar11")) () ")")))) (; ";")) (if_statement "if (sVar6 < uVar12) goto LAB_00041620;" (if "if") (parenthesized_expression "(sVar6 < uVar12)" (( "(") (binary_expression "sVar6 < uVar12" (identifier "sVar6") (< "<") (identifier "uVar12")) () ")")) (goto_statement "goto LAB_00041620;" (goto "goto") (statement_identifier "LAB_00041620") (; ";"))) (} "}"))) (if_statement "if (param_3 != (int *)0x0) {\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }" (if "if") (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }\n            uVar8 = 9;\n            if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }\n            local_40 = FUN_0003fa10(uVar12,uVar8);\n            if (local_40 == 0) {\n              return 0;\n            }\n          }" ({ "{") (if_statement "if ((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }" (if "if") (parenthesized_expression "((local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0))" (( "(") (binary_expression "(local_40 != 0) &&\n               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)" (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)" (( "(") (comma_expression "piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0" (assignment_expression "piVar7 = (int *)FUN_0003ec50(*param_1,local_40)" (identifier "piVar7") (= "=") (cast_expression "(int *)FUN_0003ec50(*param_1,local_40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0003ec50(*param_1,local_40)" (identifier "FUN_0003ec50") (argument_list "(*param_1,local_40)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (identifier "local_40") () ")"))))) (, ",") (binary_expression "piVar7 != (int *)0x0" (identifier "piVar7") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n              __s2 = (char *)FUN_0003f060();\n              iVar9 = *piVar7;\n              if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }\n            }" ({ "{") (expression_statement "__s2 = (char *)FUN_0003f060();" (assignment_expression "__s2 = (char *)FUN_0003f060()" (identifier "__s2") (= "=") (cast_expression "(char *)FUN_0003f060()" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0003f060()" (identifier "FUN_0003f060") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar9 = *piVar7;" (assignment_expression "iVar9 = *piVar7" (identifier "iVar9") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (if_statement "if (iVar9 == 0) {\n                free(__s2);\n              }\n              else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                free(__s2);\n              }" ({ "{") (expression_statement "free(__s2);" (call_expression "free(__s2)" (identifier "free") (argument_list "(__s2)" (( "(") (identifier "__s2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" (else "else") (compound_statement "{\n                do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);\n                free(__s2);\n              }" ({ "{") (do_statement "do {\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                } while (iVar9 != 0);" (do "do") (compound_statement "{\n                  local_40 = FUN_0003ec90(*param_1,iVar9);\n                  if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }\n                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);\n                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }\n                  piVar7 = piVar7 + 1;\n                  iVar9 = *piVar7;\n                }" ({ "{") (expression_statement "local_40 = FUN_0003ec90(*param_1,iVar9);" (assignment_expression "local_40 = FUN_0003ec90(*param_1,iVar9)" (identifier "local_40") (= "=") (call_expression "FUN_0003ec90(*param_1,iVar9)" (identifier "FUN_0003ec90") (argument_list "(*param_1,iVar9)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (identifier "iVar9") () ")")))) (; ";")) (if_statement "if (local_40 == 0) {\n                    free(__s2);\n                    return 0;\n                  }" (if "if") (parenthesized_expression "(local_40 == 0)" (( "(") (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    free(__s2);\n                    return 0;\n                  }" ({ "{") (expression_statement "free(__s2);" (call_expression "free(__s2)" (identifier "free") (argument_list "(__s2)" (( "(") (identifier "__s2") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "__s1 = (char *)FUN_0003eac0(*param_1,local_40);" (assignment_expression "__s1 = (char *)FUN_0003eac0(*param_1,local_40)" (identifier "__s1") (= "=") (cast_expression "(char *)FUN_0003eac0(*param_1,local_40)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0003eac0(*param_1,local_40)" (identifier "FUN_0003eac0") (argument_list "(*param_1,local_40)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (identifier "local_40") () ")"))))) (; ";")) (if_statement "if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }" (if "if") (parenthesized_expression "((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0))" (( "(") (binary_expression "(__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)" (parenthesized_expression "(__s1 != (char *)0x0)" (( "(") (binary_expression "__s1 != (char *)0x0" (identifier "__s1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar9 = strcmp(__s1,__s2), iVar9 == 0)" (( "(") (comma_expression "iVar9 = strcmp(__s1,__s2), iVar9 == 0" (assignment_expression "iVar9 = strcmp(__s1,__s2)" (identifier "iVar9") (= "=") (call_expression "strcmp(__s1,__s2)" (identifier "strcmp") (argument_list "(__s1,__s2)" (( "(") (identifier "__s1") (, ",") (identifier "__s2") () ")")))) (, ",") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                    free(__s2);\n                    *param_2 = *param_2 + uVar12;\n                    goto LAB_000416db;\n                  }" ({ "{") (expression_statement "free(__s2);" (call_expression "free(__s2)" (identifier "free") (argument_list "(__s2)" (( "(") (identifier "__s2") () ")"))) (; ";")) (expression_statement "*param_2 = *param_2 + uVar12;" (assignment_expression "*param_2 = *param_2 + uVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 + uVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar12"))) (; ";")) (goto_statement "goto LAB_000416db;" (goto "goto") (statement_identifier "LAB_000416db") (; ";")) (} "}"))) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar9 = *piVar7;" (assignment_expression "iVar9 = *piVar7" (identifier "iVar9") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "free(__s2);" (call_expression "free(__s2)" (identifier "free") (argument_list "(__s2)" (( "(") (identifier "__s2") () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar8 = 9;" (assignment_expression "uVar8 = 9" (identifier "uVar8") (= "=") (number_literal "9")) (; ";")) (if_statement "if (local_4c == 1) {\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }" (if "if") (parenthesized_expression "(local_4c == 1)" (( "(") (binary_expression "local_4c == 1" (identifier "local_4c") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              __ptr = (void *)FUN_0003f060();\n              local_40 = FUN_0003e8b0(*param_1,__ptr);\n              free(__ptr);\n              if (local_40 != 0) goto LAB_000417be;\n              uVar8 = 0;\n            }" ({ "{") (expression_statement "__ptr = (void *)FUN_0003f060();" (assignment_expression "__ptr = (void *)FUN_0003f060()" (identifier "__ptr") (= "=") (cast_expression "(void *)FUN_0003f060()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0003f060()" (identifier "FUN_0003f060") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_40 = FUN_0003e8b0(*param_1,__ptr);" (assignment_expression "local_40 = FUN_0003e8b0(*param_1,__ptr)" (identifier "local_40") (= "=") (call_expression "FUN_0003e8b0(*param_1,__ptr)" (identifier "FUN_0003e8b0") (argument_list "(*param_1,__ptr)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (identifier "__ptr") () ")")))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (if_statement "if (local_40 != 0) goto LAB_000417be;" (if "if") (parenthesized_expression "(local_40 != 0)" (( "(") (binary_expression "local_40 != 0" (identifier "local_40") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000417be;" (goto "goto") (statement_identifier "LAB_000417be") (; ";"))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_40 = FUN_0003fa10(uVar12,uVar8);" (assignment_expression "local_40 = FUN_0003fa10(uVar12,uVar8)" (identifier "local_40") (= "=") (call_expression "FUN_0003fa10(uVar12,uVar8)" (identifier "FUN_0003fa10") (argument_list "(uVar12,uVar8)" (( "(") (identifier "uVar12") (, ",") (identifier "uVar8") () ")")))) (; ";")) (if_statement "if (local_40 == 0) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(local_40 == 0)" (( "(") (binary_expression "local_40 == 0" (identifier "local_40") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000417be:\n          *param_2 = *param_2 + uVar12;" (statement_identifier "LAB_000417be") (: ":") (expression_statement "*param_2 = *param_2 + uVar12;" (assignment_expression "*param_2 = *param_2 + uVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 + uVar12" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "uVar12"))) (; ";"))) (} "}")))) (labeled_statement "LAB_000416db:\n        local_4c = local_4c + -1;" (statement_identifier "LAB_000416db") (: ":") (expression_statement "local_4c = local_4c + -1;" (assignment_expression "local_4c = local_4c + -1" (identifier "local_4c") (= "=") (binary_expression "local_4c + -1" (identifier "local_4c") (+ "+") (number_literal "-1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)) {\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }" (if "if") (parenthesized_expression "(((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30))" (( "(") (binary_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))\n       && (*(byte *)(iVar9 + 2) != 0x30)" (parenthesized_expression "((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))" (( "(") (binary_expression "(cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0)" (parenthesized_expression "(cVar1 == '_')" (( "(") (binary_expression "cVar1 == '_'" (identifier "cVar1") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0)" (( "(") (binary_expression "(PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0" (parenthesized_expression "(PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4)" (( "(") (binary_expression "PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4" (subscript_expression "PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2]" (identifier "PTR__sch_istable_00072fc4") ([ "[") (binary_expression "(uint)*(byte *)(iVar9 + 2) * 2" (binary_expression "(uint)*(byte *)(iVar9 + 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar9 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 2)" (( "(") (binary_expression "iVar9 + 2" (identifier "iVar9") (+ "+") (number_literal "2")) () ")")))) (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)(iVar9 + 2) != 0x30)" (( "(") (binary_expression "*(byte *)(iVar9 + 2) != 0x30" (pointer_expression "*(byte *)(iVar9 + 2)" (* "*") (cast_expression "(byte *)(iVar9 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 2)" (( "(") (binary_expression "iVar9 + 2" (identifier "iVar9") (+ "+") (number_literal "2")) () ")")))) (!= "!=") (number_literal "0x30")) () ")"))) () ")")) (compound_statement "{\n      pbVar11 = (byte *)(iVar9 + 2);\n      local_4c = strtol((char *)pbVar11,(char **)0x0,10);\n      bVar2 = *(byte *)(iVar9 + 2);\n      bVar3 = puVar5[(uint)bVar2 * 2];\n      while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }\n      if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }\n    }" ({ "{") (expression_statement "pbVar11 = (byte *)(iVar9 + 2);" (assignment_expression "pbVar11 = (byte *)(iVar9 + 2)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(iVar9 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 2)" (( "(") (binary_expression "iVar9 + 2" (identifier "iVar9") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "local_4c = strtol((char *)pbVar11,(char **)0x0,10);" (assignment_expression "local_4c = strtol((char *)pbVar11,(char **)0x0,10)" (identifier "local_4c") (= "=") (call_expression "strtol((char *)pbVar11,(char **)0x0,10)" (identifier "strtol") (argument_list "((char *)pbVar11,(char **)0x0,10)" (( "(") (cast_expression "(char *)pbVar11" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar11")) (, ",") (cast_expression "(char **)0x0" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0")) (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "bVar2 = *(byte *)(iVar9 + 2);" (assignment_expression "bVar2 = *(byte *)(iVar9 + 2)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar9 + 2)" (* "*") (cast_expression "(byte *)(iVar9 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 2)" (( "(") (binary_expression "iVar9 + 2" (identifier "iVar9") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" (identifier "bVar3") (= "=") (subscript_expression "puVar5[(uint)bVar2 * 2]" (identifier "puVar5") ([ "[") (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "2")) (] "]"))) (; ";")) (while_statement "while ((bVar3 & 4) != 0) {\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" (while "while") (parenthesized_expression "((bVar3 & 4) != 0)" (( "(") (binary_expression "(bVar3 & 4) != 0" (parenthesized_expression "(bVar3 & 4)" (( "(") (binary_expression "bVar3 & 4" (identifier "bVar3") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pbVar11 = pbVar11 + 1;\n        bVar2 = *pbVar11;\n        bVar3 = puVar5[(uint)bVar2 * 2];\n      }" ({ "{") (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = *pbVar11;" (assignment_expression "bVar2 = *pbVar11" (identifier "bVar2") (= "=") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11"))) (; ";")) (expression_statement "bVar3 = puVar5[(uint)bVar2 * 2];" (assignment_expression "bVar3 = puVar5[(uint)bVar2 * 2]" (identifier "bVar3") (= "=") (subscript_expression "puVar5[(uint)bVar2 * 2]" (identifier "puVar5") ([ "[") (binary_expression "(uint)bVar2 * 2" (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2")) (* "*") (number_literal "2")) (] "]"))) (; ";")) (} "}"))) (if_statement "if (bVar2 == 0x5f) {\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }" (if "if") (parenthesized_expression "(bVar2 == 0x5f)" (( "(") (binary_expression "bVar2 == 0x5f" (identifier "bVar2") (== "==") (number_literal "0x5f")) () ")")) (compound_statement "{\n        *param_2 = (int)(pbVar11 + 1);\n        goto LAB_00041652;\n      }" ({ "{") (expression_statement "*param_2 = (int)(pbVar11 + 1);" (assignment_expression "*param_2 = (int)(pbVar11 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pbVar11 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar11 + 1)" (( "(") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1")) () ")")))) (; ";")) (goto_statement "goto LAB_00041652;" (goto "goto") (statement_identifier "LAB_00041652") (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00041620:\n  FUN_0003ef70();" (statement_identifier "LAB_00041620") (: ":") (expression_statement "FUN_0003ef70();" (call_expression "FUN_0003ef70()" (identifier "FUN_0003ef70") (argument_list "()" (( "(") () ")"))) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

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

type_1 __regparm3
function_1(type_2 *minfo,char **pp,type_3 *var_4)

{
  char var_1;
  type_4 var_5;
  type_4 var_29;
  char *var_2;
  type_4 *var_6;
  type_5 *puVar5;
  type_1 var_8;
  size_t var_16;
  type_6 *var_19;
  type_7 kind;
  type_8 var_12;
  char *var_24;
  int var_26;
  type_6 var_21;
  char *pcVar11;
  type_9 var_13;
  type_4 *var_14;
  type_9 var_15;
  long var_3;
  type_3 var_17;
  char *name;
  type_10 uStack_14;
  
  puVar5 = PTR__sch_istable_00072fc4;
  uStack_14 = 0x41589;
  var_2 = *pp;
  var_1 = var_2[1];
  if ('0' < var_1) {
    if (var_1 < ':') {
      var_3 = var_1 + -0x30;
      *pp = var_2 + (var_2[2] == '_') + 2;
LAB_00041652:
      puVar5 = PTR__sch_istable_00072fc4;
      var_17 = (type_3)0x0;
      do {
        if (var_3 == 0) {
          if (var_4 == (type_3 *)0x0) {
            return 1;
          }
          *var_4 = var_17;
          return 1;
        }
        var_6 = (type_4 *)*pp;
        var_5 = *var_6;
        var_14 = var_6;
        if (var_5 == 0x5f) {
          var_14 = var_6 + 1;
          *pp = (char *)var_14;
          var_5 = var_6[1];
        }
        var_13 = (type_9)var_5;
        if (var_5 == 0x74) {
          if (var_4 == (type_3 *)0x0) {
            var_12 = (type_8)var_7(minfo,pp,(char **)0x0);
          }
          else {
            var_8 = var_7(minfo,pp,&name);
            pcVar11 = name;
            if (var_8 == 0) {
              return 0;
            }
            var_16 = var_9(name);
            var_17 = var_10
                                 (minfo->dhandle,(type_11 *)&minfo->info->tags,pcVar11,var_16,
                                  DEBUG_KIND_CLASS);
            var_11(name);
            var_12 = var_17;
          }
          if (var_12 == (type_8)0x0) {
            return 0;
          }
        }
        else {
          var_15 = 0;
          if ((puVar5[var_13 * 2] & 4) != 0) {
            var_15 = 0;
            do {
              var_14 = var_14 + 1;
              *pp = (char *)var_14;
              var_15 = (char)var_13 + -0x30 + var_15 * 10;
              var_13 = (type_9)*var_14;
            } while ((puVar5[var_13 * 2] & 4) != 0);
            var_16 = var_9((char *)var_14);
            if (var_16 < var_15) goto LAB_00041620;
          }
          if (var_4 != (type_3 *)0x0) {
            if ((var_17 != (type_3)0x0) &&
               (var_19 = var_18(minfo->dhandle,var_17), var_19 != (type_6 *)0x0))
            {
              pcVar11 = var_20(*pp,var_15);
              var_21 = *var_19;
              if (var_21 == (type_6)0x0) {
                var_11(pcVar11);
              }
              else {
                do {
                  var_17 = var_22(minfo->dhandle,var_21);
                  if (var_17 == (type_3)0x0) {
                    var_11(pcVar11);
                    return 0;
                  }
                  var_24 = var_23(minfo->dhandle,var_17);
                  if ((var_24 != (char *)0x0) && (var_26 = var_25(var_24,pcVar11), var_26 == 0)) {
                    var_11(pcVar11);
                    *pp = *pp + var_15;
                    goto LAB_000416db;
                  }
                  var_19 = var_19 + 1;
                  var_21 = *var_19;
                } while (var_21 != (type_6)0x0);
                var_11(pcVar11);
              }
            }
            kind = DEBUG_KIND_CLASS;
            if (var_3 == 1) {
              pcVar11 = var_20(*pp,var_15);
              var_17 = var_27(minfo->dhandle,pcVar11);
              var_11(pcVar11);
              if (var_17 != (type_3)0x0) goto LAB_000417be;
              kind = DEBUG_KIND_ILLEGAL;
            }
            var_17 = var_10
                                 (minfo->dhandle,(type_11 *)&minfo->info->tags,*pp,var_15,kind);
            if (var_17 == (type_8)0x0) {
              return 0;
            }
          }
LAB_000417be:
          *pp = *pp + var_15;
        }
LAB_000416db:
        var_3 = var_3 + -1;
      } while( true );
    }
    if (((var_1 == '_') && ((PTR__sch_istable_00072fc4[(type_9)(type_4)var_2[2] * 2] & 4) != 0)) &&
       (var_2[2] != 0x30)) {
      var_14 = (type_4 *)(var_2 + 2);
      var_3 = var_28((char *)var_14,(char **)0x0,10);
      var_5 = var_2[2];
      var_29 = puVar5[(type_9)var_5 * 2];
      while ((var_29 & 4) != 0) {
        var_14 = var_14 + 1;
        var_5 = *var_14;
        var_29 = puVar5[(type_9)var_5 * 2];
      }
      if (var_5 == 0x5f) {
        *pp = (char *)(var_14 + 1);
        goto LAB_00041652;
      }
    }
  }
LAB_00041620:
  var_30(var_2);
  return 0;
}


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

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

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

{
  char cVar1;
  byte bVar2;
  byte bVar3;
  byte *pbVar4;
  undefined *puVar5;
  size_t sVar6;
  int *piVar7;
  undefined4 uVar8;
  char *__s2;
  char *__s1;
  int iVar9;
  void *__ptr;
  uint uVar10;
  byte *pbVar11;
  uint uVar12;
  long local_4c;
  int local_40;
  char *local_20;
  
  puVar5 = PTR__sch_istable_00072fc4;
  iVar9 = *param_2;
  cVar1 = *(char *)(iVar9 + 1);
  if ('0' < cVar1) {
    if (cVar1 < ':') {
      local_4c = cVar1 + -0x30;
      *param_2 = iVar9 + 2 + (uint)(*(char *)(iVar9 + 2) == '_');
LAB_00041652:
      puVar5 = PTR__sch_istable_00072fc4;
      local_40 = 0;
      do {
        if (local_4c == 0) {
          if (param_3 == (int *)0x0) {
            return 1;
          }
          *param_3 = local_40;
          return 1;
        }
        pbVar4 = (byte *)*param_2;
        bVar2 = *pbVar4;
        pbVar11 = pbVar4;
        if (bVar2 == 0x5f) {
          pbVar11 = pbVar4 + 1;
          *param_2 = (int)pbVar11;
          bVar2 = pbVar4[1];
        }
        uVar10 = (uint)bVar2;
        if (bVar2 == 0x74) {
          if (param_3 == (int *)0x0) {
            iVar9 = FUN_00040f70();
          }
          else {
            iVar9 = FUN_00040f70();
            if (iVar9 == 0) {
              return 0;
            }
            sVar6 = strlen(local_20);
            local_40 = FUN_0003fa10(sVar6,9);
            free(local_20);
            iVar9 = local_40;
          }
          if (iVar9 == 0) {
            return 0;
          }
        }
        else {
          uVar12 = 0;
          if ((puVar5[uVar10 * 2] & 4) != 0) {
            uVar12 = 0;
            do {
              pbVar11 = pbVar11 + 1;
              *param_2 = (int)pbVar11;
              uVar12 = (char)uVar10 + -0x30 + uVar12 * 10;
              uVar10 = (uint)*pbVar11;
            } while ((puVar5[uVar10 * 2] & 4) != 0);
            sVar6 = strlen((char *)pbVar11);
            if (sVar6 < uVar12) goto LAB_00041620;
          }
          if (param_3 != (int *)0x0) {
            if ((local_40 != 0) &&
               (piVar7 = (int *)FUN_0003ec50(*param_1,local_40), piVar7 != (int *)0x0)) {
              __s2 = (char *)FUN_0003f060();
              iVar9 = *piVar7;
              if (iVar9 == 0) {
                free(__s2);
              }
              else {
                do {
                  local_40 = FUN_0003ec90(*param_1,iVar9);
                  if (local_40 == 0) {
                    free(__s2);
                    return 0;
                  }
                  __s1 = (char *)FUN_0003eac0(*param_1,local_40);
                  if ((__s1 != (char *)0x0) && (iVar9 = strcmp(__s1,__s2), iVar9 == 0)) {
                    free(__s2);
                    *param_2 = *param_2 + uVar12;
                    goto LAB_000416db;
                  }
                  piVar7 = piVar7 + 1;
                  iVar9 = *piVar7;
                } while (iVar9 != 0);
                free(__s2);
              }
            }
            uVar8 = 9;
            if (local_4c == 1) {
              __ptr = (void *)FUN_0003f060();
              local_40 = FUN_0003e8b0(*param_1,__ptr);
              free(__ptr);
              if (local_40 != 0) goto LAB_000417be;
              uVar8 = 0;
            }
            local_40 = FUN_0003fa10(uVar12,uVar8);
            if (local_40 == 0) {
              return 0;
            }
          }
LAB_000417be:
          *param_2 = *param_2 + uVar12;
        }
LAB_000416db:
        local_4c = local_4c + -1;
      } while( true );
    }
    if (((cVar1 == '_') && ((PTR__sch_istable_00072fc4[(uint)*(byte *)(iVar9 + 2) * 2] & 4) != 0))
       && (*(byte *)(iVar9 + 2) != 0x30)) {
      pbVar11 = (byte *)(iVar9 + 2);
      local_4c = strtol((char *)pbVar11,(char **)0x0,10);
      bVar2 = *(byte *)(iVar9 + 2);
      bVar3 = puVar5[(uint)bVar2 * 2];
      while ((bVar3 & 4) != 0) {
        pbVar11 = pbVar11 + 1;
        bVar2 = *pbVar11;
        bVar3 = puVar5[(uint)bVar2 * 2];
      }
      if (bVar2 == 0x5f) {
        *param_2 = (int)(pbVar11 + 1);
        goto LAB_00041652;
      }
    }
  }
LAB_00041620:
  FUN_0003ef70();
  return 0;
}

