
bfd_boolean stab_demangle_type(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)

{
  byte *s;
  byte bVar1;
  uint uVar2;
  bfd_boolean bVar3;
  int *extraout_EDX;
  byte *pbVar4;
  int unaff_EDI;
  debug_type class_type;
  uint i;
  char *p;
  
  __x86_get_pc_thunk_di();
  s = (byte *)*extraout_EDX;
  uVar2 = (uint)*s;
  pbVar4 = s;
  if ((byte)(uVar2 - 0x41) < 0x30) {
                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    bVar3 = (*(code *)(&UNK_0001e269 +
                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();
    return bVar3;
  }
  do {
    bVar1 = (byte)uVar2;
    if (bVar1 == 0x53) {
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else if ((char)bVar1 < 'T') {
      if (bVar1 != 0x43) {
LAB_00022230:
        if (0x78 < bVar1) {
          stab_bad_demangle((char *)s);
          return 0;
        }
                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()
        ;
        return bVar3;
      }
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else if (bVar1 == 0x55) {
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else {
      if (bVar1 != 0x56) goto LAB_00022230;
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    uVar2 = (uint)pbVar4[1];
    pbVar4 = (byte *)*extraout_EDX;
  } while( true );
}



undefined4 FUN_00021d90(void)

{
  byte bVar1;
  uint uVar2;
  undefined4 uVar3;
  int *extraout_EDX;
  byte *pbVar4;
  int unaff_EDI;
  
  FUN_0001c3b7();
  pbVar4 = (byte *)*extraout_EDX;
  uVar2 = (uint)*pbVar4;
  if ((byte)(uVar2 - 0x41) < 0x30) {
                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar3 = (*(code *)(&UNK_0001e269 +
                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();
    return uVar3;
  }
  do {
    bVar1 = (byte)uVar2;
    if (bVar1 == 0x53) {
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else if ((char)bVar1 < 'T') {
      if (bVar1 != 0x43) {
LAB_00022230:
        if (0x78 < bVar1) {
          FUN_000208f0();
          return 0;
        }
                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()
        ;
        return uVar3;
      }
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else if (bVar1 == 0x55) {
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else {
      if (bVar1 != 0x56) goto LAB_00022230;
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    uVar2 = (uint)pbVar4[1];
    pbVar4 = (byte *)*extraout_EDX;
  } while( true );
}


PUSH EBP
PUSH EDI
CALL 0x0001c3b7
ADD EDI,0x1e269
PUSH ESI
MOV ESI,EDX
PUSH EBX
SUB ESP,0x3c
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EDX]
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0xc],EAX
MOVZX EAX,byte ptr [EAX]
LEA EDX,[EAX + -0x41]
CMP DL,0x2f
JA 0x000221b8
MOVZX EDX,DL
MOV EBX,dword ptr [EDI + EDX*0x4 + 0xffff44f4]
ADD EBX,EDI
JMP EBX
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x000208f0
XOR EBP,EBP
ADD ESP,0x3c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [ESP + 0xc]
XOR ECX,ECX
MOV dword ptr [ESP + 0x18],0x0
XOR EBP,EBP
MOV dword ptr [ESP + 0x14],0x0
JMP 0x000221ec
CMP AL,0x56
JNZ 0x00022230
LEA EAX,[EDX + 0x1]
MOV EBP,0x1
MOV dword ptr [ESI],EAX
MOVZX EAX,byte ptr [EDX + 0x1]
MOV EDX,dword ptr [ESI]
CMP AL,0x53
JZ 0x00022220
JLE 0x00022208
CMP AL,0x55
JNZ 0x000221d8
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x18],0x1
MOV dword ptr [ESI],EAX
JMP 0x000221e6
CMP AL,0x43
JNZ 0x00022230
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x14],0x1
MOV dword ptr [ESI],EAX
JMP 0x000221e6
LEA EAX,[EDX + 0x1]
MOV ECX,0x1
MOV dword ptr [ESI],EAX
JMP 0x000221e6
CMP AL,0x78
JA 0x00021ea0
MOV EBX,dword ptr [EDI + EAX*0x4 + 0xffff45b4]
ADD EBX,EDI
JMP EBX
(translation_unit "undefined4 FUN_00021d90(void)\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}\n\n" (function_definition "undefined4 FUN_00021d90(void)\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" type_identifier (function_declarator "FUN_00021d90(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int *extraout_EDX;" primitive_type (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_0001c3b7();" (call_expression "FUN_0001c3b7()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar4 = (byte *)*extraout_EDX;" (assignment_expression "pbVar4 = (byte *)*extraout_EDX" identifier = (cast_expression "(byte *)*extraout_EDX" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*extraout_EDX" * identifier))) ;) (expression_statement "uVar2 = (uint)*pbVar4;" (assignment_expression "uVar2 = (uint)*pbVar4" identifier = (binary_expression "(uint)*pbVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }" if (parenthesized_expression "((byte)(uVar2 - 0x41) < 0x30)" ( (binary_expression "(byte)(uVar2 - 0x41) < 0x30" (call_expression "(byte)(uVar2 - 0x41)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar2 - 0x41)" ( (binary_expression "uVar2 - 0x41" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }" { comment comment (expression_statement "uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();" (assignment_expression "uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" identifier = (call_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" ( (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" (pointer_expression "&UNK_0001e269" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" ( (binary_expression "unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4" (binary_expression "unaff_EDI + 0x1275d" identifier + number_literal) + (binary_expression "(uVar2 - 0x41 & 0xff) * 4" (parenthesized_expression "(uVar2 - 0x41 & 0xff)" ( (binary_expression "uVar2 - 0x41 & 0xff" (binary_expression "uVar2 - 0x41" identifier - number_literal) & number_literal) )) * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (do_statement "do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );" do (compound_statement "{\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  }" { (expression_statement "bVar1 = (byte)uVar2;" (assignment_expression "bVar1 = (byte)uVar2" identifier = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "(bVar1 == 0x53)" ( (binary_expression "bVar1 == 0x53" identifier == number_literal) )) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (if_statement "if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "((char)bVar1 < 'T')" ( (binary_expression "(char)bVar1 < 'T'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'T'" ' character ')) )) (compound_statement "{\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (if_statement "if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }" if (parenthesized_expression "(bVar1 != 0x43)" ( (binary_expression "bVar1 != 0x43" identifier != number_literal) )) (compound_statement "{\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }" { (labeled_statement "LAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }" statement_identifier : (if_statement "if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }" if (parenthesized_expression "(0x78 < bVar1)" ( (binary_expression "0x78 < bVar1" number_literal < identifier) )) (compound_statement "{\n          FUN_000208f0();\n          return 0;\n        }" { (expression_statement "FUN_000208f0();" (call_expression "FUN_000208f0()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) }))) comment comment (expression_statement "uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;" (assignment_expression "uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" identifier = (call_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" ( (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" (pointer_expression "&UNK_0001e269" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1281d + uVar2 * 4)" ( (binary_expression "unaff_EDI + 0x1281d + uVar2 * 4" (binary_expression "unaff_EDI + 0x1281d" identifier + number_literal) + (binary_expression "uVar2 * 4" identifier * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (if_statement "if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "(bVar1 == 0x55)" ( (binary_expression "bVar1 == 0x55" identifier == number_literal) )) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (compound_statement "{\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (if_statement "if (bVar1 != 0x56) goto LAB_00022230;" if (parenthesized_expression "(bVar1 != 0x56)" ( (binary_expression "bVar1 != 0x56" identifier != number_literal) )) (goto_statement "goto LAB_00022230;" goto statement_identifier ;)) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }))))))) (expression_statement "uVar2 = (uint)pbVar4[1];" (assignment_expression "uVar2 = (uint)pbVar4[1]" identifier = (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar4 = (byte *)*extraout_EDX;" (assignment_expression "pbVar4 = (byte *)*extraout_EDX" identifier = (cast_expression "(byte *)*extraout_EDX" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*extraout_EDX" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "bfd_boolean stab_demangle_type(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)\n\n{\n  byte *s;\n  byte bVar1;\n  uint uVar2;\n  bfd_boolean bVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  debug_type class_type;\n  uint i;\n  char *p;\n  \n  __x86_get_pc_thunk_di();\n  s = (byte *)*extraout_EDX;\n  uVar2 = (uint)*s;\n  pbVar4 = s;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    bVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return bVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}\n\n" (function_definition "bfd_boolean stab_demangle_type(stab_demangle_info *minfo,char **pp,debug_type_conflict *ptype)\n\n{\n  byte *s;\n  byte bVar1;\n  uint uVar2;\n  bfd_boolean bVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  debug_type class_type;\n  uint i;\n  char *p;\n  \n  __x86_get_pc_thunk_di();\n  s = (byte *)*extraout_EDX;\n  uVar2 = (uint)*s;\n  pbVar4 = s;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    bVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return bVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" type_identifier (function_declarator "stab_demangle_type(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  byte *s;\n  byte bVar1;\n  uint uVar2;\n  bfd_boolean bVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  debug_type class_type;\n  uint i;\n  char *p;\n  \n  __x86_get_pc_thunk_di();\n  s = (byte *)*extraout_EDX;\n  uVar2 = (uint)*s;\n  pbVar4 = s;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    bVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return bVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" { (declaration "byte *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "bfd_boolean bVar3;" type_identifier identifier ;) (declaration "int *extraout_EDX;" primitive_type (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "debug_type class_type;" type_identifier identifier ;) (declaration "uint i;" type_identifier identifier ;) (declaration "char *p;" primitive_type (pointer_declarator "*p" * identifier) ;) (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) (expression_statement "s = (byte *)*extraout_EDX;" (assignment_expression "s = (byte *)*extraout_EDX" identifier = (cast_expression "(byte *)*extraout_EDX" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*extraout_EDX" * identifier))) ;) (expression_statement "uVar2 = (uint)*s;" (assignment_expression "uVar2 = (uint)*s" identifier = (binary_expression "(uint)*s" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar4 = s;" (assignment_expression "pbVar4 = s" identifier = identifier) ;) (if_statement "if ((byte)(uVar2 - 0x41) < 0x30) {\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    bVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return bVar3;\n  }" if (parenthesized_expression "((byte)(uVar2 - 0x41) < 0x30)" ( (binary_expression "(byte)(uVar2 - 0x41) < 0x30" (call_expression "(byte)(uVar2 - 0x41)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar2 - 0x41)" ( (binary_expression "uVar2 - 0x41" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    bVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return bVar3;\n  }" { comment comment (expression_statement "bVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();" (assignment_expression "bVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" identifier = (call_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" ( (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" (pointer_expression "&UNK_0001e269" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" ( (binary_expression "unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4" (binary_expression "unaff_EDI + 0x1275d" identifier + number_literal) + (binary_expression "(uVar2 - 0x41 & 0xff) * 4" (parenthesized_expression "(uVar2 - 0x41 & 0xff)" ( (binary_expression "uVar2 - 0x41 & 0xff" (binary_expression "uVar2 - 0x41" identifier - number_literal) & number_literal) )) * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return bVar3;" return identifier ;) })) (do_statement "do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );" do (compound_statement "{\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  }" { (expression_statement "bVar1 = (byte)uVar2;" (assignment_expression "bVar1 = (byte)uVar2" identifier = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "(bVar1 == 0x53)" ( (binary_expression "bVar1 == 0x53" identifier == number_literal) )) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (if_statement "if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "((char)bVar1 < 'T')" ( (binary_expression "(char)bVar1 < 'T'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'T'" ' character ')) )) (compound_statement "{\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (if_statement "if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }" if (parenthesized_expression "(bVar1 != 0x43)" ( (binary_expression "bVar1 != 0x43" identifier != number_literal) )) (compound_statement "{\nLAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }\n                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return bVar3;\n      }" { (labeled_statement "LAB_00022230:\n        if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }" statement_identifier : (if_statement "if (0x78 < bVar1) {\n          stab_bad_demangle((char *)s);\n          return 0;\n        }" if (parenthesized_expression "(0x78 < bVar1)" ( (binary_expression "0x78 < bVar1" number_literal < identifier) )) (compound_statement "{\n          stab_bad_demangle((char *)s);\n          return 0;\n        }" { (expression_statement "stab_bad_demangle((char *)s);" (call_expression "stab_bad_demangle((char *)s)" identifier (argument_list "((char *)s)" ( (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (return_statement "return 0;" return number_literal ;) }))) comment comment (expression_statement "bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;" (assignment_expression "bVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" identifier = (call_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" ( (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" (pointer_expression "&UNK_0001e269" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1281d + uVar2 * 4)" ( (binary_expression "unaff_EDI + 0x1281d + uVar2 * 4" (binary_expression "unaff_EDI + 0x1281d" identifier + number_literal) + (binary_expression "uVar2 * 4" identifier * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return bVar3;" return identifier ;) })) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (if_statement "if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "(bVar1 == 0x55)" ( (binary_expression "bVar1 == 0x55" identifier == number_literal) )) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (compound_statement "{\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (if_statement "if (bVar1 != 0x56) goto LAB_00022230;" if (parenthesized_expression "(bVar1 != 0x56)" ( (binary_expression "bVar1 != 0x56" identifier != number_literal) )) (goto_statement "goto LAB_00022230;" goto statement_identifier ;)) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }))))))) (expression_statement "uVar2 = (uint)pbVar4[1];" (assignment_expression "uVar2 = (uint)pbVar4[1]" identifier = (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar4 = (byte *)*extraout_EDX;" (assignment_expression "pbVar4 = (byte *)*extraout_EDX" identifier = (cast_expression "(byte *)*extraout_EDX" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*extraout_EDX" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "undefined4 FUN_00021d90(void)\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}\n\n" (function_definition "undefined4 FUN_00021d90(void)\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" type_identifier (function_declarator "FUN_00021d90(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int *extraout_EDX;" primitive_type (pointer_declarator "*extraout_EDX" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (expression_statement "FUN_0001c3b7();" (call_expression "FUN_0001c3b7()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar4 = (byte *)*extraout_EDX;" (assignment_expression "pbVar4 = (byte *)*extraout_EDX" identifier = (cast_expression "(byte *)*extraout_EDX" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*extraout_EDX" * identifier))) ;) (expression_statement "uVar2 = (uint)*pbVar4;" (assignment_expression "uVar2 = (uint)*pbVar4" identifier = (binary_expression "(uint)*pbVar4" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if ((byte)(uVar2 - 0x41) < 0x30) {\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }" if (parenthesized_expression "((byte)(uVar2 - 0x41) < 0x30)" ( (binary_expression "(byte)(uVar2 - 0x41) < 0x30" (call_expression "(byte)(uVar2 - 0x41)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(uVar2 - 0x41)" ( (binary_expression "uVar2 - 0x41" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }" { (expression_statement "uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();" (assignment_expression "uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" identifier = (call_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" ( (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" (pointer_expression "&UNK_0001e269" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" * (cast_expression "(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" ( (binary_expression "unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4" (binary_expression "unaff_EDI + 0x1275d" identifier + number_literal) + (binary_expression "(uVar2 - 0x41 & 0xff) * 4" (parenthesized_expression "(uVar2 - 0x41 & 0xff)" ( (binary_expression "uVar2 - 0x41 & 0xff" (binary_expression "uVar2 - 0x41" identifier - number_literal) & number_literal) )) * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (do_statement "do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );" do (compound_statement "{\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  }" { (expression_statement "bVar1 = (byte)uVar2;" (assignment_expression "bVar1 = (byte)uVar2" identifier = (cast_expression "(byte)uVar2" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "(bVar1 == 0x53)" ( (binary_expression "bVar1 == 0x53" identifier == number_literal) )) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (if_statement "if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "((char)bVar1 < 'T')" ( (binary_expression "(char)bVar1 < 'T'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'T'" ' character ')) )) (compound_statement "{\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (if_statement "if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }" if (parenthesized_expression "(bVar1 != 0x43)" ( (binary_expression "bVar1 != 0x43" identifier != number_literal) )) (compound_statement "{\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }" { (labeled_statement "LAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }" statement_identifier : (if_statement "if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }" if (parenthesized_expression "(0x78 < bVar1)" ( (binary_expression "0x78 < bVar1" number_literal < identifier) )) (compound_statement "{\n          FUN_000208f0();\n          return 0;\n        }" { (expression_statement "FUN_000208f0();" (call_expression "FUN_000208f0()" identifier (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) }))) (expression_statement "uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;" (assignment_expression "uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" identifier = (call_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))" ( (pointer_expression "*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" * (cast_expression "(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" ( (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" (pointer_expression "&UNK_0001e269" & identifier) + (pointer_expression "*(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x1281d + uVar2 * 4)" ( (binary_expression "unaff_EDI + 0x1281d + uVar2 * 4" (binary_expression "unaff_EDI + 0x1281d" identifier + number_literal) + (binary_expression "uVar2 * 4" identifier * number_literal)) ))))) + identifier) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar3;" return identifier ;) })) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (if_statement "if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" if (parenthesized_expression "(bVar1 == 0x55)" ( (binary_expression "bVar1 == 0x55" identifier == number_literal) )) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }) (else_clause "else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" else (compound_statement "{\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" { (if_statement "if (bVar1 != 0x56) goto LAB_00022230;" if (parenthesized_expression "(bVar1 != 0x56)" ( (binary_expression "bVar1 != 0x56" identifier != number_literal) )) (goto_statement "goto LAB_00022230;" goto statement_identifier ;)) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" * identifier) = (cast_expression "(int)(pbVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar4 + 1)" ( (binary_expression "pbVar4 + 1" identifier + number_literal) )))) ;) }))))))) (expression_statement "uVar2 = (uint)pbVar4[1];" (assignment_expression "uVar2 = (uint)pbVar4[1]" identifier = (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ]))) ;) (expression_statement "pbVar4 = (byte *)*extraout_EDX;" (assignment_expression "pbVar4 = (byte *)*extraout_EDX" identifier = (cast_expression "(byte *)*extraout_EDX" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*extraout_EDX" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) * LIT)) ))))) + IDENT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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) )))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (return_statement return LIT ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) + IDENT) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (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) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))))))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "undefined4 FUN_00021d90(void)\n\n{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" (type_identifier "undefined4") (function_declarator "FUN_00021d90(void)" (identifier "FUN_00021d90") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  byte bVar1;\n  uint uVar2;\n  undefined4 uVar3;\n  int *extraout_EDX;\n  byte *pbVar4;\n  int unaff_EDI;\n  \n  FUN_0001c3b7();\n  pbVar4 = (byte *)*extraout_EDX;\n  uVar2 = (uint)*pbVar4;\n  if ((byte)(uVar2 - 0x41) < 0x30) {\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }\n  do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int *extraout_EDX;" (primitive_type "int") (pointer_declarator "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (expression_statement "FUN_0001c3b7();" (call_expression "FUN_0001c3b7()" (identifier "FUN_0001c3b7") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar4 = (byte *)*extraout_EDX;" (assignment_expression "pbVar4 = (byte *)*extraout_EDX" (identifier "pbVar4") (= "=") (cast_expression "(byte *)*extraout_EDX" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")))) (; ";")) (expression_statement "uVar2 = (uint)*pbVar4;" (assignment_expression "uVar2 = (uint)*pbVar4" (identifier "uVar2") (= "=") (binary_expression "(uint)*pbVar4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar4"))) (; ";")) (if_statement "if ((byte)(uVar2 - 0x41) < 0x30) {\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }" (if "if") (parenthesized_expression "((byte)(uVar2 - 0x41) < 0x30)" (( "(") (binary_expression "(byte)(uVar2 - 0x41) < 0x30" (call_expression "(byte)(uVar2 - 0x41)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(uVar2 - 0x41)" (( "(") (binary_expression "uVar2 - 0x41" (identifier "uVar2") (- "-") (number_literal "0x41")) () ")"))) (< "<") (number_literal "0x30")) () ")")) (compound_statement "{\n                    \n                    \n    uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();\n    return uVar3;\n  }" ({ "{") (expression_statement "uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();" (assignment_expression "uVar3 = (*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" (identifier "uVar3") (= "=") (call_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))" (( "(") (pointer_expression "*(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" (* "*") (cast_expression "(code *)(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI)" (( "(") (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 +\n                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" (pointer_expression "&UNK_0001e269" (& "&") (identifier "UNK_0001e269")) (+ "+") (pointer_expression "*(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4)" (( "(") (binary_expression "unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4" (binary_expression "unaff_EDI + 0x1275d" (identifier "unaff_EDI") (+ "+") (number_literal "0x1275d")) (+ "+") (binary_expression "(uVar2 - 0x41 & 0xff) * 4" (parenthesized_expression "(uVar2 - 0x41 & 0xff)" (( "(") (binary_expression "uVar2 - 0x41 & 0xff" (binary_expression "uVar2 - 0x41" (identifier "uVar2") (- "-") (number_literal "0x41")) (& "&") (number_literal "0xff")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (identifier "unaff_EDI")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (do_statement "do {\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  } while( true );" (do "do") (compound_statement "{\n    bVar1 = (byte)uVar2;\n    if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    uVar2 = (uint)pbVar4[1];\n    pbVar4 = (byte *)*extraout_EDX;\n  }" ({ "{") (expression_statement "bVar1 = (byte)uVar2;" (assignment_expression "bVar1 = (byte)uVar2" (identifier "bVar1") (= "=") (cast_expression "(byte)uVar2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar2"))) (; ";")) (if_statement "if (bVar1 == 0x53) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" (if "if") (parenthesized_expression "(bVar1 == 0x53)" (( "(") (binary_expression "bVar1 == 0x53" (identifier "bVar1") (== "==") (number_literal "0x53")) () ")")) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" ({ "{") (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (= "=") (cast_expression "(int)(pbVar4 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar4 + 1)" (( "(") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" (else "else") (if_statement "if ((char)bVar1 < 'T') {\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" (if "if") (parenthesized_expression "((char)bVar1 < 'T')" (( "(") (binary_expression "(char)bVar1 < 'T'" (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1")) (< "<") (char_literal "'T'" (' "'") (character "T") (' "'"))) () ")")) (compound_statement "{\n      if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" ({ "{") (if_statement "if (bVar1 != 0x43) {\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }" (if "if") (parenthesized_expression "(bVar1 != 0x43)" (( "(") (binary_expression "bVar1 != 0x43" (identifier "bVar1") (!= "!=") (number_literal "0x43")) () ")")) (compound_statement "{\nLAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }\n                    \n                    \n        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;\n        return uVar3;\n      }" ({ "{") (labeled_statement "LAB_00022230:\n        if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }" (statement_identifier "LAB_00022230") (: ":") (if_statement "if (0x78 < bVar1) {\n          FUN_000208f0();\n          return 0;\n        }" (if "if") (parenthesized_expression "(0x78 < bVar1)" (( "(") (binary_expression "0x78 < bVar1" (number_literal "0x78") (< "<") (identifier "bVar1")) () ")")) (compound_statement "{\n          FUN_000208f0();\n          return 0;\n        }" ({ "{") (expression_statement "FUN_000208f0();" (call_expression "FUN_000208f0()" (identifier "FUN_000208f0") (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (expression_statement "uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()\n        ;" (assignment_expression "uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" (identifier "uVar3") (= "=") (call_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()" (parenthesized_expression "(*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))" (( "(") (pointer_expression "*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" (* "*") (cast_expression "(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI)" (( "(") (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI" (binary_expression "&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" (pointer_expression "&UNK_0001e269" (& "&") (identifier "UNK_0001e269")) (+ "+") (pointer_expression "*(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x1281d + uVar2 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x1281d + uVar2 * 4)" (( "(") (binary_expression "unaff_EDI + 0x1281d + uVar2 * 4" (binary_expression "unaff_EDI + 0x1281d" (identifier "unaff_EDI") (+ "+") (number_literal "0x1281d")) (+ "+") (binary_expression "uVar2 * 4" (identifier "uVar2") (* "*") (number_literal "4"))) () ")"))))) (+ "+") (identifier "unaff_EDI")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (= "=") (cast_expression "(int)(pbVar4 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar4 + 1)" (( "(") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" (else "else") (if_statement "if (bVar1 == 0x55) {\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }\n    else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" (if "if") (parenthesized_expression "(bVar1 == 0x55)" (( "(") (binary_expression "bVar1 == 0x55" (identifier "bVar1") (== "==") (number_literal "0x55")) () ")")) (compound_statement "{\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" ({ "{") (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (= "=") (cast_expression "(int)(pbVar4 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar4 + 1)" (( "(") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" (else "else") (compound_statement "{\n      if (bVar1 != 0x56) goto LAB_00022230;\n      *extraout_EDX = (int)(pbVar4 + 1);\n    }" ({ "{") (if_statement "if (bVar1 != 0x56) goto LAB_00022230;" (if "if") (parenthesized_expression "(bVar1 != 0x56)" (( "(") (binary_expression "bVar1 != 0x56" (identifier "bVar1") (!= "!=") (number_literal "0x56")) () ")")) (goto_statement "goto LAB_00022230;" (goto "goto") (statement_identifier "LAB_00022230") (; ";"))) (expression_statement "*extraout_EDX = (int)(pbVar4 + 1);" (assignment_expression "*extraout_EDX = (int)(pbVar4 + 1)" (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")) (= "=") (cast_expression "(int)(pbVar4 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar4 + 1)" (( "(") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")))))))) (expression_statement "uVar2 = (uint)pbVar4[1];" (assignment_expression "uVar2 = (uint)pbVar4[1]" (identifier "uVar2") (= "=") (cast_expression "(uint)pbVar4[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pbVar4 = (byte *)*extraout_EDX;" (assignment_expression "pbVar4 = (byte *)*extraout_EDX" (identifier "pbVar4") (= "=") (cast_expression "(byte *)*extraout_EDX" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*extraout_EDX" (* "*") (identifier "extraout_EDX")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

type_1 function_1(type_2 *minfo,char **pp,type_3 *ptype)

{
  type_4 *var_2;
  type_4 var_5;
  type_5 var_3;
  type_1 bVar3;
  int *extraout_EDX;
  type_4 *var_6;
  int var_4;
  type_6 class_type;
  type_5 i;
  char *p;
  
  var_1();
  var_2 = (type_4 *)*extraout_EDX;
  var_3 = (type_5)*var_2;
  var_6 = var_2;
  if ((type_4)(var_3 - 0x41) < 0x30) {
                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    bVar3 = (*(type_7 *)(&UNK_0001e269 +
                      *(int *)(var_4 + 0x1275d + (var_3 - 0x41 & 0xff) * 4) + var_4))();
    return bVar3;
  }
  do {
    var_5 = (type_4)var_3;
    if (var_5 == 0x53) {
      *extraout_EDX = (int)(var_6 + 1);
    }
    else if ((char)var_5 < 'T') {
      if (var_5 != 0x43) {
LAB_00022230:
        if (0x78 < var_5) {
          var_7((char *)var_2);
          return 0;
        }
                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        bVar3 = (*(type_7 *)(&UNK_0001e269 + *(int *)(var_4 + 0x1281d + var_3 * 4) + var_4))()
        ;
        return bVar3;
      }
      *extraout_EDX = (int)(var_6 + 1);
    }
    else if (var_5 == 0x55) {
      *extraout_EDX = (int)(var_6 + 1);
    }
    else {
      if (var_5 != 0x56) goto LAB_00022230;
      *extraout_EDX = (int)(var_6 + 1);
    }
    var_3 = (type_5)var_6[1];
    var_6 = (type_4 *)*extraout_EDX;
  } while( true );
}


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

undefined4 MASKED(void)

{
  byte bVar1;
  uint uVar2;
  undefined4 uVar3;
  int *extraout_EDX;
  byte *pbVar4;
  int unaff_EDI;
  
  FUN_0001c3b7();
  pbVar4 = (byte *)*extraout_EDX;
  uVar2 = (uint)*pbVar4;
  if ((byte)(uVar2 - 0x41) < 0x30) {
                    /* WARNING: Could not recover jumptable at 0x00021dcd. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    uVar3 = (*(code *)(&UNK_0001e269 +
                      *(int *)(unaff_EDI + 0x1275d + (uVar2 - 0x41 & 0xff) * 4) + unaff_EDI))();
    return uVar3;
  }
  do {
    bVar1 = (byte)uVar2;
    if (bVar1 == 0x53) {
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else if ((char)bVar1 < 'T') {
      if (bVar1 != 0x43) {
LAB_00022230:
        if (0x78 < bVar1) {
          FUN_000208f0();
          return 0;
        }
                    /* WARNING: Could not recover jumptable at 0x00022241. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        uVar3 = (*(code *)(&UNK_0001e269 + *(int *)(unaff_EDI + 0x1281d + uVar2 * 4) + unaff_EDI))()
        ;
        return uVar3;
      }
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else if (bVar1 == 0x55) {
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    else {
      if (bVar1 != 0x56) goto LAB_00022230;
      *extraout_EDX = (int)(pbVar4 + 1);
    }
    uVar2 = (uint)pbVar4[1];
    pbVar4 = (byte *)*extraout_EDX;
  } while( true );
}

