
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void add_eh_frame_for_plt(Layout * this, Output_data * plt, uchar *
   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */

void __thiscall
gold::Layout::add_eh_frame_for_plt
          (Layout *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,
          size_t fde_length)

{
  bool bVar1;
  Output_section *this_00;
  
  bVar1 = Parameters::incremental(parameters);
  if (!bVar1) {
    this_00 = make_eh_frame_section(this,(Relobj *)0x0);
    if (this_00 != (Output_section *)0x0) {
      Eh_frame::add_ehframe_for_plt
                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);
      if (this->added_eh_frame_data_ == false) {
        Output_section::add_output_section_data
                  (this_00,&this->eh_frame_data_->super_Output_section_data);
        this->added_eh_frame_data_ = true;
        return;
      }
    }
  }
  return;
}



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

void FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_000ee5d0(DAT_00302378);
  if (cVar1 == '\0') {
    iVar2 = FUN_00084b70(param_1,0);
    if (iVar2 != 0) {
      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);
      if (*(char *)(param_1 + 0x198) == '\0') {
        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));
        *(undefined1 *)(param_1 + 0x198) = 1;
        return;
      }
    }
  }
  return;
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV ESI,dword ptr [ESP + 0x10]
CALL 0x00032730
ADD EBX,0x27d2b4
SUB ESP,0xc
LEA EAX,[EBX + 0x378]
PUSH dword ptr [EAX]
CALL 0x000ee5d0
ADD ESP,0x10
TEST AL,AL
JZ 0x00084d70
POP EBX
POP ESI
POP EDI
RET
SUB ESP,0x8
PUSH 0x0
PUSH ESI
CALL 0x00084b70
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x00084d69
SUB ESP,0x8
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESI + 0x194]
CALL 0x0014e2a0
ADD ESP,0x20
CMP byte ptr [ESI + 0x198],0x0
JNZ 0x00084d69
SUB ESP,0x8
PUSH dword ptr [ESI + 0x194]
PUSH EDI
CALL 0x000bf250
ADD ESP,0x10
MOV byte ptr [ESI + 0x198],0x1
POP EBX
POP ESI
POP EDI
RET
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)" ( (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 "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "cVar1 = FUN_000ee5d0(DAT_00302378);" (assignment_expression "cVar1 = FUN_000ee5d0(DAT_00302378)" identifier = (call_expression "FUN_000ee5d0(DAT_00302378)" identifier (argument_list "(DAT_00302378)" ( identifier )))) ;) (if_statement "if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }" { (expression_statement "iVar2 = FUN_00084b70(param_1,0);" (assignment_expression "iVar2 = FUN_00084b70(param_1,0)" identifier = (call_expression "FUN_00084b70(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }" { (expression_statement "FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);" (call_expression "FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x194)" * (cast_expression "(undefined4 *)(param_1 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x194)" ( (binary_expression "param_1 + 0x194" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x198) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x198) == '\0'" (pointer_expression "*(char *)(param_1 + 0x198)" * (cast_expression "(char *)(param_1 + 0x198)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x198)" ( (binary_expression "param_1 + 0x198" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }" { (expression_statement "FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));" (call_expression "FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194))" identifier (argument_list "(iVar2,*(undefined4 *)(param_1 + 0x194))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x194)" * (cast_expression "(undefined4 *)(param_1 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x194)" ( (binary_expression "param_1 + 0x194" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x198) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x198) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x198)" * (cast_expression "(undefined1 *)(param_1 + 0x198)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x198)" ( (binary_expression "param_1 + 0x198" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void add_eh_frame_for_plt(Layout * this, Output_data * plt, uchar *\n   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */\n\nvoid __thiscall\ngold::Layout::add_eh_frame_for_plt\n          (Layout *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)\n\n{\n  bool bVar1;\n  Output_section *this_00;\n  \n  bVar1 = Parameters::incremental(parameters);\n  if (!bVar1) {\n    this_00 = make_eh_frame_section(this,(Relobj *)0x0);\n    if (this_00 != (Output_section *)0x0) {\n      Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);\n      if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }\n    }\n  }\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall\ngold::Layout::add_eh_frame_for_plt\n          (Layout *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)\n\n{\n  bool bVar1;\n  Output_section *this_00;\n  \n  bVar1 = Parameters::incremental(parameters);\n  if (!bVar1) {\n    this_00 = make_eh_frame_section(this,(Relobj *)0x0);\n    if (this_00 != (Output_section *)0x0) {\n      Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);\n      if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "add_eh_frame_for_plt\n          (Layout *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)" identifier (parameter_list "(Layout *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_data *plt" type_identifier (pointer_declarator "*plt" * identifier)) , (parameter_declaration "uchar *cie_data" type_identifier (pointer_declarator "*cie_data" * identifier)) , (parameter_declaration "size_t cie_length" primitive_type identifier) , (parameter_declaration "uchar *fde_data" type_identifier (pointer_declarator "*fde_data" * identifier)) , (parameter_declaration "size_t fde_length" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  Output_section *this_00;\n  \n  bVar1 = Parameters::incremental(parameters);\n  if (!bVar1) {\n    this_00 = make_eh_frame_section(this,(Relobj *)0x0);\n    if (this_00 != (Output_section *)0x0) {\n      Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);\n      if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }\n    }\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "Output_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (ERROR "bVar1 = Parameters::" (assignment_expression "bVar1 = Parameters" identifier = identifier) : :) (expression_statement "incremental(parameters);" (call_expression "incremental(parameters)" identifier (argument_list "(parameters)" ( identifier ))) ;) (if_statement "if (!bVar1) {\n    this_00 = make_eh_frame_section(this,(Relobj *)0x0);\n    if (this_00 != (Output_section *)0x0) {\n      Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);\n      if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    this_00 = make_eh_frame_section(this,(Relobj *)0x0);\n    if (this_00 != (Output_section *)0x0) {\n      Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);\n      if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }\n    }\n  }" { (expression_statement "this_00 = make_eh_frame_section(this,(Relobj *)0x0);" (assignment_expression "this_00 = make_eh_frame_section(this,(Relobj *)0x0)" identifier = (call_expression "make_eh_frame_section(this,(Relobj *)0x0)" identifier (argument_list "(this,(Relobj *)0x0)" ( identifier , (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if (this_00 != (Output_section *)0x0) {\n      Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);\n      if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }\n    }" if (parenthesized_expression "(this_00 != (Output_section *)0x0)" ( (binary_expression "this_00 != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);\n      if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }\n    }" { (labeled_statement "Eh_frame::add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);" statement_identifier : (ERROR ":" :) (expression_statement "add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);" (call_expression "add_ehframe_for_plt\n                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length)" identifier (argument_list "(this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length)" ( (field_expression "this->eh_frame_data_" identifier -> field_identifier) , identifier , identifier , identifier , identifier , identifier ))) ;)) (if_statement "if (this->added_eh_frame_data_ == false) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }" if (parenthesized_expression "(this->added_eh_frame_data_ == false)" ( (binary_expression "this->added_eh_frame_data_ == false" (field_expression "this->added_eh_frame_data_" identifier -> field_identifier) == false) )) (compound_statement "{\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n        return;\n      }" { (labeled_statement "Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);" (call_expression "add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data)" identifier (argument_list "(this_00,&this->eh_frame_data_->super_Output_section_data)" ( identifier , (pointer_expression "&this->eh_frame_data_->super_Output_section_data" & (field_expression "this->eh_frame_data_->super_Output_section_data" (field_expression "this->eh_frame_data_" identifier -> field_identifier) -> field_identifier)) ))) ;)) (expression_statement "this->added_eh_frame_data_ = true;" (assignment_expression "this->added_eh_frame_data_ = true" (field_expression "this->added_eh_frame_data_" identifier -> field_identifier) = true) ;) (return_statement "return;" return ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)" identifier (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)" ( (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 "undefined4 param_4" type_identifier identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) ))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (expression_statement "cVar1 = FUN_000ee5d0(DAT_00302378);" (assignment_expression "cVar1 = FUN_000ee5d0(DAT_00302378)" identifier = (call_expression "FUN_000ee5d0(DAT_00302378)" identifier (argument_list "(DAT_00302378)" ( identifier )))) ;) (if_statement "if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }" { (expression_statement "iVar2 = FUN_00084b70(param_1,0);" (assignment_expression "iVar2 = FUN_00084b70(param_1,0)" identifier = (call_expression "FUN_00084b70(param_1,0)" identifier (argument_list "(param_1,0)" ( identifier , number_literal )))) ;) (if_statement "if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }" { (expression_statement "FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);" (call_expression "FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x194)" * (cast_expression "(undefined4 *)(param_1 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x194)" ( (binary_expression "param_1 + 0x194" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }" if (parenthesized_expression "(*(char *)(param_1 + 0x198) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x198) == '\0'" (pointer_expression "*(char *)(param_1 + 0x198)" * (cast_expression "(char *)(param_1 + 0x198)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x198)" ( (binary_expression "param_1 + 0x198" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }" { (expression_statement "FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));" (call_expression "FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194))" identifier (argument_list "(iVar2,*(undefined4 *)(param_1 + 0x194))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 0x194)" * (cast_expression "(undefined4 *)(param_1 + 0x194)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x194)" ( (binary_expression "param_1 + 0x194" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x198) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x198) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x198)" * (cast_expression "(undefined1 *)(param_1 + 0x198)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x198)" ( (binary_expression "param_1 + 0x198" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) })) })) (return_statement "return;" return ;) })))
(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) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })) })) })) (return_statement return ;) })))
(function_definition "void FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)\n\n{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00084d40(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)" (identifier "FUN_00084d40") (parameter_list "(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n                 undefined4 param_5,undefined4 param_6)" (( "(") (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 "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) () ")"))) (compound_statement "{\n  char cVar1;\n  int iVar2;\n  \n  cVar1 = FUN_000ee5d0(DAT_00302378);\n  if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (expression_statement "cVar1 = FUN_000ee5d0(DAT_00302378);" (assignment_expression "cVar1 = FUN_000ee5d0(DAT_00302378)" (identifier "cVar1") (= "=") (call_expression "FUN_000ee5d0(DAT_00302378)" (identifier "FUN_000ee5d0") (argument_list "(DAT_00302378)" (( "(") (identifier "DAT_00302378") () ")")))) (; ";")) (if_statement "if (cVar1 == '\0') {\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar2 = FUN_00084b70(param_1,0);\n    if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }\n  }" ({ "{") (expression_statement "iVar2 = FUN_00084b70(param_1,0);" (assignment_expression "iVar2 = FUN_00084b70(param_1,0)" (identifier "iVar2") (= "=") (call_expression "FUN_00084b70(param_1,0)" (identifier "FUN_00084b70") (argument_list "(param_1,0)" (( "(") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar2 != 0) {\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);\n      if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }\n    }" ({ "{") (expression_statement "FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);" (call_expression "FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6)" (identifier "FUN_0014e2a0") (argument_list "(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x194)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x194)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x194)" (( "(") (binary_expression "param_1 + 0x194" (identifier "param_1") (+ "+") (number_literal "0x194")) () ")")))) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") () ")"))) (; ";")) (if_statement "if (*(char *)(param_1 + 0x198) == '\0') {\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x198) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x198) == '\0'" (pointer_expression "*(char *)(param_1 + 0x198)" (* "*") (cast_expression "(char *)(param_1 + 0x198)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x198)" (( "(") (binary_expression "param_1 + 0x198" (identifier "param_1") (+ "+") (number_literal "0x198")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));\n        *(undefined1 *)(param_1 + 0x198) = 1;\n        return;\n      }" ({ "{") (expression_statement "FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));" (call_expression "FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194))" (identifier "FUN_000bf250") (argument_list "(iVar2,*(undefined4 *)(param_1 + 0x194))" (( "(") (identifier "iVar2") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x194)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x194)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x194)" (( "(") (binary_expression "param_1 + 0x194" (identifier "param_1") (+ "+") (number_literal "0x194")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x198) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x198) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x198)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x198)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x198)" (( "(") (binary_expression "param_1 + 0x198" (identifier "param_1") (+ "+") (number_literal "0x198")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void add_eh_frame_for_plt(Layout * this, Output_data * plt, uchar *
   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *plt,type_3 *cie_data,size_t cie_length,type_3 *fde_data,
          size_t fde_length)

{
  bool bVar1;
  type_4 *var_3;
  
  bVar1 = Parameters::var_1(parameters);
  if (!bVar1) {
    var_3 = var_2(this,(type_5 *)0x0);
    if (var_3 != (type_4 *)0x0) {
      Eh_frame::var_4
                (this->eh_frame_data_,plt,cie_data,cie_length,fde_data,fde_length);
      if (this->added_eh_frame_data_ == false) {
        Output_section::var_5
                  (var_3,&this->eh_frame_data_->super_Output_section_data);
        this->added_eh_frame_data_ = true;
        return;
      }
    }
  }
  return;
}


(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: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier) (identifier) (identifier) (identifier) (identifier)))) (if_statement condition: (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: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement))))))) (return_statement))))

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

void MASKED(int param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
                 undefined4 param_5,undefined4 param_6)

{
  char cVar1;
  int iVar2;
  
  cVar1 = FUN_000ee5d0(DAT_00302378);
  if (cVar1 == '\0') {
    iVar2 = FUN_00084b70(param_1,0);
    if (iVar2 != 0) {
      FUN_0014e2a0(*(undefined4 *)(param_1 + 0x194),param_2,param_3,param_4,param_5,param_6);
      if (*(char *)(param_1 + 0x198) == '\0') {
        FUN_000bf250(iVar2,*(undefined4 *)(param_1 + 0x194));
        *(undefined1 *)(param_1 + 0x198) = 1;
        return;
      }
    }
  }
  return;
}

