
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool is_input_address_mapped(Output_section * this, Relobj * object,
   uint shndx, off_t offset) */

bool __thiscall
gold::Output_section::is_input_address_mapped
          (Output_section *this,Relobj *object,uint shndx,off_t offset)

{
  section_offset_type output_offset;
  
}



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

bool FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)

{
  char cVar1;
  int *piVar2;
  uint *puVar3;
  int local_30;
  int local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x2cd969;
  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);
  if (piVar2 == (int *)0x0) {
    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);
    if (piVar2 == (int *)0x0) {
      local_30 = param_4;
      puVar3 = *(uint **)(param_1 + 0x6c);
      if (*(uint **)(param_1 + 0x70) != puVar3) {
        do {
          if (*puVar3 < 0xfffffffc) {
            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {
LAB_002cda45:
              return local_30 != -1;
            }
          }
          else {
            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))
                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);
            if (cVar1 != '\0') {
              local_30 = local_20[0];
              goto LAB_002cda45;
            }
          }
          puVar3 = puVar3 + 6;
        } while (*(uint **)(param_1 + 0x70) != puVar3);
      }
      return true;
    }
  }
  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);
  if (cVar1 != '\0') {
    return local_20[0] != -1;
  }
  return true;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00050b50
ADD EBX,0x31c697
SUB ESP,0x34
MOV EDI,dword ptr [ESP + 0x4c]
MOV ESI,dword ptr [ESP + 0x50]
MOV EBP,dword ptr [ESP + 0x54]
PUSH ESI
PUSH EDI
CALL 0x0028b9f0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x002cd9d0
SUB ESP,0xc
MOV EDX,dword ptr [EAX]
LEA ECX,[ESP + 0x28]
PUSH ECX
PUSH EBP
PUSH ESI
PUSH EDI
PUSH EAX
CALL dword ptr [EDX + 0x58]
MOV EDX,0x1
ADD ESP,0x20
TEST AL,AL
JNZ 0x002cd9b8
ADD ESP,0x2c
MOV EAX,EDX
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP dword ptr [ESP + 0x1c],-0x1
SETNZ DL
ADD ESP,0x2c
POP EBX
MOV EAX,EDX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
PUSH ESI
PUSH EDI
PUSH dword ptr [ESP + 0x4c]
CALL 0x002cd8b0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x002cd98c
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [ESP + 0xc],EBP
MOV EBX,dword ptr [EAX + 0x6c]
LEA EAX,[ESP + 0x1c]
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x40]
CMP dword ptr [EAX + 0x70],EBX
JZ 0x002cda60
MOV dword ptr [ESP + 0x8],EBP
MOV EBP,ESI
MOV ESI,dword ptr [ESP + 0x40]
JMP 0x002cda35
MOV EAX,dword ptr [EBX + 0x10]
SUB ESP,0xc
MOV ECX,dword ptr [EAX]
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x18]
PUSH EBP
PUSH EDI
PUSH EAX
CALL dword ptr [ECX + 0x58]
ADD ESP,0x20
TEST AL,AL
JNZ 0x002cda70
ADD EBX,0x18
CMP dword ptr [ESI + 0x70],EBX
JZ 0x002cda60
MOV EAX,dword ptr [EBX]
CMP EAX,-0x4
JNC 0x002cda10
CMP EBP,EAX
JNZ 0x002cda2d
CMP EDI,dword ptr [EBX + 0x10]
JNZ 0x002cda2d
CMP dword ptr [ESP + 0xc],-0x1
SETNZ DL
ADD ESP,0x2c
POP EBX
MOV EAX,EDX
POP ESI
POP EDI
POP EBP
RET
ADD ESP,0x2c
MOV EDX,0x1
POP EBX
MOV EAX,EDX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0xc],EAX
JMP 0x002cda45
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nbool FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)\n\n{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}\n\n" comment (function_definition "bool FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)\n\n{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}" primitive_type (function_declarator "FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)" identifier (parameter_list "(int param_1,uint param_2,uint param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x2cd969;" (assignment_expression "uStack_14 = 0x2cd969" identifier = number_literal) ;) (expression_statement "piVar2 = (int *)FUN_0028b9f0(param_2,param_3);" (assignment_expression "piVar2 = (int *)FUN_0028b9f0(param_2,param_3)" identifier = (cast_expression "(int *)FUN_0028b9f0(param_2,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0028b9f0(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }" { (expression_statement "piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);" (assignment_expression "piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3)" identifier = (cast_expression "(int *)FUN_002cd8b0(param_1,param_2,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002cd8b0(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }" { (expression_statement "local_30 = param_4;" (assignment_expression "local_30 = param_4" identifier = identifier) ;) (expression_statement "puVar3 = *(uint **)(param_1 + 0x6c);" (assignment_expression "puVar3 = *(uint **)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x6c)" * (cast_expression "(uint **)(param_1 + 0x6c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }" if (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar3)" ( (binary_expression "*(uint **)(param_1 + 0x70) != puVar3" (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }" { (do_statement "do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);" do (compound_statement "{\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        }" { (if_statement "if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" if (parenthesized_expression "(*puVar3 < 0xfffffffc)" ( (binary_expression "*puVar3 < 0xfffffffc" (pointer_expression "*puVar3" * identifier) < number_literal) )) (compound_statement "{\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }" { (if_statement "if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }" if (parenthesized_expression "((param_3 == *puVar3) && (param_2 == puVar3[4]))" ( (binary_expression "(param_3 == *puVar3) && (param_2 == puVar3[4])" (parenthesized_expression "(param_3 == *puVar3)" ( (binary_expression "param_3 == *puVar3" identifier == (pointer_expression "*puVar3" * identifier)) )) && (parenthesized_expression "(param_2 == puVar3[4])" ( (binary_expression "param_2 == puVar3[4]" identifier == (subscript_expression "puVar3[4]" identifier [ number_literal ])) ))) )) (compound_statement "{\nLAB_002cda45:\n              return local_30 != -1;\n            }" { (labeled_statement "LAB_002cda45:\n              return local_30 != -1;" statement_identifier : (return_statement "return local_30 != -1;" return (binary_expression "local_30 != -1" identifier != number_literal) ;)) })) }) (else_clause "else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" else (compound_statement "{\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" { (expression_statement "cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);" (assignment_expression "cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20)" identifier = (call_expression "(**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20)" (parenthesized_expression "(**(code **)(*(int *)puVar3[4] + 0x58))" ( (pointer_expression "**(code **)(*(int *)puVar3[4] + 0x58)" * (pointer_expression "*(code **)(*(int *)puVar3[4] + 0x58)" * (cast_expression "(code **)(*(int *)puVar3[4] + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)puVar3[4] + 0x58)" ( (binary_expression "*(int *)puVar3[4] + 0x58" (pointer_expression "*(int *)puVar3[4]" * (cast_expression "(int *)puVar3[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[4]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)puVar3[4],param_2,param_3,param_4,local_20)" ( (cast_expression "(int *)puVar3[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[4]" identifier [ number_literal ])) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }" { (expression_statement "local_30 = local_20[0];" (assignment_expression "local_30 = local_20[0]" identifier = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002cda45;" goto statement_identifier ;) })) }))) (expression_statement "puVar3 = puVar3 + 6;" (assignment_expression "puVar3 = puVar3 + 6" identifier = (binary_expression "puVar3 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar3)" ( (binary_expression "*(uint **)(param_1 + 0x70) != puVar3" (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return true;" return true ;) })) })) (expression_statement "cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);" (assignment_expression "cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20)" identifier = (call_expression "(**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20)" (parenthesized_expression "(**(code **)(*piVar2 + 0x58))" ( (pointer_expression "**(code **)(*piVar2 + 0x58)" * (pointer_expression "*(code **)(*piVar2 + 0x58)" * (cast_expression "(code **)(*piVar2 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x58)" ( (binary_expression "*piVar2 + 0x58" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_2,param_3,param_4,local_20)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return local_20[0] != -1;\n  }" { (return_statement "return local_20[0] != -1;" return (binary_expression "local_20[0] != -1" (subscript_expression "local_20[0]" identifier [ number_literal ]) != number_literal) ;) })) (return_statement "return true;" return true ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* DWARF original prototype: bool is_input_address_mapped(Output_section * this, Relobj * object,\n   uint shndx, off_t offset) */\n\nbool __thiscall\ngold::Output_section::is_input_address_mapped\n          (Output_section *this,Relobj *object,uint shndx,off_t offset)\n\n{\n  section_offset_type output_offset;\n  \n}\n\n" comment comment (function_definition "bool __thiscall\ngold::Output_section::is_input_address_mapped\n          (Output_section *this,Relobj *object,uint shndx,off_t offset)\n\n{\n  section_offset_type output_offset;\n  \n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Output_section::" identifier : : identifier : :) (function_declarator "is_input_address_mapped\n          (Output_section *this,Relobj *object,uint shndx,off_t offset)" identifier (parameter_list "(Output_section *this,Relobj *object,uint shndx,off_t offset)" ( (parameter_declaration "Output_section *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Relobj *object" type_identifier (pointer_declarator "*object" * identifier)) , (parameter_declaration "uint shndx" type_identifier identifier) , (parameter_declaration "off_t offset" type_identifier identifier) ))) (compound_statement "{\n  section_offset_type output_offset;\n  \n}" { (declaration "section_offset_type output_offset;" type_identifier identifier ;) })))
(translation_unit "bool FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)\n\n{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}\n\n" (function_definition "bool FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)\n\n{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}" primitive_type (function_declarator "FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)" identifier (parameter_list "(int param_1,uint param_2,uint param_3,int param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) ))) (compound_statement "{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_20 [3];" primitive_type (array_declarator "local_20 [3]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x2cd969;" (assignment_expression "uStack_14 = 0x2cd969" identifier = number_literal) ;) (expression_statement "piVar2 = (int *)FUN_0028b9f0(param_2,param_3);" (assignment_expression "piVar2 = (int *)FUN_0028b9f0(param_2,param_3)" identifier = (cast_expression "(int *)FUN_0028b9f0(param_2,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0028b9f0(param_2,param_3)" identifier (argument_list "(param_2,param_3)" ( identifier , identifier ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }" { (expression_statement "piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);" (assignment_expression "piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3)" identifier = (cast_expression "(int *)FUN_002cd8b0(param_1,param_2,param_3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002cd8b0(param_1,param_2,param_3)" identifier (argument_list "(param_1,param_2,param_3)" ( identifier , identifier , identifier ))))) ;) (if_statement "if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }" if (parenthesized_expression "(piVar2 == (int *)0x0)" ( (binary_expression "piVar2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }" { (expression_statement "local_30 = param_4;" (assignment_expression "local_30 = param_4" identifier = identifier) ;) (expression_statement "puVar3 = *(uint **)(param_1 + 0x6c);" (assignment_expression "puVar3 = *(uint **)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint **)(param_1 + 0x6c)" * (cast_expression "(uint **)(param_1 + 0x6c)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }" if (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar3)" ( (binary_expression "*(uint **)(param_1 + 0x70) != puVar3" (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }" { (do_statement "do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);" do (compound_statement "{\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        }" { (if_statement "if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" if (parenthesized_expression "(*puVar3 < 0xfffffffc)" ( (binary_expression "*puVar3 < 0xfffffffc" (pointer_expression "*puVar3" * identifier) < number_literal) )) (compound_statement "{\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }" { (if_statement "if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }" if (parenthesized_expression "((param_3 == *puVar3) && (param_2 == puVar3[4]))" ( (binary_expression "(param_3 == *puVar3) && (param_2 == puVar3[4])" (parenthesized_expression "(param_3 == *puVar3)" ( (binary_expression "param_3 == *puVar3" identifier == (pointer_expression "*puVar3" * identifier)) )) && (parenthesized_expression "(param_2 == puVar3[4])" ( (binary_expression "param_2 == puVar3[4]" identifier == (subscript_expression "puVar3[4]" identifier [ number_literal ])) ))) )) (compound_statement "{\nLAB_002cda45:\n              return local_30 != -1;\n            }" { (labeled_statement "LAB_002cda45:\n              return local_30 != -1;" statement_identifier : (return_statement "return local_30 != -1;" return (binary_expression "local_30 != -1" identifier != number_literal) ;)) })) }) (else_clause "else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" else (compound_statement "{\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" { (expression_statement "cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);" (assignment_expression "cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20)" identifier = (call_expression "(**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20)" (parenthesized_expression "(**(code **)(*(int *)puVar3[4] + 0x58))" ( (pointer_expression "**(code **)(*(int *)puVar3[4] + 0x58)" * (pointer_expression "*(code **)(*(int *)puVar3[4] + 0x58)" * (cast_expression "(code **)(*(int *)puVar3[4] + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)puVar3[4] + 0x58)" ( (binary_expression "*(int *)puVar3[4] + 0x58" (pointer_expression "*(int *)puVar3[4]" * (cast_expression "(int *)puVar3[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[4]" identifier [ number_literal ]))) + number_literal) ))))) )) (argument_list "((int *)puVar3[4],param_2,param_3,param_4,local_20)" ( (cast_expression "(int *)puVar3[4]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar3[4]" identifier [ number_literal ])) , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }" { (expression_statement "local_30 = local_20[0];" (assignment_expression "local_30 = local_20[0]" identifier = (subscript_expression "local_20[0]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_002cda45;" goto statement_identifier ;) })) }))) (expression_statement "puVar3 = puVar3 + 6;" (assignment_expression "puVar3 = puVar3 + 6" identifier = (binary_expression "puVar3 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar3)" ( (binary_expression "*(uint **)(param_1 + 0x70) != puVar3" (pointer_expression "*(uint **)(param_1 + 0x70)" * (cast_expression "(uint **)(param_1 + 0x70)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) )))) != identifier) )) ;) })) (return_statement "return true;" return true ;) })) })) (expression_statement "cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);" (assignment_expression "cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20)" identifier = (call_expression "(**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20)" (parenthesized_expression "(**(code **)(*piVar2 + 0x58))" ( (pointer_expression "**(code **)(*piVar2 + 0x58)" * (pointer_expression "*(code **)(*piVar2 + 0x58)" * (cast_expression "(code **)(*piVar2 + 0x58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*piVar2 + 0x58)" ( (binary_expression "*piVar2 + 0x58" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) )) (argument_list "(piVar2,param_2,param_3,param_4,local_20)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }" if (parenthesized_expression "(cVar1 != '\0')" ( (binary_expression "cVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return local_20[0] != -1;\n  }" { (return_statement "return local_20[0] != -1;" return (binary_expression "local_20[0] != -1" (subscript_expression "local_20[0]" identifier [ number_literal ]) != number_literal) ;) })) (return_statement "return true;" return true ;) })))
(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 IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) && (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (binary_expression IDENT != LIT) ;)) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (return_statement return BOOL ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ;) })) (return_statement return BOOL ;) })))
(function_definition "bool FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)\n\n{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}" (primitive_type "bool") (function_declarator "FUN_002cd960(int param_1,uint param_2,uint param_3,int param_4)" (identifier "FUN_002cd960") (parameter_list "(int param_1,uint param_2,uint param_3,int param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) () ")"))) (compound_statement "{\n  char cVar1;\n  int *piVar2;\n  uint *puVar3;\n  int local_30;\n  int local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x2cd969;\n  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);\n  if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }\n  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);\n  if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }\n  return true;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_20 [3];" (primitive_type "int") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x2cd969;" (assignment_expression "uStack_14 = 0x2cd969" (identifier "uStack_14") (= "=") (number_literal "0x2cd969")) (; ";")) (expression_statement "piVar2 = (int *)FUN_0028b9f0(param_2,param_3);" (assignment_expression "piVar2 = (int *)FUN_0028b9f0(param_2,param_3)" (identifier "piVar2") (= "=") (cast_expression "(int *)FUN_0028b9f0(param_2,param_3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0028b9f0(param_2,param_3)" (identifier "FUN_0028b9f0") (argument_list "(param_2,param_3)" (( "(") (identifier "param_2") (, ",") (identifier "param_3") () ")"))))) (; ";")) (if_statement "if (piVar2 == (int *)0x0) {\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);\n    if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }\n  }" ({ "{") (expression_statement "piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);" (assignment_expression "piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3)" (identifier "piVar2") (= "=") (cast_expression "(int *)FUN_002cd8b0(param_1,param_2,param_3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002cd8b0(param_1,param_2,param_3)" (identifier "FUN_002cd8b0") (argument_list "(param_1,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))))) (; ";")) (if_statement "if (piVar2 == (int *)0x0) {\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }" (if "if") (parenthesized_expression "(piVar2 == (int *)0x0)" (( "(") (binary_expression "piVar2 == (int *)0x0" (identifier "piVar2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      local_30 = param_4;\n      puVar3 = *(uint **)(param_1 + 0x6c);\n      if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }\n      return true;\n    }" ({ "{") (expression_statement "local_30 = param_4;" (assignment_expression "local_30 = param_4" (identifier "local_30") (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar3 = *(uint **)(param_1 + 0x6c);" (assignment_expression "puVar3 = *(uint **)(param_1 + 0x6c)" (identifier "puVar3") (= "=") (pointer_expression "*(uint **)(param_1 + 0x6c)" (* "*") (cast_expression "(uint **)(param_1 + 0x6c)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (if_statement "if (*(uint **)(param_1 + 0x70) != puVar3) {\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }" (if "if") (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar3)" (( "(") (binary_expression "*(uint **)(param_1 + 0x70) != puVar3" (pointer_expression "*(uint **)(param_1 + 0x70)" (* "*") (cast_expression "(uint **)(param_1 + 0x70)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (identifier "puVar3")) () ")")) (compound_statement "{\n        do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);\n      }" ({ "{") (do_statement "do {\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        } while (*(uint **)(param_1 + 0x70) != puVar3);" (do "do") (compound_statement "{\n          if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }\n          puVar3 = puVar3 + 6;\n        }" ({ "{") (if_statement "if (*puVar3 < 0xfffffffc) {\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }\n          else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" (if "if") (parenthesized_expression "(*puVar3 < 0xfffffffc)" (( "(") (binary_expression "*puVar3 < 0xfffffffc" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (< "<") (number_literal "0xfffffffc")) () ")")) (compound_statement "{\n            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }\n          }" ({ "{") (if_statement "if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {\nLAB_002cda45:\n              return local_30 != -1;\n            }" (if "if") (parenthesized_expression "((param_3 == *puVar3) && (param_2 == puVar3[4]))" (( "(") (binary_expression "(param_3 == *puVar3) && (param_2 == puVar3[4])" (parenthesized_expression "(param_3 == *puVar3)" (( "(") (binary_expression "param_3 == *puVar3" (identifier "param_3") (== "==") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) () ")")) (&& "&&") (parenthesized_expression "(param_2 == puVar3[4])" (( "(") (binary_expression "param_2 == puVar3[4]" (identifier "param_2") (== "==") (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]"))) () ")"))) () ")")) (compound_statement "{\nLAB_002cda45:\n              return local_30 != -1;\n            }" ({ "{") (labeled_statement "LAB_002cda45:\n              return local_30 != -1;" (statement_identifier "LAB_002cda45") (: ":") (return_statement "return local_30 != -1;" (return "return") (binary_expression "local_30 != -1" (identifier "local_30") (!= "!=") (number_literal "-1")) (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" (else "else") (compound_statement "{\n            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);\n            if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }\n          }" ({ "{") (expression_statement "cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);" (assignment_expression "cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20)" (identifier "cVar1") (= "=") (call_expression "(**(code **)(*(int *)puVar3[4] + 0x58))\n                              ((int *)puVar3[4],param_2,param_3,param_4,local_20)" (parenthesized_expression "(**(code **)(*(int *)puVar3[4] + 0x58))" (( "(") (pointer_expression "**(code **)(*(int *)puVar3[4] + 0x58)" (* "*") (pointer_expression "*(code **)(*(int *)puVar3[4] + 0x58)" (* "*") (cast_expression "(code **)(*(int *)puVar3[4] + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)puVar3[4] + 0x58)" (( "(") (binary_expression "*(int *)puVar3[4] + 0x58" (pointer_expression "*(int *)puVar3[4]" (* "*") (cast_expression "(int *)puVar3[4]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")))) (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "((int *)puVar3[4],param_2,param_3,param_4,local_20)" (( "(") (cast_expression "(int *)puVar3[4]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]"))) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "local_20") () ")")))) (; ";")) (if_statement "if (cVar1 != '\0') {\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              local_30 = local_20[0];\n              goto LAB_002cda45;\n            }" ({ "{") (expression_statement "local_30 = local_20[0];" (assignment_expression "local_30 = local_20[0]" (identifier "local_30") (= "=") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (; ";")) (goto_statement "goto LAB_002cda45;" (goto "goto") (statement_identifier "LAB_002cda45") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar3 = puVar3 + 6;" (assignment_expression "puVar3 = puVar3 + 6" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 6" (identifier "puVar3") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(uint **)(param_1 + 0x70) != puVar3)" (( "(") (binary_expression "*(uint **)(param_1 + 0x70) != puVar3" (pointer_expression "*(uint **)(param_1 + 0x70)" (* "*") (cast_expression "(uint **)(param_1 + 0x70)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")")))) (!= "!=") (identifier "puVar3")) () ")")) (; ";")) (} "}"))) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}"))) (} "}"))) (expression_statement "cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);" (assignment_expression "cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20)" (identifier "cVar1") (= "=") (call_expression "(**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20)" (parenthesized_expression "(**(code **)(*piVar2 + 0x58))" (( "(") (pointer_expression "**(code **)(*piVar2 + 0x58)" (* "*") (pointer_expression "*(code **)(*piVar2 + 0x58)" (* "*") (cast_expression "(code **)(*piVar2 + 0x58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*piVar2 + 0x58)" (( "(") (binary_expression "*piVar2 + 0x58" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x58")) () ")"))))) () ")")) (argument_list "(piVar2,param_2,param_3,param_4,local_20)" (( "(") (identifier "piVar2") (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "local_20") () ")")))) (; ";")) (if_statement "if (cVar1 != '\0') {\n    return local_20[0] != -1;\n  }" (if "if") (parenthesized_expression "(cVar1 != '\0')" (( "(") (binary_expression "cVar1 != '\0'" (identifier "cVar1") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return local_20[0] != -1;\n  }" ({ "{") (return_statement "return local_20[0] != -1;" (return "return") (binary_expression "local_20[0] != -1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (!= "!=") (number_literal "-1")) (; ";")) (} "}"))) (return_statement "return true;" (return "return") (true "true") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* DWARF original prototype: bool is_input_address_mapped(Output_section * this, Relobj * object,
   uint shndx, off_t offset) */

bool __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *object,type_3 shndx,type_4 offset)

{
  type_5 output_offset;
  
}


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

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

bool MASKED(int param_1,uint param_2,uint param_3,int param_4)

{
  char cVar1;
  int *piVar2;
  uint *puVar3;
  int local_30;
  int local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x2cd969;
  piVar2 = (int *)FUN_0028b9f0(param_2,param_3);
  if (piVar2 == (int *)0x0) {
    piVar2 = (int *)FUN_002cd8b0(param_1,param_2,param_3);
    if (piVar2 == (int *)0x0) {
      local_30 = param_4;
      puVar3 = *(uint **)(param_1 + 0x6c);
      if (*(uint **)(param_1 + 0x70) != puVar3) {
        do {
          if (*puVar3 < 0xfffffffc) {
            if ((param_3 == *puVar3) && (param_2 == puVar3[4])) {
LAB_002cda45:
              return local_30 != -1;
            }
          }
          else {
            cVar1 = (**(code **)(*(int *)puVar3[4] + 0x58))
                              ((int *)puVar3[4],param_2,param_3,param_4,local_20);
            if (cVar1 != '\0') {
              local_30 = local_20[0];
              goto LAB_002cda45;
            }
          }
          puVar3 = puVar3 + 6;
        } while (*(uint **)(param_1 + 0x70) != puVar3);
      }
      return true;
    }
  }
  cVar1 = (**(code **)(*piVar2 + 0x58))(piVar2,param_2,param_3,param_4,local_20);
  if (cVar1 != '\0') {
    return local_20[0] != -1;
  }
  return true;
}

