
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void Cie(Cie * this, Cie * cie) */

void __thiscall gold::Cie::Cie(Cie *this,Cie *cie)

{
  uchar uVar1;
  pointer pcVar2;
  
  this->object_ = cie->object_;
  this->shndx_ = cie->shndx_;
  this->input_offset_ = cie->input_offset_;
  uVar1 = cie->fde_encoding_;
  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;
  this->fde_encoding_ = uVar1;
  pcVar2 = (cie->personality_name_)._M_dataplus._M_p;
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char*>(&this->personality_name_,pcVar2,
                      pcVar2 + (cie->personality_name_)._M_string_length,0);
  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =
       (pointer)0x0;
  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =
       (pointer)0x0;
  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.
  _M_end_of_storage = (pointer)0x0;
  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;
  pcVar2 = (cie->contents_)._M_dataplus._M_p;
                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char*>(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0);
  if ((cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==
      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {
    return;
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */
  do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)

{
  undefined1 uVar1;
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  param_1[2] = param_2[2];
  uVar1 = *(undefined1 *)(param_2 + 3);
  param_1[4] = param_1 + 6;
  *(undefined1 *)(param_1 + 3) = uVar1;
  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = param_1 + 0xf;
                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */
  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);
  if (param_2[0xb] == param_2[10]) {
    return;
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */
  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);
}


CALL 0x00058c42
ADD EAX,0x1bf18b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV EBX,dword ptr [EBP + 0xc]
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x1c],EAX
MOV EAX,dword ptr [EBX]
LEA EDI,[ESI + 0x18]
LEA EDX,[ESI + 0x10]
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [EBX + 0x4]
MOV dword ptr [ESI + 0x4],EAX
MOV EAX,dword ptr [EBX + 0x8]
MOV dword ptr [ESI + 0x8],EAX
MOVZX EAX,byte ptr [EBX + 0xc]
MOV dword ptr [ESI + 0x10],EDI
MOV byte ptr [ESI + 0xc],AL
MOV EAX,dword ptr [EBX + 0x10]
PUSH 0x0
MOV ECX,dword ptr [EBX + 0x14]
ADD ECX,EAX
PUSH ECX
PUSH EAX
PUSH EDX
CALL 0x0007c4c0
ADD ESP,0x10
LEA EAX,[ESI + 0x3c]
LEA EDX,[ESI + 0x34]
MOV dword ptr [ESI + 0x28],0x0
MOV dword ptr [ESI + 0x2c],0x0
MOV dword ptr [ESI + 0x30],0x0
MOV dword ptr [ESI + 0x34],EAX
MOV dword ptr [EBP + -0x20],EAX
MOV EAX,dword ptr [EBX + 0x34]
PUSH 0x0
MOV ECX,dword ptr [EBX + 0x38]
ADD ECX,EAX
PUSH ECX
PUSH EAX
PUSH EDX
CALL 0x0007c4c0
ADD ESP,0x10
MOV EAX,dword ptr [EBX + 0x28]
CMP dword ptr [EBX + 0x2c],EAX
JNZ 0x0017ff07
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EBX,dword ptr [EBP + -0x1c]
PUSH EAX
LEA EAX,[EBX + 0xfff28c74]
PUSH EAX
LEA EAX,[EBX + 0xfff28d5c]
PUSH 0x128
PUSH EAX
CALL 0x0008b620
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */\n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */\n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}\n\n" comment (function_definition "void FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */\n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */\n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}" primitive_type (function_declarator "FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */\n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */\n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_1[1] = param_2[1];" (assignment_expression "param_1[1] = param_2[1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = param_2[2];" (assignment_expression "param_1[2] = param_2[2]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = *(undefined1 *)(param_2 + 3);" (assignment_expression "uVar1 = *(undefined1 *)(param_2 + 3)" identifier = (pointer_expression "*(undefined1 *)(param_2 + 3)" * (cast_expression "(undefined1 *)(param_2 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))) ;) (expression_statement "param_1[4] = param_1 + 6;" (assignment_expression "param_1[4] = param_1 + 6" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 3) = uVar1;" (assignment_expression "*(undefined1 *)(param_1 + 3) = uVar1" (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);" (call_expression "FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0)" identifier (argument_list "(param_1 + 4,param_2[4],param_2[5] + param_2[4],0)" ( (binary_expression "param_1 + 4" identifier + number_literal) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (binary_expression "param_2[5] + param_2[4]" (subscript_expression "param_2[5]" identifier [ number_literal ]) + (subscript_expression "param_2[4]" identifier [ number_literal ])) , number_literal ))) ;) (expression_statement "param_1[10] = 0;" (assignment_expression "param_1[10] = 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xd] = param_1 + 0xf;" (assignment_expression "param_1[0xd] = param_1 + 0xf" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xf" identifier + number_literal)) ;) comment (expression_statement "FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);" (call_expression "FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0)" identifier (argument_list "(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) , (subscript_expression "param_2[0xd]" identifier [ number_literal ]) , (binary_expression "param_2[0xe] + param_2[0xd]" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) + (subscript_expression "param_2[0xd]" identifier [ number_literal ])) , number_literal ))) ;) (if_statement "if (param_2[0xb] == param_2[10]) {\n    return;\n  }" if (parenthesized_expression "(param_2[0xb] == param_2[10])" ( (binary_expression "param_2[0xb] == param_2[10]" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) == (subscript_expression "param_2[10]" identifier [ number_literal ])) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment comment (expression_statement "FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);" (call_expression "FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10])" identifier (argument_list "("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10])" ( (string_literal ""../../gold/ehframe.h"" " string_content ") , number_literal , (pointer_expression "&DAT_00267c74" & identifier) , (subscript_expression "param_2[10]" identifier [ number_literal ]) ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* DWARF original prototype: void Cie(Cie * this, Cie * cie) */\n\nvoid __thiscall gold::Cie::Cie(Cie *this,Cie *cie)\n\n{\n  uchar uVar1;\n  pointer pcVar2;\n  \n  this->object_ = cie->object_;\n  this->shndx_ = cie->shndx_;\n  this->input_offset_ = cie->input_offset_;\n  uVar1 = cie->fde_encoding_;\n  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;\n  this->fde_encoding_ = uVar1;\n  pcVar2 = (cie->personality_name_)._M_dataplus._M_p;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0);\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0;\n  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;\n  pcVar2 = (cie->contents_)._M_dataplus._M_p;\n                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0);\n  if ((cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */\n  do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");\n}\n\n" comment comment (function_definition "void __thiscall gold::Cie::Cie(Cie *this,Cie *cie)\n\n{\n  uchar uVar1;\n  pointer pcVar2;\n  \n  this->object_ = cie->object_;\n  this->shndx_ = cie->shndx_;\n  this->input_offset_ = cie->input_offset_;\n  uVar1 = cie->fde_encoding_;\n  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;\n  this->fde_encoding_ = uVar1;\n  pcVar2 = (cie->personality_name_)._M_dataplus._M_p;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0);\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0;\n  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;\n  pcVar2 = (cie->contents_)._M_dataplus._M_p;\n                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0);\n  if ((cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */\n  do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Cie::" identifier : : identifier : :) (function_declarator "Cie(Cie *this,Cie *cie)" identifier (parameter_list "(Cie *this,Cie *cie)" ( (parameter_declaration "Cie *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Cie *cie" type_identifier (pointer_declarator "*cie" * identifier)) ))) (compound_statement "{\n  uchar uVar1;\n  pointer pcVar2;\n  \n  this->object_ = cie->object_;\n  this->shndx_ = cie->shndx_;\n  this->input_offset_ = cie->input_offset_;\n  uVar1 = cie->fde_encoding_;\n  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;\n  this->fde_encoding_ = uVar1;\n  pcVar2 = (cie->personality_name_)._M_dataplus._M_p;\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0);\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  (this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0;\n  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;\n  pcVar2 = (cie->contents_)._M_dataplus._M_p;\n                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0);\n  if ((cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */\n  do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");\n}" { (declaration "uchar uVar1;" type_identifier identifier ;) (declaration "pointer pcVar2;" type_identifier identifier ;) (expression_statement "this->object_ = cie->object_;" (assignment_expression "this->object_ = cie->object_" (field_expression "this->object_" identifier -> field_identifier) = (field_expression "cie->object_" identifier -> field_identifier)) ;) (expression_statement "this->shndx_ = cie->shndx_;" (assignment_expression "this->shndx_ = cie->shndx_" (field_expression "this->shndx_" identifier -> field_identifier) = (field_expression "cie->shndx_" identifier -> field_identifier)) ;) (expression_statement "this->input_offset_ = cie->input_offset_;" (assignment_expression "this->input_offset_ = cie->input_offset_" (field_expression "this->input_offset_" identifier -> field_identifier) = (field_expression "cie->input_offset_" identifier -> field_identifier)) ;) (expression_statement "uVar1 = cie->fde_encoding_;" (assignment_expression "uVar1 = cie->fde_encoding_" identifier = (field_expression "cie->fde_encoding_" identifier -> field_identifier)) ;) (expression_statement "(this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;" (assignment_expression "(this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2" (field_expression "(this->personality_name_)._M_dataplus._M_p" (field_expression "(this->personality_name_)._M_dataplus" (parenthesized_expression "(this->personality_name_)" ( (field_expression "this->personality_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(this->personality_name_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(this->personality_name_).field_2" (parenthesized_expression "(this->personality_name_)" ( (field_expression "this->personality_name_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "this->fde_encoding_ = uVar1;" (assignment_expression "this->fde_encoding_ = uVar1" (field_expression "this->fde_encoding_" identifier -> field_identifier) = identifier) ;) (expression_statement "pcVar2 = (cie->personality_name_)._M_dataplus._M_p;" (assignment_expression "pcVar2 = (cie->personality_name_)._M_dataplus._M_p" identifier = (field_expression "(cie->personality_name_)._M_dataplus._M_p" (field_expression "(cie->personality_name_)._M_dataplus" (parenthesized_expression "(cie->personality_name_)" ( (field_expression "cie->personality_name_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0);" (binary_expression "_M_construct<char*>(&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0)" ( (comma_expression "&this->personality_name_,pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0" (pointer_expression "&this->personality_name_" & (field_expression "this->personality_name_" identifier -> field_identifier)) , (comma_expression "pcVar2,\n                      pcVar2 + (cie->personality_name_)._M_string_length,0" identifier , (comma_expression "pcVar2 + (cie->personality_name_)._M_string_length,0" (binary_expression "pcVar2 + (cie->personality_name_)._M_string_length" identifier + (field_expression "(cie->personality_name_)._M_string_length" (parenthesized_expression "(cie->personality_name_)" ( (field_expression "cie->personality_name_" identifier -> field_identifier) )) . field_identifier)) , number_literal))) ))) ;)) (expression_statement "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;" (assignment_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0" (field_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start" (field_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(this->fdes_).super__Vector_base<gold" (field_expression "(this->fdes_).super__Vector_base" (parenthesized_expression "(this->fdes_)" ( (field_expression "this->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;" (assignment_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0" (field_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish" (field_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(this->fdes_).super__Vector_base<gold" (field_expression "(this->fdes_).super__Vector_base" (parenthesized_expression "(this->fdes_)" ( (field_expression "this->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0;" (assignment_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0" (field_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl.\n  _M_end_of_storage" (field_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(this->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(this->fdes_).super__Vector_base<gold" (field_expression "(this->fdes_).super__Vector_base" (parenthesized_expression "(this->fdes_)" ( (field_expression "this->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "(this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;" (assignment_expression "(this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2" (field_expression "(this->contents_)._M_dataplus._M_p" (field_expression "(this->contents_)._M_dataplus" (parenthesized_expression "(this->contents_)" ( (field_expression "this->contents_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(this->contents_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(this->contents_).field_2" (parenthesized_expression "(this->contents_)" ( (field_expression "this->contents_" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pcVar2 = (cie->contents_)._M_dataplus._M_p;" (assignment_expression "pcVar2 = (cie->contents_)._M_dataplus._M_p" identifier = (field_expression "(cie->contents_)._M_dataplus._M_p" (field_expression "(cie->contents_)._M_dataplus" (parenthesized_expression "(cie->contents_)" ( (field_expression "cie->contents_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0);" (binary_expression "_M_construct<char*>(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0)" ( (comma_expression "&this->contents_,pcVar2,pcVar2 + (cie->contents_)._M_string_length,0" (pointer_expression "&this->contents_" & (field_expression "this->contents_" identifier -> field_identifier)) , (comma_expression "pcVar2,pcVar2 + (cie->contents_)._M_string_length,0" identifier , (comma_expression "pcVar2 + (cie->contents_)._M_string_length,0" (binary_expression "pcVar2 + (cie->contents_)._M_string_length" identifier + (field_expression "(cie->contents_)._M_string_length" (parenthesized_expression "(cie->contents_)" ( (field_expression "cie->contents_" identifier -> field_identifier) )) . field_identifier)) , number_literal))) ))) ;)) (if_statement "if ((cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start) {\n    return;\n  }" if (parenthesized_expression "((cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start)" ( (field_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start" (field_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish ==\n      (cie->fdes_).super__Vector_base<gold" (field_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish" (field_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl" (binary_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_" (binary_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std::allocator<gold" (binary_expression "(cie->fdes_).super__Vector_base<gold::Fde*,_std" (binary_expression "(cie->fdes_).super__Vector_base<gold" (field_expression "(cie->fdes_).super__Vector_base" (parenthesized_expression "(cie->fdes_)" ( (field_expression "cie->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) == (binary_expression "(cie->fdes_).super__Vector_base<gold" (field_expression "(cie->fdes_).super__Vector_base" (parenthesized_expression "(cie->fdes_)" ( (field_expression "cie->fdes_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Fde" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Fde" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment comment (expression_statement "do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");" (call_expression "do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie")" identifier (argument_list "("../../gold/ehframe.h",0x128,"Cie")" ( (string_literal ""../../gold/ehframe.h"" " string_content ") , number_literal , (string_literal ""Cie"" " string_content ") ))) ;) })))
(translation_unit "void FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    \n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    \n                    \n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}\n\n" (function_definition "void FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    \n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    \n                    \n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}" primitive_type (function_declarator "FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    \n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    \n                    \n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "param_1[1] = param_2[1];" (assignment_expression "param_1[1] = param_2[1]" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[2] = param_2[2];" (assignment_expression "param_1[2] = param_2[2]" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = *(undefined1 *)(param_2 + 3);" (assignment_expression "uVar1 = *(undefined1 *)(param_2 + 3)" identifier = (pointer_expression "*(undefined1 *)(param_2 + 3)" * (cast_expression "(undefined1 *)(param_2 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 3)" ( (binary_expression "param_2 + 3" identifier + number_literal) ))))) ;) (expression_statement "param_1[4] = param_1 + 6;" (assignment_expression "param_1[4] = param_1 + 6" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1 + 6" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1 + 3) = uVar1;" (assignment_expression "*(undefined1 *)(param_1 + 3) = uVar1" (pointer_expression "*(undefined1 *)(param_1 + 3)" * (cast_expression "(undefined1 *)(param_1 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);" (call_expression "FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0)" identifier (argument_list "(param_1 + 4,param_2[4],param_2[5] + param_2[4],0)" ( (binary_expression "param_1 + 4" identifier + number_literal) , (subscript_expression "param_2[4]" identifier [ number_literal ]) , (binary_expression "param_2[5] + param_2[4]" (subscript_expression "param_2[5]" identifier [ number_literal ]) + (subscript_expression "param_2[4]" identifier [ number_literal ])) , number_literal ))) ;) (expression_statement "param_1[10] = 0;" (assignment_expression "param_1[10] = 0" (subscript_expression "param_1[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[0xd] = param_1 + 0xf;" (assignment_expression "param_1[0xd] = param_1 + 0xf" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xf" identifier + number_literal)) ;) (expression_statement "FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);" (call_expression "FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0)" identifier (argument_list "(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) , (subscript_expression "param_2[0xd]" identifier [ number_literal ]) , (binary_expression "param_2[0xe] + param_2[0xd]" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) + (subscript_expression "param_2[0xd]" identifier [ number_literal ])) , number_literal ))) ;) (if_statement "if (param_2[0xb] == param_2[10]) {\n    return;\n  }" if (parenthesized_expression "(param_2[0xb] == param_2[10])" ( (binary_expression "param_2[0xb] == param_2[10]" (subscript_expression "param_2[0xb]" identifier [ number_literal ]) == (subscript_expression "param_2[10]" identifier [ number_literal ])) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);" (call_expression "FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10])" identifier (argument_list "("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10])" ( (string_literal ""../../gold/ehframe.h"" " string_content ") , number_literal , (pointer_expression "&DAT_00267c74" & identifier) , (subscript_expression "param_2[10]" identifier [ number_literal ]) ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (pointer_expression & IDENT) , (subscript_expression IDENT [ LIT ]) ))) ;) })))
(function_definition "void FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)\n\n{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    \n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    \n                    \n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}" (primitive_type "void") (function_declarator "FUN_0017fe70(undefined4 *param_1,undefined4 *param_2)" (identifier "FUN_0017fe70") (parameter_list "(undefined4 *param_1,undefined4 *param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined1 uVar1;\n  \n  *param_1 = *param_2;\n  param_1[1] = param_2[1];\n  param_1[2] = param_2[2];\n  uVar1 = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  *(undefined1 *)(param_1 + 3) = uVar1;\n  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);\n  param_1[10] = 0;\n  param_1[0xb] = 0;\n  param_1[0xc] = 0;\n  param_1[0xd] = param_1 + 0xf;\n                    \n  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);\n  if (param_2[0xb] == param_2[10]) {\n    return;\n  }\n                    \n                    \n  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "param_1[1] = param_2[1];" (assignment_expression "param_1[1] = param_2[1]" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[2] = param_2[2];" (assignment_expression "param_1[2] = param_2[2]" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar1 = *(undefined1 *)(param_2 + 3);" (assignment_expression "uVar1 = *(undefined1 *)(param_2 + 3)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined1 *)(param_2 + 3)" (* "*") (cast_expression "(undefined1 *)(param_2 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 3)" (( "(") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "param_1[4] = param_1 + 6;" (assignment_expression "param_1[4] = param_1 + 6" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "param_1 + 6" (identifier "param_1") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 3) = uVar1;" (assignment_expression "*(undefined1 *)(param_1 + 3) = uVar1" (pointer_expression "*(undefined1 *)(param_1 + 3)" (* "*") (cast_expression "(undefined1 *)(param_1 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);" (call_expression "FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0)" (identifier "FUN_0007c4c0") (argument_list "(param_1 + 4,param_2[4],param_2[5] + param_2[4],0)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) (, ",") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (, ",") (binary_expression "param_2[5] + param_2[4]" (subscript_expression "param_2[5]" (identifier "param_2") ([ "[") (number_literal "5") (] "]")) (+ "+") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "param_1[10] = 0;" (assignment_expression "param_1[10] = 0" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xb] = 0;" (assignment_expression "param_1[0xb] = 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xc] = 0;" (assignment_expression "param_1[0xc] = 0" (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[0xd] = param_1 + 0xf;" (assignment_expression "param_1[0xd] = param_1 + 0xf" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "param_1 + 0xf" (identifier "param_1") (+ "+") (number_literal "0xf"))) (; ";")) (expression_statement "FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);" (call_expression "FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0)" (identifier "FUN_0007c4c0") (argument_list "(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0)" (( "(") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd")) (, ",") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]")) (, ",") (binary_expression "param_2[0xe] + param_2[0xd]" (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) (+ "+") (subscript_expression "param_2[0xd]" (identifier "param_2") ([ "[") (number_literal "0xd") (] "]"))) (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (param_2[0xb] == param_2[10]) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_2[0xb] == param_2[10])" (( "(") (binary_expression "param_2[0xb] == param_2[10]" (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (== "==") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);" (call_expression "FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10])" (identifier "FUN_0008b620") (argument_list "("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10])" (( "(") (string_literal ""../../gold/ehframe.h"" (" """) (string_content "../../gold/ehframe.h") (" """)) (, ",") (number_literal "0x128") (, ",") (pointer_expression "&DAT_00267c74" (& "&") (identifier "DAT_00267c74")) (, ",") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* DWARF original prototype: void Cie(Cie * this, Cie * cie) */

void __thiscall var_4::function_1::function_1(function_1 *this,function_1 *cie)

{
  type_1 uVar1;
  type_2 var_3;
  
  this->object_ = cie->object_;
  this->shndx_ = cie->shndx_;
  this->input_offset_ = cie->input_offset_;
  uVar1 = cie->fde_encoding_;
  (this->personality_name_)._M_dataplus._M_p = (type_2)&(this->personality_name_).field_2;
  this->fde_encoding_ = uVar1;
  var_3 = (cie->personality_name_)._M_dataplus._M_p;
  std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::allocator<var_2>var_6>::
  var_1<var_2*>(&this->personality_name_,var_3,
                      var_3 + (cie->personality_name_)._M_string_length,0);
  (this->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl._M_start =
       (type_2)0x0;
  (this->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl._M_finish =
       (type_2)0x0;
  (this->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl.
  _M_end_of_storage = (type_2)0x0;
  (this->contents_)._M_dataplus._M_p = (type_2)&(this->contents_).field_2;
  var_3 = (cie->contents_)._M_dataplus._M_p;
                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */
  std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::allocator<var_2>var_6>::
  var_1<var_2*>(&this->contents_,var_3,var_3 + (cie->contents_)._M_string_length,0);
  if ((cie->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl._M_finish ==
      (cie->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl._M_start) {
    return;
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */
  var_7("../../gold/ehframe.h",0x128,"Cie");
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(undefined4 *param_1,undefined4 *param_2)

{
  undefined1 uVar1;
  
  *param_1 = *param_2;
  param_1[1] = param_2[1];
  param_1[2] = param_2[2];
  uVar1 = *(undefined1 *)(param_2 + 3);
  param_1[4] = param_1 + 6;
  *(undefined1 *)(param_1 + 3) = uVar1;
  FUN_0007c4c0(param_1 + 4,param_2[4],param_2[5] + param_2[4],0);
  param_1[10] = 0;
  param_1[0xb] = 0;
  param_1[0xc] = 0;
  param_1[0xd] = param_1 + 0xf;
                    /* try { // try from 0017feef to 0017fef3 has its CatchHandler @ 0017ff23 */
  FUN_0007c4c0(param_1 + 0xd,param_2[0xd],param_2[0xe] + param_2[0xd],0);
  if (param_2[0xb] == param_2[10]) {
    return;
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 0017ff1e to 0017ff22 has its CatchHandler @ 0017ff28 */
  FUN_0008b620("../../gold/ehframe.h",0x128,&DAT_00267c74,param_2[10]);
}

