
/* DWARF original prototype: void Cie(Cie * this, Cie * cie) */

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

{
  pointer pcVar1;
  
  this->object_ = cie->object_;
  this->shndx_ = cie->shndx_;
  this->input_offset_ = cie->input_offset_;
  this->fde_encoding_ = cie->fde_encoding_;
  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;
  pcVar1 = (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_,pcVar1,
                      pcVar1 + (cie->personality_name_)._M_string_length);
  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;
  (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;
  pcVar1 = (cie->contents_)._M_dataplus._M_p;
                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char*>(&this->contents_,pcVar1,pcVar1 + (cie->contents_)._M_string_length);
  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 002c4044 to 002c4048 has its CatchHandler @ 002c404e */
  do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");
}



void FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)

{
  *param_1 = *param_2;
  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);
  param_1[2] = param_2[2];
  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);
  param_1[4] = param_1 + 6;
  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);
  param_1[0xb] = param_1 + 0xd;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */
  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);
  if (param_2[9] == param_2[8]) {
    return;
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002c4044 to 002c4048 has its CatchHandler @ 002c404e */
  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);
}


PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RSI
PUSH RBX
MOV RBX,RDI
LEA RDI,[RDI + 0x20]
LEA R12,[RBX + 0x30]
LEA R13,[RBX + 0x68]
SUB RSP,0x8
MOV RAX,qword ptr [RSI]
MOV qword ptr [RDI + -0x20],RAX
MOV EAX,dword ptr [RSI + 0x8]
MOV dword ptr [RDI + -0x18],EAX
MOV RAX,qword ptr [RSI + 0x10]
MOV qword ptr [RDI + -0x10],RAX
MOVZX EAX,byte ptr [RSI + 0x18]
MOV byte ptr [RDI + -0x8],AL
MOV qword ptr [RBX + 0x20],R12
MOV RSI,qword ptr [RSI + 0x20]
MOV RDX,qword ptr [RBP + 0x28]
ADD RDX,RSI
CALL 0x0017b390
MOV qword ptr [RBX + 0x58],R13
LEA RDI,[RBX + 0x58]
MOV qword ptr [RBX + 0x40],0x0
MOV qword ptr [RBX + 0x48],0x0
MOV qword ptr [RBX + 0x50],0x0
MOV RSI,qword ptr [RBP + 0x58]
MOV RDX,qword ptr [RBP + 0x60]
ADD RDX,RSI
CALL 0x0017b390
MOV RAX,qword ptr [RBP + 0x40]
CMP qword ptr [RBP + 0x48],RAX
JNZ 0x002c4031
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
RET
LEA RDX,[0x3a39f7]
MOV ESI,0x128
LEA RDI,[0x3a37fc]
CALL 0x0018dcf0
(translation_unit "void FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)\n\n{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */\n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002c4044 to 002c4048 has its CatchHandler @ 002c404e */\n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}\n\n" (function_definition "void FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)\n\n{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */\n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002c4044 to 002c4048 has its CatchHandler @ 002c404e */\n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}" primitive_type (function_declarator "FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */\n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002c4044 to 002c4048 has its CatchHandler @ 002c404e */\n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}" { (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);" (assignment_expression "*(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1)" (pointer_expression "*(undefined4 *)(param_1 + 1)" * (cast_expression "(undefined4 *)(param_1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 1)" * (cast_expression "(undefined4 *)(param_2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 1)" ( (binary_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 "*(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);" (assignment_expression "*(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3)" (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) )))) = (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 "FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);" (call_expression "FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4])" identifier (argument_list "(param_1 + 4,param_2[4],param_2[5] + param_2[4])" ( (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 ])) ))) ;) (expression_statement "param_1[0xb] = param_1 + 0xd;" (assignment_expression "param_1[0xb] = param_1 + 0xd" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xd" identifier + number_literal)) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" 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) ;) comment (expression_statement "FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);" (call_expression "FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb])" identifier (argument_list "(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb])" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , (subscript_expression "param_2[0xb]" identifier [ number_literal ]) , (binary_expression "param_2[0xc] + param_2[0xb]" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) + (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ))) ;) (if_statement "if (param_2[9] == param_2[8]) {\n    return;\n  }" if (parenthesized_expression "(param_2[9] == param_2[8])" ( (binary_expression "param_2[9] == param_2[8]" (subscript_expression "param_2[9]" identifier [ number_literal ]) == (subscript_expression "param_2[8]" identifier [ number_literal ])) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) comment comment (expression_statement "FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);" (call_expression "FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7)" identifier (argument_list "("../../gold/ehframe.h",0x128,&DAT_003a39f7)" ( (string_literal ""../../gold/ehframe.h"" " string_content ") , number_literal , (pointer_expression "&DAT_003a39f7" & identifier) ))) ;) })))
(translation_unit "/* DWARF original prototype: void Cie(Cie * this, Cie * cie) */\n\nvoid __thiscall gold::Cie::Cie(Cie *this,Cie *cie)\n\n{\n  pointer pcVar1;\n  \n  this->object_ = cie->object_;\n  this->shndx_ = cie->shndx_;\n  this->input_offset_ = cie->input_offset_;\n  this->fde_encoding_ = cie->fde_encoding_;\n  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;\n  pcVar1 = (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_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length);\n  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;\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  pcVar1 = (cie->contents_)._M_dataplus._M_p;\n                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->contents_,pcVar1,pcVar1 + (cie->contents_)._M_string_length);\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 002c4044 to 002c4048 has its CatchHandler @ 002c404e */\n  do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");\n}\n\n" comment (function_definition "void __thiscall gold::Cie::Cie(Cie *this,Cie *cie)\n\n{\n  pointer pcVar1;\n  \n  this->object_ = cie->object_;\n  this->shndx_ = cie->shndx_;\n  this->input_offset_ = cie->input_offset_;\n  this->fde_encoding_ = cie->fde_encoding_;\n  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;\n  pcVar1 = (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_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length);\n  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;\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  pcVar1 = (cie->contents_)._M_dataplus._M_p;\n                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->contents_,pcVar1,pcVar1 + (cie->contents_)._M_string_length);\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 002c4044 to 002c4048 has its CatchHandler @ 002c404e */\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  pointer pcVar1;\n  \n  this->object_ = cie->object_;\n  this->shndx_ = cie->shndx_;\n  this->input_offset_ = cie->input_offset_;\n  this->fde_encoding_ = cie->fde_encoding_;\n  (this->personality_name_)._M_dataplus._M_p = (pointer)&(this->personality_name_).field_2;\n  pcVar1 = (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_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length);\n  (this->contents_)._M_dataplus._M_p = (pointer)&(this->contents_).field_2;\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  pcVar1 = (cie->contents_)._M_dataplus._M_p;\n                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char*>(&this->contents_,pcVar1,pcVar1 + (cie->contents_)._M_string_length);\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 002c4044 to 002c4048 has its CatchHandler @ 002c404e */\n  do_gold_unreachable("../../gold/ehframe.h",0x128,"Cie");\n}" { (declaration "pointer pcVar1;" 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 "this->fde_encoding_ = cie->fde_encoding_;" (assignment_expression "this->fde_encoding_ = cie->fde_encoding_" (field_expression "this->fde_encoding_" identifier -> field_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 "pcVar1 = (cie->personality_name_)._M_dataplus._M_p;" (assignment_expression "pcVar1 = (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_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length);" 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_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length);" (binary_expression "_M_construct<char*>(&this->personality_name_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&this->personality_name_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length)" ( (comma_expression "&this->personality_name_,pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length" (pointer_expression "&this->personality_name_" & (field_expression "this->personality_name_" identifier -> field_identifier)) , (comma_expression "pcVar1,\n                      pcVar1 + (cie->personality_name_)._M_string_length" identifier , (binary_expression "pcVar1 + (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)))) ))) ;)) (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 "(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 "pcVar1 = (cie->contents_)._M_dataplus._M_p;" (assignment_expression "pcVar1 = (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_,pcVar1,pcVar1 + (cie->contents_)._M_string_length);" 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_,pcVar1,pcVar1 + (cie->contents_)._M_string_length);" (binary_expression "_M_construct<char*>(&this->contents_,pcVar1,pcVar1 + (cie->contents_)._M_string_length)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&this->contents_,pcVar1,pcVar1 + (cie->contents_)._M_string_length)" ( (comma_expression "&this->contents_,pcVar1,pcVar1 + (cie->contents_)._M_string_length" (pointer_expression "&this->contents_" & (field_expression "this->contents_" identifier -> field_identifier)) , (comma_expression "pcVar1,pcVar1 + (cie->contents_)._M_string_length" identifier , (binary_expression "pcVar1 + (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)))) ))) ;)) (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_002c3fa0(undefined8 *param_1,undefined8 *param_2)\n\n{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    \n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    \n                    \n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}\n\n" (function_definition "void FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)\n\n{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    \n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    \n                    \n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}" primitive_type (function_declarator "FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)" identifier (parameter_list "(undefined8 *param_1,undefined8 *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    \n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    \n                    \n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}" { (expression_statement "*param_1 = *param_2;" (assignment_expression "*param_1 = *param_2" (pointer_expression "*param_1" * identifier) = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);" (assignment_expression "*(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1)" (pointer_expression "*(undefined4 *)(param_1 + 1)" * (cast_expression "(undefined4 *)(param_1 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)(param_2 + 1)" * (cast_expression "(undefined4 *)(param_2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 1)" ( (binary_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 "*(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);" (assignment_expression "*(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3)" (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) )))) = (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 "FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);" (call_expression "FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4])" identifier (argument_list "(param_1 + 4,param_2[4],param_2[5] + param_2[4])" ( (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 ])) ))) ;) (expression_statement "param_1[0xb] = param_1 + 0xd;" (assignment_expression "param_1[0xb] = param_1 + 0xd" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1 + 0xd" identifier + number_literal)) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" 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 "FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);" (call_expression "FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb])" identifier (argument_list "(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb])" ( (binary_expression "param_1 + 0xb" identifier + number_literal) , (subscript_expression "param_2[0xb]" identifier [ number_literal ]) , (binary_expression "param_2[0xc] + param_2[0xb]" (subscript_expression "param_2[0xc]" identifier [ number_literal ]) + (subscript_expression "param_2[0xb]" identifier [ number_literal ])) ))) ;) (if_statement "if (param_2[9] == param_2[8]) {\n    return;\n  }" if (parenthesized_expression "(param_2[9] == param_2[8])" ( (binary_expression "param_2[9] == param_2[8]" (subscript_expression "param_2[9]" identifier [ number_literal ]) == (subscript_expression "param_2[8]" identifier [ number_literal ])) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);" (call_expression "FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7)" identifier (argument_list "("../../gold/ehframe.h",0x128,&DAT_003a39f7)" ( (string_literal ""../../gold/ehframe.h"" " string_content ") , number_literal , (pointer_expression "&DAT_003a39f7" & identifier) ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (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 (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + 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 (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ 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) ))) ;) })))
(function_definition "void FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)\n\n{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    \n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    \n                    \n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}" (primitive_type "void") (function_declarator "FUN_002c3fa0(undefined8 *param_1,undefined8 *param_2)" (identifier "FUN_002c3fa0") (parameter_list "(undefined8 *param_1,undefined8 *param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  *param_1 = *param_2;\n  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);\n  param_1[2] = param_2[2];\n  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);\n  param_1[4] = param_1 + 6;\n  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);\n  param_1[0xb] = param_1 + 0xd;\n  param_1[8] = 0;\n  param_1[9] = 0;\n  param_1[10] = 0;\n                    \n  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);\n  if (param_2[9] == param_2[8]) {\n    return;\n  }\n                    \n                    \n  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);\n}" ({ "{") (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 "*(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);" (assignment_expression "*(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1)" (pointer_expression "*(undefined4 *)(param_1 + 1)" (* "*") (cast_expression "(undefined4 *)(param_1 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(param_2 + 1)" (* "*") (cast_expression "(undefined4 *)(param_2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 1)" (( "(") (binary_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 "*(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);" (assignment_expression "*(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3)" (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")) () ")")))) (= "=") (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 "FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);" (call_expression "FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4])" (identifier "FUN_0017b390") (argument_list "(param_1 + 4,param_2[4],param_2[5] + param_2[4])" (( "(") (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") (] "]"))) () ")"))) (; ";")) (expression_statement "param_1[0xb] = param_1 + 0xd;" (assignment_expression "param_1[0xb] = param_1 + 0xd" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd"))) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (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 "FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);" (call_expression "FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb])" (identifier "FUN_0017b390") (argument_list "(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb])" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) (, ",") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]")) (, ",") (binary_expression "param_2[0xc] + param_2[0xb]" (subscript_expression "param_2[0xc]" (identifier "param_2") ([ "[") (number_literal "0xc") (] "]")) (+ "+") (subscript_expression "param_2[0xb]" (identifier "param_2") ([ "[") (number_literal "0xb") (] "]"))) () ")"))) (; ";")) (if_statement "if (param_2[9] == param_2[8]) {\n    return;\n  }" (if "if") (parenthesized_expression "(param_2[9] == param_2[8])" (( "(") (binary_expression "param_2[9] == param_2[8]" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (== "==") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);" (call_expression "FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7)" (identifier "FUN_0018dcf0") (argument_list "("../../gold/ehframe.h",0x128,&DAT_003a39f7)" (( "(") (string_literal ""../../gold/ehframe.h"" (" """) (string_content "../../gold/ehframe.h") (" """)) (, ",") (number_literal "0x128") (, ",") (pointer_expression "&DAT_003a39f7" (& "&") (identifier "DAT_003a39f7")) () ")"))) (; ";")) (} "}")))

/* 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 var_3;
  
  this->object_ = cie->object_;
  this->shndx_ = cie->shndx_;
  this->input_offset_ = cie->input_offset_;
  this->fde_encoding_ = cie->fde_encoding_;
  (this->personality_name_)._M_dataplus._M_p = (type_1)&(this->personality_name_).field_2;
  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);
  (this->contents_)._M_dataplus._M_p = (type_1)&(this->contents_).field_2;
  (this->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl._M_start =
       (type_1)0x0;
  (this->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl._M_finish =
       (type_1)0x0;
  (this->fdes_).super__Vector_base<var_4::Fde*,var_5::allocator<var_4::Fde*>var_6>._M_impl.
  _M_end_of_storage = (type_1)0x0;
  var_3 = (cie->contents_)._M_dataplus._M_p;
                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */
  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);
  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 002c4044 to 002c4048 has its CatchHandler @ 002c404e */
  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 (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (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: (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: (subscript_expression argument: (identifier) index: (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: (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 (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)))))) (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: (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 (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)))))) (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))))))))

void MASKED(undefined8 *param_1,undefined8 *param_2)

{
  *param_1 = *param_2;
  *(undefined4 *)(param_1 + 1) = *(undefined4 *)(param_2 + 1);
  param_1[2] = param_2[2];
  *(undefined1 *)(param_1 + 3) = *(undefined1 *)(param_2 + 3);
  param_1[4] = param_1 + 6;
  FUN_0017b390(param_1 + 4,param_2[4],param_2[5] + param_2[4]);
  param_1[0xb] = param_1 + 0xd;
  param_1[8] = 0;
  param_1[9] = 0;
  param_1[10] = 0;
                    /* try { // try from 002c4017 to 002c401b has its CatchHandler @ 002c4049 */
  FUN_0017b390(param_1 + 0xb,param_2[0xb],param_2[0xc] + param_2[0xb]);
  if (param_2[9] == param_2[8]) {
    return;
  }
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002c4044 to 002c4048 has its CatchHandler @ 002c404e */
  FUN_0018dcf0("../../gold/ehframe.h",0x128,&DAT_003a39f7);
}

