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

bfd_boolean
tg_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)

{
  pr_handle *info;
  int *piVar1;
  byte *type;
  bfd_boolean bVar2;
  char *pcVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  bool bVar7;
  bool bVar8;
  byte bVar9;
  
  bVar9 = 0;
  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,
                  "tg_class_baseclass");
  }
  info = (pr_handle *)((int)p + 8);
  type = (byte *)pop_type(info);
  bVar7 = false;
  bVar8 = type == (byte *)0x0;
  if (!bVar8) {
    iVar4 = 6;
    pbVar5 = type;
    pbVar6 = (byte *)0x57243;
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar7 = *pbVar5 < *pbVar6;
      bVar8 = *pbVar5 == *pbVar6;
      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;
      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;
    } while (bVar8);
    if (((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&
        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&
       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))) {
      pcVar3 = "protected ";
      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&
         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {
        pcVar3 = "private ";
        if (visibility != DEBUG_VISIBILITY_PRIVATE) {
          pcVar3 = "/* unknown visibility */ ";
        }
      }
      bVar2 = prepend_type(info,pcVar3);
      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&
          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||
           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&
         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {
        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);
        *piVar1 = *piVar1 + 1;
        free(pcVar3);
        return 1;
      }
    }
  }
  return 0;
}



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

undefined4 FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  int *piVar1;
  byte *pbVar2;
  void *__ptr;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  byte bVar8;
  
  bVar8 = 0;
  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,
                  "tg_class_baseclass");
  }
  pbVar2 = (byte *)FUN_00036d90();
  bVar6 = false;
  bVar7 = pbVar2 == (byte *)0x0;
  if (!bVar7) {
    iVar3 = 6;
    pbVar4 = pbVar2;
    pbVar5 = (byte *)0x57243;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar6 = *pbVar4 < *pbVar5;
      bVar7 = *pbVar4 == *pbVar5;
      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;
      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;
    } while (bVar7);
    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&
          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&
         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&
        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&
         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&
       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&
        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {
      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);
      *piVar1 = *piVar1 + 1;
      free(__ptr);
      return 1;
    }
  }
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000153d0
ADD EBX,0x39647
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00039aea
MOV EDI,dword ptr [EAX]
TEST EDI,EDI
JZ 0x00039aea
MOV EAX,dword ptr [ESP + 0x20]
LEA EBP,[EAX + 0x8]
MOV EAX,EBP
CALL 0x00036d90
TEST EAX,EAX
JZ 0x00039a0b
MOV ECX,0x6
LEA EDI,[EBX + 0xfffe4243]
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x00039a18
ADD EAX,0x6
JNZ 0x00039a18
XOR EAX,EAX
ADD ESP,0xc
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,EAX
MOV EAX,EBP
CALL 0x00038f80
TEST EAX,EAX
JZ 0x00039a0b
MOV ESI,dword ptr [ESP + 0x2c]
TEST ESI,ESI
JNZ 0x00039ad0
CMP dword ptr [ESP + 0x30],0x1
LEA EDX,[EBX + 0xfffe43b1]
JZ 0x00039a60
MOV ECX,dword ptr [ESP + 0x30]
LEA EDX,[EBX + 0xfffe43a0]
TEST ECX,ECX
JZ 0x00039a60
CMP dword ptr [ESP + 0x30],0x2
LEA EDX,[EBX + 0xfffe43a8]
LEA EAX,[EBX + 0xfffe4386]
CMOVNZ EDX,EAX
MOV EAX,EBP
CALL 0x000374e0
TEST EAX,EAX
JZ 0x00039a0b
MOV EAX,EBP
CALL 0x00036d90
MOV ESI,EAX
TEST EAX,EAX
JZ 0x00039a0b
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [EAX + 0x18]
TEST EAX,EAX
JZ 0x00039a9b
LEA EDX,[EBX + 0xfffdc754]
MOV EAX,EBP
CALL 0x00038de0
TEST EAX,EAX
JZ 0x00039a0b
MOV EDX,ESI
MOV EAX,EBP
CALL 0x00038de0
TEST EAX,EAX
JZ 0x00039a0b
MOV EAX,dword ptr [ESP + 0x20]
SUB ESP,0xc
MOV EAX,dword ptr [EAX + 0x8]
ADD dword ptr [EAX + 0x18],0x1
PUSH ESI
CALL 0x00014120
ADD ESP,0x10
MOV EAX,0x1
JMP 0x00039a0d
LEA EDX,[EBX + 0xfffe43bc]
MOV EAX,EBP
CALL 0x000374e0
TEST EAX,EAX
JNZ 0x00039a31
JMP 0x00039a0b
LEA EAX,[EBX + 0xfffe481c]
PUSH EAX
LEA EAX,[EBX + 0xfffe4154]
PUSH 0x8ba
PUSH EAX
LEA EAX,[EBX + 0xfffe4650]
PUSH EAX
CALL 0x00014850
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)\n\n{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "undefined4 FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)\n\n{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" if (parenthesized_expression "((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0))" ( (binary_expression "(*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)" (parenthesized_expression "(*(int **)(param_1 + 8) == (int *)0x0)" ( (binary_expression "*(int **)(param_1 + 8) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_1 + 8) == 0)" ( (binary_expression "**(int **)(param_1 + 8) == 0" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" { comment (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" identifier (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" ( (string_literal ""info->stack != NULL && info->stack->next != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""tg_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "pbVar2 = (byte *)FUN_00036d90();" (assignment_expression "pbVar2 = (byte *)FUN_00036d90()" identifier = (cast_expression "(byte *)FUN_00036d90()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "bVar7 = pbVar2 == (byte *)0x0;" (assignment_expression "bVar7 = pbVar2 == (byte *)0x0" identifier = (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }" { (expression_statement "iVar3 = 6;" (assignment_expression "iVar3 = 6" identifier = number_literal) ;) (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)0x57243;" (assignment_expression "pbVar5 = (byte *)0x57243" identifier = (cast_expression "(byte *)0x57243" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);" do (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;" (assignment_expression "pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "pbVar4 + (uint)bVar8 * -2 + 1" (binary_expression "pbVar4 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar8 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }" if (parenthesized_expression "(((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0))))" ( (binary_expression "((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))" (parenthesized_expression "((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0))))" ( (binary_expression "(((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))" (parenthesized_expression "(((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0))))" ( (binary_expression "((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))" (parenthesized_expression "((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0))" ( (binary_expression "(((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)" (parenthesized_expression "(((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa))" ( (binary_expression "((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)" (parenthesized_expression "((!bVar6 && !bVar7) != bVar6)" ( (binary_expression "(!bVar6 && !bVar7) != bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) != identifier) )) || (parenthesized_expression "(pbVar2 != (byte *)0xfffffffa)" ( (binary_expression "pbVar2 != (byte *)0xfffffffa" identifier != (cast_expression "(byte *)0xfffffffa" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar3 = FUN_00038f80(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00038f80(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038f80()" identifier = (call_expression "FUN_00038f80()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))" ( (parenthesized_expression "(param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0))" ( (binary_expression "param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)" (binary_expression "param_4 == 0" identifier == number_literal) || (parenthesized_expression "(iVar3 = FUN_000374e0(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_000374e0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) && (parenthesized_expression "((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))" ( (parenthesized_expression "(iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0))" ( (comma_expression "iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" (assignment_expression "iVar3 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" (binary_expression "iVar3 != 0" identifier != number_literal) && (parenthesized_expression "(__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" ( (comma_expression "__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0" (assignment_expression "__ptr = (void *)FUN_00036d90()" identifier = (cast_expression "(void *)FUN_00036d90()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) , (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) && (parenthesized_expression "(((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))" ( (parenthesized_expression "((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0))" ( (binary_expression "(*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)" (parenthesized_expression "(*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0))" ( (binary_expression "*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)" (binary_expression "*(int *)(*(int *)(param_1 + 8) + 0x18) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 8) + 0x18)" * (cast_expression "(int *)(*(int *)(param_1 + 8) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 0x18)" ( (binary_expression "*(int *)(param_1 + 8) + 0x18" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) || (parenthesized_expression "(iVar3 = FUN_00038de0(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00038de0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038de0()" identifier = (call_expression "FUN_00038de0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(iVar3 = FUN_00038de0(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00038de0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038de0()" identifier = (call_expression "FUN_00038de0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }" { (expression_statement "piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);" (assignment_expression "piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 8) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 0x18)" ( (binary_expression "*(int *)(param_1 + 8) + 0x18" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nbfd_boolean\ntg_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)\n\n{\n  pr_handle *info;\n  int *piVar1;\n  byte *type;\n  bfd_boolean bVar2;\n  char *pcVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  info = (pr_handle *)((int)p + 8);\n  type = (byte *)pop_type(info);\n  bVar7 = false;\n  bVar8 = type == (byte *)0x0;\n  if (!bVar8) {\n    iVar4 = 6;\n    pbVar5 = type;\n    pbVar6 = (byte *)0x57243;\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar7 = *pbVar5 < *pbVar6;\n      bVar8 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n    } while (bVar8);\n    if (((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))) {\n      pcVar3 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }\n      bVar2 = prepend_type(info,pcVar3);\n      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}\n\n" comment comment (function_definition "bfd_boolean\ntg_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)\n\n{\n  pr_handle *info;\n  int *piVar1;\n  byte *type;\n  bfd_boolean bVar2;\n  char *pcVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  info = (pr_handle *)((int)p + 8);\n  type = (byte *)pop_type(info);\n  bVar7 = false;\n  bVar8 = type == (byte *)0x0;\n  if (!bVar8) {\n    iVar4 = 6;\n    pbVar5 = type;\n    pbVar6 = (byte *)0x57243;\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar7 = *pbVar5 < *pbVar6;\n      bVar8 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n    } while (bVar8);\n    if (((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))) {\n      pcVar3 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }\n      bVar2 = prepend_type(info,pcVar3);\n      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "tg_class_baseclass(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)" identifier (parameter_list "(void *p,bfd_vma bitpos,bfd_boolean is_virtual,debug_visibility visibility)" ( (parameter_declaration "void *p" primitive_type (pointer_declarator "*p" * identifier)) , (parameter_declaration "bfd_vma bitpos" type_identifier identifier) , (parameter_declaration "bfd_boolean is_virtual" type_identifier identifier) , (parameter_declaration "debug_visibility visibility" type_identifier identifier) ))) (compound_statement "{\n  pr_handle *info;\n  int *piVar1;\n  byte *type;\n  bfd_boolean bVar2;\n  char *pcVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  bool bVar7;\n  bool bVar8;\n  byte bVar9;\n  \n  bVar9 = 0;\n  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  info = (pr_handle *)((int)p + 8);\n  type = (byte *)pop_type(info);\n  bVar7 = false;\n  bVar8 = type == (byte *)0x0;\n  if (!bVar8) {\n    iVar4 = 6;\n    pbVar5 = type;\n    pbVar6 = (byte *)0x57243;\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar7 = *pbVar5 < *pbVar6;\n      bVar8 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n    } while (bVar8);\n    if (((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))) {\n      pcVar3 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }\n      bVar2 = prepend_type(info,pcVar3);\n      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }\n    }\n  }\n  return 0;\n}" { (declaration "pr_handle *info;" type_identifier (pointer_declarator "*info" * identifier) ;) (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte *type;" type_identifier (pointer_declarator "*type" * identifier) ;) (declaration "bfd_boolean bVar2;" type_identifier identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (expression_statement "bVar9 = 0;" (assignment_expression "bVar9 = 0" identifier = number_literal) ;) (if_statement "if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" if (parenthesized_expression "((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0))" ( (binary_expression "(*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)" (parenthesized_expression "(*(int **)((int)p + 8) == (int *)0x0)" ( (binary_expression "*(int **)((int)p + 8) == (int *)0x0" (pointer_expression "*(int **)((int)p + 8)" * (cast_expression "(int **)((int)p + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)((int)p + 8) == 0)" ( (binary_expression "**(int **)((int)p + 8) == 0" (pointer_expression "**(int **)((int)p + 8)" * (pointer_expression "*(int **)((int)p + 8)" * (cast_expression "(int **)((int)p + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" { comment (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" identifier (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" ( (string_literal ""info->stack != NULL && info->stack->next != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""tg_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "info = (pr_handle *)((int)p + 8);" (assignment_expression "info = (pr_handle *)((int)p + 8)" identifier = (cast_expression "(pr_handle *)((int)p + 8)" ( (type_descriptor "pr_handle *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "type = (byte *)pop_type(info);" (assignment_expression "type = (byte *)pop_type(info)" identifier = (cast_expression "(byte *)pop_type(info)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "pop_type(info)" identifier (argument_list "(info)" ( identifier ))))) ;) (expression_statement "bVar7 = false;" (assignment_expression "bVar7 = false" identifier = false) ;) (expression_statement "bVar8 = type == (byte *)0x0;" (assignment_expression "bVar8 = type == (byte *)0x0" identifier = (binary_expression "type == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar8) {\n    iVar4 = 6;\n    pbVar5 = type;\n    pbVar6 = (byte *)0x57243;\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar7 = *pbVar5 < *pbVar6;\n      bVar8 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n    } while (bVar8);\n    if (((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))) {\n      pcVar3 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }\n      bVar2 = prepend_type(info,pcVar3);\n      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }\n    }\n  }" if (parenthesized_expression "(!bVar8)" ( (unary_expression "!bVar8" ! identifier) )) (compound_statement "{\n    iVar4 = 6;\n    pbVar5 = type;\n    pbVar6 = (byte *)0x57243;\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar7 = *pbVar5 < *pbVar6;\n      bVar8 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n    } while (bVar8);\n    if (((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))) {\n      pcVar3 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }\n      bVar2 = prepend_type(info,pcVar3);\n      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }\n    }\n  }" { (expression_statement "iVar4 = 6;" (assignment_expression "iVar4 = 6" identifier = number_literal) ;) (expression_statement "pbVar5 = type;" (assignment_expression "pbVar5 = type" identifier = identifier) ;) (expression_statement "pbVar6 = (byte *)0x57243;" (assignment_expression "pbVar6 = (byte *)0x57243" identifier = (cast_expression "(byte *)0x57243" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar7 = *pbVar5 < *pbVar6;\n      bVar8 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n    } while (bVar8);" do (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar7 = *pbVar5 < *pbVar6;\n      bVar8 = *pbVar5 == *pbVar6;\n      pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;\n      pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;\n    }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar7 = *pbVar5 < *pbVar6;" (assignment_expression "bVar7 = *pbVar5 < *pbVar6" identifier = (binary_expression "*pbVar5 < *pbVar6" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "bVar8 = *pbVar5 == *pbVar6;" (assignment_expression "bVar8 = *pbVar5 == *pbVar6" identifier = (binary_expression "*pbVar5 == *pbVar6" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar6" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (uint)bVar9 * -2 + 1" identifier = (binary_expression "pbVar6 + (uint)bVar9 * -2 + 1" (binary_expression "pbVar6 + (uint)bVar9 * -2" identifier + (binary_expression "(uint)bVar9 * -2" (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar8)" ( identifier )) ;) (if_statement "if (((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))) {\n      pcVar3 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }\n      bVar2 = prepend_type(info,pcVar3);\n      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }\n    }" if (parenthesized_expression "(((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0))))" ( (binary_expression "((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)) &&\n       ((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))" (parenthesized_expression "((((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0))" ( (binary_expression "(((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)) &&\n        (bVar2 = push_type(info,(char *)type), bVar2 != 0)" (parenthesized_expression "(((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0))" ( (binary_expression "((!bVar7 && !bVar8) != bVar7) || (type = type + 6, type != (byte *)0x0)" (parenthesized_expression "((!bVar7 && !bVar8) != bVar7)" ( (binary_expression "(!bVar7 && !bVar8) != bVar7" (parenthesized_expression "(!bVar7 && !bVar8)" ( (binary_expression "!bVar7 && !bVar8" (unary_expression "!bVar7" ! identifier) && (unary_expression "!bVar8" ! identifier)) )) != identifier) )) || (parenthesized_expression "(type = type + 6, type != (byte *)0x0)" ( (comma_expression "type = type + 6, type != (byte *)0x0" (assignment_expression "type = type + 6" identifier = (binary_expression "type + 6" identifier + number_literal)) , (binary_expression "type != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(bVar2 = push_type(info,(char *)type), bVar2 != 0)" ( (comma_expression "bVar2 = push_type(info,(char *)type), bVar2 != 0" (assignment_expression "bVar2 = push_type(info,(char *)type)" identifier = (call_expression "push_type(info,(char *)type)" identifier (argument_list "(info,(char *)type)" ( identifier , (cast_expression "(char *)type" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) , (binary_expression "bVar2 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)))" ( (parenthesized_expression "(is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0))" ( (binary_expression "is_virtual == 0 || (bVar2 = prepend_type(info,"virtual "), bVar2 != 0)" (binary_expression "is_virtual == 0" identifier == number_literal) || (parenthesized_expression "(bVar2 = prepend_type(info,"virtual "), bVar2 != 0)" ( (comma_expression "bVar2 = prepend_type(info,"virtual "), bVar2 != 0" (assignment_expression "bVar2 = prepend_type(info,"virtual ")" identifier = (call_expression "prepend_type(info,"virtual ")" identifier (argument_list "(info,"virtual ")" ( identifier , (string_literal ""virtual "" " string_content ") )))) , (binary_expression "bVar2 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n      pcVar3 = "protected ";\n      if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }\n      bVar2 = prepend_type(info,pcVar3);\n      if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }\n    }" { (expression_statement "pcVar3 = "protected ";" (assignment_expression "pcVar3 = "protected "" identifier = (string_literal ""protected "" " string_content ")) ;) (if_statement "if ((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)) {\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }" if (parenthesized_expression "((visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC))" ( (binary_expression "(visibility != DEBUG_VISIBILITY_PROTECTED) &&\n         (pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)" (parenthesized_expression "(visibility != DEBUG_VISIBILITY_PROTECTED)" ( (binary_expression "visibility != DEBUG_VISIBILITY_PROTECTED" identifier != identifier) )) && (parenthesized_expression "(pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC)" ( (comma_expression "pcVar3 = "public ", visibility != DEBUG_VISIBILITY_PUBLIC" (assignment_expression "pcVar3 = "public "" identifier = (string_literal ""public "" " string_content ")) , (binary_expression "visibility != DEBUG_VISIBILITY_PUBLIC" identifier != identifier)) ))) )) (compound_statement "{\n        pcVar3 = "private ";\n        if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }\n      }" { (expression_statement "pcVar3 = "private ";" (assignment_expression "pcVar3 = "private "" identifier = (string_literal ""private "" " string_content ")) ;) (if_statement "if (visibility != DEBUG_VISIBILITY_PRIVATE) {\n          pcVar3 = "/* unknown visibility */ ";\n        }" if (parenthesized_expression "(visibility != DEBUG_VISIBILITY_PRIVATE)" ( (binary_expression "visibility != DEBUG_VISIBILITY_PRIVATE" identifier != identifier) )) (compound_statement "{\n          pcVar3 = "/* unknown visibility */ ";\n        }" { (expression_statement "pcVar3 = "/* unknown visibility */ ";" (assignment_expression "pcVar3 = "/* unknown visibility */ "" identifier = (string_literal ""/* unknown visibility */ "" " string_content ")) ;) })) })) (expression_statement "bVar2 = prepend_type(info,pcVar3);" (assignment_expression "bVar2 = prepend_type(info,pcVar3)" identifier = (call_expression "prepend_type(info,pcVar3)" identifier (argument_list "(info,pcVar3)" ( identifier , identifier )))) ;) (if_statement "if ((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)) {\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }" if (parenthesized_expression "((((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0))" ( (binary_expression "(((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))) &&\n         (bVar2 = append_parent(info,pcVar3), bVar2 != 0)" (parenthesized_expression "(((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0))))" ( (binary_expression "((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)) &&\n          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))" (parenthesized_expression "((bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0))" ( (binary_expression "(bVar2 != 0) && (pcVar3 = pop_type(info), pcVar3 != (char *)0x0)" (parenthesized_expression "(bVar2 != 0)" ( (binary_expression "bVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(pcVar3 = pop_type(info), pcVar3 != (char *)0x0)" ( (comma_expression "pcVar3 = pop_type(info), pcVar3 != (char *)0x0" (assignment_expression "pcVar3 = pop_type(info)" identifier = (call_expression "pop_type(info)" identifier (argument_list "(info)" ( identifier )))) , (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)))" ( (parenthesized_expression "(*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0))" ( (binary_expression "*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||\n           (bVar2 = append_parent(info,", "), bVar2 != 0)" (binary_expression "*(int *)(*(int *)((int)p + 8) + 0x18) == 0" (pointer_expression "*(int *)(*(int *)((int)p + 8) + 0x18)" * (cast_expression "(int *)(*(int *)((int)p + 8) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)p + 8) + 0x18)" ( (binary_expression "*(int *)((int)p + 8) + 0x18" (pointer_expression "*(int *)((int)p + 8)" * (cast_expression "(int *)((int)p + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) == number_literal) || (parenthesized_expression "(bVar2 = append_parent(info,", "), bVar2 != 0)" ( (comma_expression "bVar2 = append_parent(info,", "), bVar2 != 0" (assignment_expression "bVar2 = append_parent(info,", ")" identifier = (call_expression "append_parent(info,", ")" identifier (argument_list "(info,", ")" ( identifier , (string_literal "", "" " string_content ") )))) , (binary_expression "bVar2 != 0" identifier != number_literal)) ))) )) ))) )) && (parenthesized_expression "(bVar2 = append_parent(info,pcVar3), bVar2 != 0)" ( (comma_expression "bVar2 = append_parent(info,pcVar3), bVar2 != 0" (assignment_expression "bVar2 = append_parent(info,pcVar3)" identifier = (call_expression "append_parent(info,pcVar3)" identifier (argument_list "(info,pcVar3)" ( identifier , identifier )))) , (binary_expression "bVar2 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);\n        *piVar1 = *piVar1 + 1;\n        free(pcVar3);\n        return 1;\n      }" { (expression_statement "piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);" (assignment_expression "piVar1 = (int *)(*(int *)((int)p + 8) + 0x18)" identifier = (cast_expression "(int *)(*(int *)((int)p + 8) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)((int)p + 8) + 0x18)" ( (binary_expression "*(int *)((int)p + 8) + 0x18" (pointer_expression "*(int *)((int)p + 8)" * (cast_expression "(int *)((int)p + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)p + 8)" ( (binary_expression "(int)p + 8" (cast_expression "(int)p" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)\n\n{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)\n\n{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "byte *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "byte bVar8;" type_identifier identifier ;) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" identifier = number_literal) ;) (if_statement "if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" if (parenthesized_expression "((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0))" ( (binary_expression "(*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)" (parenthesized_expression "(*(int **)(param_1 + 8) == (int *)0x0)" ( (binary_expression "*(int **)(param_1 + 8) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(**(int **)(param_1 + 8) == 0)" ( (binary_expression "**(int **)(param_1 + 8) == 0" (pointer_expression "**(int **)(param_1 + 8)" * (pointer_expression "*(int **)(param_1 + 8)" * (cast_expression "(int **)(param_1 + 8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" { (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" identifier (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" ( (string_literal ""info->stack != NULL && info->stack->next != NULL"" " string_content ") , (string_literal ""../../binutils/prdbg.c"" " string_content ") , number_literal , (string_literal ""tg_class_baseclass"" " string_content ") ))) ;) })) (expression_statement "pbVar2 = (byte *)FUN_00036d90();" (assignment_expression "pbVar2 = (byte *)FUN_00036d90()" identifier = (cast_expression "(byte *)FUN_00036d90()" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) ;) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" identifier = false) ;) (expression_statement "bVar7 = pbVar2 == (byte *)0x0;" (assignment_expression "bVar7 = pbVar2 == (byte *)0x0" identifier = (binary_expression "pbVar2 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }" if (parenthesized_expression "(!bVar7)" ( (unary_expression "!bVar7" ! identifier) )) (compound_statement "{\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }" { (expression_statement "iVar3 = 6;" (assignment_expression "iVar3 = 6" identifier = number_literal) ;) (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" identifier = identifier) ;) (expression_statement "pbVar5 = (byte *)0x57243;" (assignment_expression "pbVar5 = (byte *)0x57243" identifier = (cast_expression "(byte *)0x57243" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);" do (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    }" { (if_statement "if (iVar3 == 0) break;" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" identifier = (binary_expression "iVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" identifier = (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" identifier = (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;" (assignment_expression "pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "pbVar4 + (uint)bVar8 * -2 + 1" (binary_expression "pbVar4 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1" identifier = (binary_expression "pbVar5 + (uint)bVar8 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar8 * -2" identifier + (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar7)" ( identifier )) ;) (if_statement "if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }" if (parenthesized_expression "(((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0))))" ( (binary_expression "((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))" (parenthesized_expression "((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0))))" ( (binary_expression "(((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))" (parenthesized_expression "(((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0))))" ( (binary_expression "((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))" (parenthesized_expression "((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0))" ( (binary_expression "(((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)" (parenthesized_expression "(((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa))" ( (binary_expression "((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)" (parenthesized_expression "((!bVar6 && !bVar7) != bVar6)" ( (binary_expression "(!bVar6 && !bVar7) != bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" ( (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" ! identifier) && (unary_expression "!bVar7" ! identifier)) )) != identifier) )) || (parenthesized_expression "(pbVar2 != (byte *)0xfffffffa)" ( (binary_expression "pbVar2 != (byte *)0xfffffffa" identifier != (cast_expression "(byte *)0xfffffffa" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar3 = FUN_00038f80(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00038f80(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038f80()" identifier = (call_expression "FUN_00038f80()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))" ( (parenthesized_expression "(param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0))" ( (binary_expression "param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)" (binary_expression "param_4 == 0" identifier == number_literal) || (parenthesized_expression "(iVar3 = FUN_000374e0(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_000374e0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) && (parenthesized_expression "((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))" ( (parenthesized_expression "(iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0))" ( (comma_expression "iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" (assignment_expression "iVar3 = FUN_000374e0()" identifier = (call_expression "FUN_000374e0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" (binary_expression "iVar3 != 0" identifier != number_literal) && (parenthesized_expression "(__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" ( (comma_expression "__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0" (assignment_expression "__ptr = (void *)FUN_00036d90()" identifier = (cast_expression "(void *)FUN_00036d90()" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00036d90()" identifier (argument_list "()" ( ))))) , (binary_expression "__ptr != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) )))) )) ))) )) && (parenthesized_expression "(((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))" ( (parenthesized_expression "((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0))" ( (binary_expression "(*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)" (parenthesized_expression "(*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0))" ( (binary_expression "*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)" (binary_expression "*(int *)(*(int *)(param_1 + 8) + 0x18) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 8) + 0x18)" * (cast_expression "(int *)(*(int *)(param_1 + 8) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 0x18)" ( (binary_expression "*(int *)(param_1 + 8) + 0x18" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) == number_literal) || (parenthesized_expression "(iVar3 = FUN_00038de0(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00038de0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038de0()" identifier = (call_expression "FUN_00038de0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(iVar3 = FUN_00038de0(), iVar3 != 0)" ( (comma_expression "iVar3 = FUN_00038de0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038de0()" identifier = (call_expression "FUN_00038de0()" identifier (argument_list "()" ( )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) (compound_statement "{\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }" { (expression_statement "piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);" (assignment_expression "piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18)" identifier = (cast_expression "(int *)(*(int *)(param_1 + 8) + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + 0x18)" ( (binary_expression "*(int *)(param_1 + 8) + 0x18" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" * identifier) + number_literal)) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 1;" return number_literal ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) || (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )))) )) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) })) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)\n\n{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_000399b0(int param_1,undefined4 param_2,undefined4 param_3,int param_4)" (identifier "FUN_000399b0") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,int param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  int *piVar1;\n  byte *pbVar2;\n  void *__ptr;\n  int iVar3;\n  byte *pbVar4;\n  byte *pbVar5;\n  bool bVar6;\n  bool bVar7;\n  byte bVar8;\n  \n  bVar8 = 0;\n  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }\n  pbVar2 = (byte *)FUN_00036d90();\n  bVar6 = false;\n  bVar7 = pbVar2 == (byte *)0x0;\n  if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "byte *pbVar2;" (type_identifier "byte") (pointer_declarator "*pbVar2" (* "*") (identifier "pbVar2")) (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "byte bVar8;" (type_identifier "byte") (identifier "bVar8") (; ";")) (expression_statement "bVar8 = 0;" (assignment_expression "bVar8 = 0" (identifier "bVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" (if "if") (parenthesized_expression "((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0))" (( "(") (binary_expression "(*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)" (parenthesized_expression "(*(int **)(param_1 + 8) == (int *)0x0)" (( "(") (binary_expression "*(int **)(param_1 + 8) == (int *)0x0" (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(**(int **)(param_1 + 8) == 0)" (( "(") (binary_expression "**(int **)(param_1 + 8) == 0" (pointer_expression "**(int **)(param_1 + 8)" (* "*") (pointer_expression "*(int **)(param_1 + 8)" (* "*") (cast_expression "(int **)(param_1 + 8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                    \n    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");\n  }" ({ "{") (expression_statement "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass");" (call_expression "__assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" (identifier "__assert_fail") (argument_list "("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,\n                  "tg_class_baseclass")" (( "(") (string_literal ""info->stack != NULL && info->stack->next != NULL"" (" """) (string_content "info->stack != NULL && info->stack->next != NULL") (" """)) (, ",") (string_literal ""../../binutils/prdbg.c"" (" """) (string_content "../../binutils/prdbg.c") (" """)) (, ",") (number_literal "0x8ba") (, ",") (string_literal ""tg_class_baseclass"" (" """) (string_content "tg_class_baseclass") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "pbVar2 = (byte *)FUN_00036d90();" (assignment_expression "pbVar2 = (byte *)FUN_00036d90()" (identifier "pbVar2") (= "=") (cast_expression "(byte *)FUN_00036d90()" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00036d90()" (identifier "FUN_00036d90") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "bVar6 = false;" (assignment_expression "bVar6 = false" (identifier "bVar6") (= "=") (false "false")) (; ";")) (expression_statement "bVar7 = pbVar2 == (byte *)0x0;" (assignment_expression "bVar7 = pbVar2 == (byte *)0x0" (identifier "bVar7") (= "=") (binary_expression "pbVar2 == (byte *)0x0" (identifier "pbVar2") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar7) {\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "(!bVar7)" (( "(") (unary_expression "!bVar7" (! "!") (identifier "bVar7")) () ")")) (compound_statement "{\n    iVar3 = 6;\n    pbVar4 = pbVar2;\n    pbVar5 = (byte *)0x57243;\n    do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);\n    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }\n  }" ({ "{") (expression_statement "iVar3 = 6;" (assignment_expression "iVar3 = 6" (identifier "iVar3") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar4 = pbVar2;" (assignment_expression "pbVar4 = pbVar2" (identifier "pbVar4") (= "=") (identifier "pbVar2")) (; ";")) (expression_statement "pbVar5 = (byte *)0x57243;" (assignment_expression "pbVar5 = (byte *)0x57243" (identifier "pbVar5") (= "=") (cast_expression "(byte *)0x57243" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x57243"))) (; ";")) (do_statement "do {\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    } while (bVar7);" (do "do") (compound_statement "{\n      if (iVar3 == 0) break;\n      iVar3 = iVar3 + -1;\n      bVar6 = *pbVar4 < *pbVar5;\n      bVar7 = *pbVar4 == *pbVar5;\n      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;\n      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar3 == 0) break;" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar3 = iVar3 + -1;" (assignment_expression "iVar3 = iVar3 + -1" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar6 = *pbVar4 < *pbVar5;" (assignment_expression "bVar6 = *pbVar4 < *pbVar5" (identifier "bVar6") (= "=") (binary_expression "*pbVar4 < *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar7 = *pbVar4 == *pbVar5;" (assignment_expression "bVar7 = *pbVar4 == *pbVar5" (identifier "bVar7") (= "=") (binary_expression "*pbVar4 == *pbVar5" (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;" (assignment_expression "pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + (uint)bVar8 * -2 + 1" (binary_expression "pbVar4 + (uint)bVar8 * -2" (identifier "pbVar4") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (uint)bVar8 * -2 + 1" (binary_expression "pbVar5 + (uint)bVar8 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(uint)bVar8 * -2" (cast_expression "(uint)bVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar8")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar7)" (( "(") (identifier "bVar7") () ")")) (; ";")) (if_statement "if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }" (if "if") (parenthesized_expression "(((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0))))" (( "(") (binary_expression "((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&\n       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))" (parenthesized_expression "((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0))))" (( "(") (binary_expression "(((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&\n        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))" (parenthesized_expression "(((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0))))" (( "(") (binary_expression "((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&\n         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))" (parenthesized_expression "((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0))" (( "(") (binary_expression "(((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&\n          (iVar3 = FUN_00038f80(), iVar3 != 0)" (parenthesized_expression "(((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa))" (( "(") (binary_expression "((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)" (parenthesized_expression "((!bVar6 && !bVar7) != bVar6)" (( "(") (binary_expression "(!bVar6 && !bVar7) != bVar6" (parenthesized_expression "(!bVar6 && !bVar7)" (( "(") (binary_expression "!bVar6 && !bVar7" (unary_expression "!bVar6" (! "!") (identifier "bVar6")) (&& "&&") (unary_expression "!bVar7" (! "!") (identifier "bVar7"))) () ")")) (!= "!=") (identifier "bVar6")) () ")")) (|| "||") (parenthesized_expression "(pbVar2 != (byte *)0xfffffffa)" (( "(") (binary_expression "pbVar2 != (byte *)0xfffffffa" (identifier "pbVar2") (!= "!=") (cast_expression "(byte *)0xfffffffa" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0xfffffffa"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = FUN_00038f80(), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_00038f80(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038f80()" (identifier "iVar3") (= "=") (call_expression "FUN_00038f80()" (identifier "FUN_00038f80") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))" (( "(") (parenthesized_expression "(param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0))" (( "(") (binary_expression "param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)" (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar3 = FUN_000374e0(), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_000374e0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_000374e0()" (identifier "iVar3") (= "=") (call_expression "FUN_000374e0()" (identifier "FUN_000374e0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))" (( "(") (parenthesized_expression "(iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0))" (( "(") (comma_expression "iVar3 = FUN_000374e0(), iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" (assignment_expression "iVar3 = FUN_000374e0()" (identifier "iVar3") (= "=") (call_expression "FUN_000374e0()" (identifier "FUN_000374e0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 != 0 &&\n         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)" (( "(") (comma_expression "__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0" (assignment_expression "__ptr = (void *)FUN_00036d90()" (identifier "__ptr") (= "=") (cast_expression "(void *)FUN_00036d90()" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00036d90()" (identifier "FUN_00036d90") (argument_list "()" (( "(") () ")"))))) (, ",") (binary_expression "__ptr != (void *)0x0" (identifier "__ptr") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)))" (( "(") (parenthesized_expression "((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0))" (( "(") (binary_expression "(*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&\n        (iVar3 = FUN_00038de0(), iVar3 != 0)" (parenthesized_expression "(*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0))" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)" (binary_expression "*(int *)(*(int *)(param_1 + 8) + 0x18) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 8) + 0x18)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 8) + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 0x18)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 0x18" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar3 = FUN_00038de0(), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_00038de0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038de0()" (identifier "iVar3") (= "=") (call_expression "FUN_00038de0()" (identifier "FUN_00038de0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar3 = FUN_00038de0(), iVar3 != 0)" (( "(") (comma_expression "iVar3 = FUN_00038de0(), iVar3 != 0" (assignment_expression "iVar3 = FUN_00038de0()" (identifier "iVar3") (= "=") (call_expression "FUN_00038de0()" (identifier "FUN_00038de0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);\n      *piVar1 = *piVar1 + 1;\n      free(__ptr);\n      return 1;\n    }" ({ "{") (expression_statement "piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);" (assignment_expression "piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18)" (identifier "piVar1") (= "=") (cast_expression "(int *)(*(int *)(param_1 + 8) + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + 0x18)" (( "(") (binary_expression "*(int *)(param_1 + 8) + 0x18" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*piVar1 = *piVar1 + 1;" (assignment_expression "*piVar1 = *piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (binary_expression "*piVar1 + 1" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

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

type_1
function_1(void *p,type_2 bitpos,type_1 var_10,type_3 var_12)

{
  type_4 *info;
  int *piVar1;
  type_5 *var_3;
  type_1 var_9;
  char *var_16;
  int var_4;
  type_5 *var_5;
  type_5 *var_6;
  bool var_7;
  bool bVar8;
  type_5 bVar9;
  
  bVar9 = 0;
  if ((*(int **)((int)p + 8) == (int *)0x0) || (**(int **)((int)p + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    var_1("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,
                  "tg_class_baseclass");
  }
  info = (type_4 *)((int)p + 8);
  var_3 = (type_5 *)var_2(info);
  var_7 = false;
  bVar8 = var_3 == (type_5 *)0x0;
  if (!bVar8) {
    var_4 = 6;
    var_5 = var_3;
    var_6 = (type_5 *)0x57243;
    do {
      if (var_4 == 0) break;
      var_4 = var_4 + -1;
      var_7 = *var_5 < *var_6;
      bVar8 = *var_5 == *var_6;
      var_5 = var_5 + (type_6)bVar9 * -2 + 1;
      var_6 = var_6 + (type_6)bVar9 * -2 + 1;
    } while (bVar8);
    if (((((!var_7 && !bVar8) != var_7) || (var_3 = var_3 + 6, var_3 != (type_5 *)0x0)) &&
        (var_9 = var_8(info,(char *)var_3), var_9 != 0)) &&
       ((var_10 == 0 || (var_9 = var_11(info,"virtual "), var_9 != 0)))) {
      var_16 = "protected ";
      if ((var_12 != var_13) &&
         (var_16 = "public ", var_12 != var_14)) {
        var_16 = "private ";
        if (var_12 != var_15) {
          var_16 = "/* unknown visibility */ ";
        }
      }
      var_9 = var_11(info,var_16);
      if ((((var_9 != 0) && (var_16 = var_2(info), var_16 != (char *)0x0)) &&
          ((*(int *)(*(int *)((int)p + 8) + 0x18) == 0 ||
           (var_9 = var_17(info,", "), var_9 != 0)))) &&
         (var_9 = var_17(info,var_16), var_9 != 0)) {
        piVar1 = (int *)(*(int *)((int)p + 8) + 0x18);
        *piVar1 = *piVar1 + 1;
        var_18(var_16);
        return 1;
      }
    }
  }
  return 0;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal))))))))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (number_literal)))))) (return_statement (number_literal)))))

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

undefined4 MASKED(int param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  int *piVar1;
  byte *pbVar2;
  void *__ptr;
  int iVar3;
  byte *pbVar4;
  byte *pbVar5;
  bool bVar6;
  bool bVar7;
  byte bVar8;
  
  bVar8 = 0;
  if ((*(int **)(param_1 + 8) == (int *)0x0) || (**(int **)(param_1 + 8) == 0)) {
                    /* WARNING: Subroutine does not return */
    __assert_fail("info->stack != NULL && info->stack->next != NULL","../../binutils/prdbg.c",0x8ba,
                  "tg_class_baseclass");
  }
  pbVar2 = (byte *)FUN_00036d90();
  bVar6 = false;
  bVar7 = pbVar2 == (byte *)0x0;
  if (!bVar7) {
    iVar3 = 6;
    pbVar4 = pbVar2;
    pbVar5 = (byte *)0x57243;
    do {
      if (iVar3 == 0) break;
      iVar3 = iVar3 + -1;
      bVar6 = *pbVar4 < *pbVar5;
      bVar7 = *pbVar4 == *pbVar5;
      pbVar4 = pbVar4 + (uint)bVar8 * -2 + 1;
      pbVar5 = pbVar5 + (uint)bVar8 * -2 + 1;
    } while (bVar7);
    if (((((((!bVar6 && !bVar7) != bVar6) || (pbVar2 != (byte *)0xfffffffa)) &&
          (iVar3 = FUN_00038f80(), iVar3 != 0)) &&
         ((param_4 == 0 || (iVar3 = FUN_000374e0(), iVar3 != 0)))) &&
        ((iVar3 = FUN_000374e0(), iVar3 != 0 &&
         (__ptr = (void *)FUN_00036d90(), __ptr != (void *)0x0)))) &&
       (((*(int *)(*(int *)(param_1 + 8) + 0x18) == 0 || (iVar3 = FUN_00038de0(), iVar3 != 0)) &&
        (iVar3 = FUN_00038de0(), iVar3 != 0)))) {
      piVar1 = (int *)(*(int *)(param_1 + 8) + 0x18);
      *piVar1 = *piVar1 + 1;
      free(__ptr);
      return 1;
    }
  }
  return 0;
}

