
/* DWARF original prototype: void remove_ehframe_for_plt(Eh_frame * this, Output_data * plt, uchar *
   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */

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

{
  bool bVar1;
  Cie *this_00;
  _func_int_varargs *p_Var2;
  int iVar3;
  iterator iVar4;
  Fde *fde;
  undefined4 extraout_var;
  int __in_chrg;
  ulong uVar6;
  Cie *local_c0;
  Cie cie;
  uint64_t uVar5;
  
  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;
  cie.object_ = (Relobj *)0x0;
  cie.shndx_ = 0;
  cie.input_offset_ = 0;
  cie.fde_encoding_ = '\x1b';
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&cie.personality_name_,"");
  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =
       (pointer)0x0;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =
       (pointer)0x0;
  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =
       (pointer)0x0;
                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */
  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);
  local_c0 = &cie;
  iVar4 = std::
          _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
          ::find(&(this->cie_offsets_)._M_t,&local_c0);
  if ((_Rb_tree_header *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)
  {
    this_00 = *(Cie **)(iVar4._M_node + 1);
                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */
    fde = (Fde *)operator_new(0x38);
    fde->object_ = (Relobj *)0x0;
    bVar1 = this->mappings_are_done_;
    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;
                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */
    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
    _M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_length);
    (fde->u_).from_linker.plt = plt;
    (fde->u_).from_linker.post_map = bVar1;
                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */
    Cie::remove_fde(this_00,fde);
    __in_chrg = (int)fde;
    if (this->mappings_are_done_ != false) {
      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
      if (p_Var2 == Output_section_data::do_addralign) {
        uVar5 = (this->super_Output_section_data).addralign_;
      }
      else {
        iVar3 = (*p_Var2)(this);
        uVar5 = CONCAT44(extraout_var,iVar3);
      }
      if (uVar5 == 0) {
        uVar6 = fde_length + 8;
      }
      else {
        uVar6 = uVar5 + 7 + fde_length & -uVar5;
      }
      this->final_data_size_ = this->final_data_size_ - uVar6;
    }
    Cie::~Cie(&cie,__in_chrg);
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");
}



void FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,
                 long param_6)

{
  long lVar1;
  long *plVar2;
  undefined8 *puVar3;
  long lVar4;
  ulong uVar5;
  undefined8 *local_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined8 local_a8;
  undefined1 local_a0;
  undefined1 *local_98 [2];
  undefined1 local_88 [16];
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined1 *local_60 [2];
  undefined1 local_50 [32];
  
  local_98[0] = local_88;
  local_b8 = 0;
  local_b0 = 0;
  local_a8 = 0;
  local_a0 = 0x1b;
  FUN_001665c0(local_98,"");
  local_60[0] = local_50;
  local_78 = 0;
  local_70 = 0;
  local_68 = 0;
                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */
  FUN_001665c0(local_60,param_3,param_3 + param_4);
  local_c0 = &local_b8;
  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);
  if (plVar2 != param_1 + 9) {
    lVar4 = plVar2[4];
                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */
    puVar3 = (undefined8 *)FUN_002d94a0(0x38);
    *puVar3 = 0;
    lVar1 = param_1[0x11];
    puVar3[3] = puVar3 + 5;
                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */
    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);
    puVar3[1] = param_2;
    *(char *)(puVar3 + 2) = (char)lVar1;
                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */
    FUN_002a8000(lVar4,puVar3);
    if ((char)param_1[0x11] != '\0') {
      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
        lVar4 = param_1[6];
      }
      else {
        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);
      }
      if (lVar4 == 0) {
        uVar5 = param_6 + 8;
      }
      else {
        uVar5 = lVar4 + 7 + param_6 & -lVar4;
      }
      param_1[0x12] = param_1[0x12] - uVar5;
    }
    FUN_002a7cb0(&local_b8);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");
}


PUSH R15
MOV R15,RSI
PUSH R14
MOV R14,R8
PUSH R13
MOV R13,R9
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
MOV RBX,RDX
SUB RSP,0xa8
LEA R12,[RSP + 0x20]
MOV qword ptr [RSP],RCX
LEA RDX,[R12 + 0x30]
LEA RDI,[R12 + 0x20]
MOV qword ptr [RSP + 0x20],0x0
MOV qword ptr [RSP + 0x40],RDX
LEA RDX,[0x38b016]
MOV RSI,RDX
MOV dword ptr [RSP + 0x28],0x0
MOV qword ptr [RSP + 0x30],0x0
MOV byte ptr [RSP + 0x38],0x1b
CALL 0x001665c0
MOV RCX,qword ptr [RSP]
LEA RDX,[R12 + 0x68]
MOV RSI,RBX
MOV qword ptr [RSP + 0x78],RDX
LEA RDI,[R12 + 0x58]
MOV qword ptr [RSP + 0x60],0x0
LEA RDX,[RBX + RCX*0x1]
MOV qword ptr [RSP + 0x68],0x0
MOV qword ptr [RSP + 0x70],0x0
CALL 0x001665c0
LEA RSI,[RSP + 0x18]
LEA RDI,[RBP + 0x40]
MOV qword ptr [RSP + 0x18],R12
CALL 0x002a8d20
LEA RDX,[RBP + 0x48]
CMP RAX,RDX
JZ 0x002a856f
MOV RAX,qword ptr [RAX + 0x20]
MOV EDI,0x38
MOV qword ptr [RSP + 0x8],RAX
CALL 0x002d94a0
MOV RBX,RAX
LEA RDI,[RAX + 0x18]
LEA RAX,[RAX + 0x28]
MOV RSI,R14
MOV qword ptr [RAX + -0x28],0x0
MOVZX ECX,byte ptr [RBP + 0x88]
LEA RDX,[R14 + R13*0x1]
MOV qword ptr [RBX + 0x18],RAX
MOV byte ptr [RSP],CL
CALL 0x001665c0
MOVZX ECX,byte ptr [RSP]
MOV RDI,qword ptr [RSP + 0x8]
MOV qword ptr [RBX + 0x8],R15
MOV RSI,RBX
MOV byte ptr [RBX + 0x10],CL
CALL 0x002a8000
CMP byte ptr [RBP + 0x88],0x0
JZ 0x002a8539
MOV RAX,qword ptr [RBP]
LEA RDX,[0x185200]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,RDX
JNZ 0x002a8568
MOV RAX,qword ptr [RBP + 0x30]
TEST RAX,RAX
JNZ 0x002a8558
ADD R13,0x8
SUB qword ptr [RBP + 0x90],R13
MOV RDI,R12
CALL 0x002a7cb0
ADD RSP,0xa8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
LEA R13,[RAX + R13*0x1 + 0x7]
NEG RAX
AND R13,RAX
JMP 0x002a8532
MOV RDI,RBP
CALL RAX
JMP 0x002a8529
LEA RDX,[0x38c1f0]
MOV ESI,0x49e
LEA RDI,[0x38bfc1]
CALL 0x0017c650
(translation_unit "void FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)\n\n{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */\n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}\n\n" (function_definition "void FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)\n\n{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */\n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" primitive_type (function_declarator "FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)" identifier (parameter_list "(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_6" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */\n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "undefined8 *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "undefined8 local_b8;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined8 local_a8;" type_identifier identifier ;) (declaration "undefined1 local_a0;" type_identifier identifier ;) (declaration "undefined1 *local_98 [2];" type_identifier (pointer_declarator "*local_98 [2]" * (array_declarator "local_98 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_88 [16];" type_identifier (array_declarator "local_88 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 local_78;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined1 *local_60 [2];" type_identifier (pointer_declarator "*local_60 [2]" * (array_declarator "local_60 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_50 [32];" type_identifier (array_declarator "local_50 [32]" identifier [ number_literal ]) ;) (expression_statement "local_98[0] = local_88;" (assignment_expression "local_98[0] = local_88" (subscript_expression "local_98[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_a0 = 0x1b;" (assignment_expression "local_a0 = 0x1b" identifier = number_literal) ;) (expression_statement "FUN_001665c0(local_98,"");" (call_expression "FUN_001665c0(local_98,"")" identifier (argument_list "(local_98,"")" ( identifier , (string_literal """" " ") ))) ;) (expression_statement "local_60[0] = local_50;" (assignment_expression "local_60[0] = local_50" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) comment (expression_statement "FUN_001665c0(local_60,param_3,param_3 + param_4);" (call_expression "FUN_001665c0(local_60,param_3,param_3 + param_4)" identifier (argument_list "(local_60,param_3,param_3 + param_4)" ( identifier , identifier , (binary_expression "param_3 + param_4" identifier + identifier) ))) ;) (expression_statement "local_c0 = &local_b8;" (assignment_expression "local_c0 = &local_b8" identifier = (pointer_expression "&local_b8" & identifier)) ;) (expression_statement "plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);" (assignment_expression "plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0)" identifier = (cast_expression "(long *)FUN_002a8d20(param_1 + 8,&local_c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a8d20(param_1 + 8,&local_c0)" identifier (argument_list "(param_1 + 8,&local_c0)" ( (binary_expression "param_1 + 8" identifier + number_literal) , (pointer_expression "&local_c0" & identifier) ))))) ;) (if_statement "if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }" if (parenthesized_expression "(plVar2 != param_1 + 9)" ( (binary_expression "plVar2 != param_1 + 9" identifier != (binary_expression "param_1 + 9" identifier + number_literal)) )) (compound_statement "{\n    lVar4 = plVar2[4];\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }" { (expression_statement "lVar4 = plVar2[4];" (assignment_expression "lVar4 = plVar2[4]" identifier = (subscript_expression "plVar2[4]" identifier [ number_literal ])) ;) comment (expression_statement "puVar3 = (undefined8 *)FUN_002d94a0(0x38);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d94a0(0x38)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "lVar1 = param_1[0x11];" (assignment_expression "lVar1 = param_1[0x11]" identifier = (subscript_expression "param_1[0x11]" identifier [ number_literal ])) ;) (expression_statement "puVar3[3] = puVar3 + 5;" (assignment_expression "puVar3[3] = puVar3 + 5" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (binary_expression "puVar3 + 5" identifier + number_literal)) ;) comment (expression_statement "FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);" (call_expression "FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6)" identifier (argument_list "(puVar3 + 3,param_5,param_5 + param_6)" ( (binary_expression "puVar3 + 3" identifier + number_literal) , identifier , (binary_expression "param_5 + param_6" identifier + identifier) ))) ;) (expression_statement "puVar3[1] = param_2;" (assignment_expression "puVar3[1] = param_2" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char *)(puVar3 + 2) = (char)lVar1;" (assignment_expression "*(char *)(puVar3 + 2) = (char)lVar1" (pointer_expression "*(char *)(puVar3 + 2)" * (cast_expression "(char *)(puVar3 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 2)" ( (binary_expression "puVar3 + 2" identifier + number_literal) )))) = (cast_expression "(char)lVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) comment (expression_statement "FUN_002a8000(lVar4,puVar3);" (call_expression "FUN_002a8000(lVar4,puVar3)" identifier (argument_list "(lVar4,puVar3)" ( identifier , identifier ))) ;) (if_statement "if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }" if (parenthesized_expression "((char)param_1[0x11] != '\0')" ( (binary_expression "(char)param_1[0x11] != '\0'" (cast_expression "(char)param_1[0x11]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }" { (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        lVar4 = param_1[6];\n      }" { (expression_statement "lVar4 = param_1[6];" (assignment_expression "lVar4 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" else (compound_statement "{\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" { (expression_statement "lVar4 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar4 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (if_statement "if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar5 = param_6 + 8;\n      }" { (expression_statement "uVar5 = param_6 + 8;" (assignment_expression "uVar5 = param_6 + 8" identifier = (binary_expression "param_6 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" else (compound_statement "{\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" { (expression_statement "uVar5 = lVar4 + 7 + param_6 & -lVar4;" (assignment_expression "uVar5 = lVar4 + 7 + param_6 & -lVar4" identifier = (binary_expression "lVar4 + 7 + param_6 & -lVar4" (binary_expression "lVar4 + 7 + param_6" (binary_expression "lVar4 + 7" identifier + number_literal) + identifier) & (unary_expression "-lVar4" - identifier))) ;) }))) (expression_statement "param_1[0x12] = param_1[0x12] - uVar5;" (assignment_expression "param_1[0x12] = param_1[0x12] - uVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = (binary_expression "param_1[0x12] - uVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) - identifier)) ;) })) (expression_statement "FUN_002a7cb0(&local_b8);" (call_expression "FUN_002a7cb0(&local_b8)" identifier (argument_list "(&local_b8)" ( (pointer_expression "&local_b8" & identifier) ))) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");" (call_expression "FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" identifier (argument_list "("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""remove_ehframe_for_plt"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: void remove_ehframe_for_plt(Eh_frame * this, Output_data * plt, uchar *\n   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */\n\nvoid __thiscall\ngold::Eh_frame::remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)\n\n{\n  bool bVar1;\n  Cie *this_00;\n  _func_int_varargs *p_Var2;\n  int iVar3;\n  iterator iVar4;\n  Fde *fde;\n  undefined4 extraout_var;\n  int __in_chrg;\n  ulong uVar6;\n  Cie *local_c0;\n  Cie cie;\n  uint64_t uVar5;\n  \n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.object_ = (Relobj *)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  cie.fde_encoding_ = '\x1b';\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,"");\n  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;\n                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);\n  local_c0 = &cie;\n  iVar4 = std::\n          _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          ::find(&(this->cie_offsets_)._M_t,&local_c0);\n  if ((_Rb_tree_header *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n  {\n    this_00 = *(Cie **)(iVar4._M_node + 1);\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    fde = (Fde *)operator_new(0x38);\n    fde->object_ = (Relobj *)0x0;\n    bVar1 = this->mappings_are_done_;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_length);\n    (fde->u_).from_linker.plt = plt;\n    (fde->u_).from_linker.post_map = bVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    Cie::remove_fde(this_00,fde);\n    __in_chrg = (int)fde;\n    if (this->mappings_are_done_ != false) {\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }\n      if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar6;\n    }\n    Cie::~Cie(&cie,__in_chrg);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}\n\n" comment (function_definition "void __thiscall\ngold::Eh_frame::remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)\n\n{\n  bool bVar1;\n  Cie *this_00;\n  _func_int_varargs *p_Var2;\n  int iVar3;\n  iterator iVar4;\n  Fde *fde;\n  undefined4 extraout_var;\n  int __in_chrg;\n  ulong uVar6;\n  Cie *local_c0;\n  Cie cie;\n  uint64_t uVar5;\n  \n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.object_ = (Relobj *)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  cie.fde_encoding_ = '\x1b';\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,"");\n  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;\n                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);\n  local_c0 = &cie;\n  iVar4 = std::\n          _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          ::find(&(this->cie_offsets_)._M_t,&local_c0);\n  if ((_Rb_tree_header *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n  {\n    this_00 = *(Cie **)(iVar4._M_node + 1);\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    fde = (Fde *)operator_new(0x38);\n    fde->object_ = (Relobj *)0x0;\n    bVar1 = this->mappings_are_done_;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_length);\n    (fde->u_).from_linker.plt = plt;\n    (fde->u_).from_linker.post_map = bVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    Cie::remove_fde(this_00,fde);\n    __in_chrg = (int)fde;\n    if (this->mappings_are_done_ != false) {\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }\n      if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar6;\n    }\n    Cie::~Cie(&cie,__in_chrg);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Eh_frame::" identifier : : identifier : :) (function_declarator "remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)" identifier (parameter_list "(Eh_frame *this,Output_data *plt,uchar *cie_data,size_t cie_length,uchar *fde_data,\n          size_t fde_length)" ( (parameter_declaration "Eh_frame *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_data *plt" type_identifier (pointer_declarator "*plt" * identifier)) , (parameter_declaration "uchar *cie_data" type_identifier (pointer_declarator "*cie_data" * identifier)) , (parameter_declaration "size_t cie_length" primitive_type identifier) , (parameter_declaration "uchar *fde_data" type_identifier (pointer_declarator "*fde_data" * identifier)) , (parameter_declaration "size_t fde_length" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  Cie *this_00;\n  _func_int_varargs *p_Var2;\n  int iVar3;\n  iterator iVar4;\n  Fde *fde;\n  undefined4 extraout_var;\n  int __in_chrg;\n  ulong uVar6;\n  Cie *local_c0;\n  Cie cie;\n  uint64_t uVar5;\n  \n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.object_ = (Relobj *)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  cie.fde_encoding_ = '\x1b';\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,"");\n  cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;\n  cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;\n                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */\n  std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length);\n  local_c0 = &cie;\n  iVar4 = std::\n          _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          ::find(&(this->cie_offsets_)._M_t,&local_c0);\n  if ((_Rb_tree_header *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n  {\n    this_00 = *(Cie **)(iVar4._M_node + 1);\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    fde = (Fde *)operator_new(0x38);\n    fde->object_ = (Relobj *)0x0;\n    bVar1 = this->mappings_are_done_;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_length);\n    (fde->u_).from_linker.plt = plt;\n    (fde->u_).from_linker.post_map = bVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    Cie::remove_fde(this_00,fde);\n    __in_chrg = (int)fde;\n    if (this->mappings_are_done_ != false) {\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }\n      if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar6;\n    }\n    Cie::~Cie(&cie,__in_chrg);\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "Cie *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "iterator iVar4;" type_identifier identifier ;) (declaration "Fde *fde;" type_identifier (pointer_declarator "*fde" * identifier) ;) (declaration "undefined4 extraout_var;" type_identifier identifier ;) (declaration "int __in_chrg;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "Cie *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "Cie cie;" type_identifier identifier ;) (declaration "uint64_t uVar5;" primitive_type identifier ;) (expression_statement "cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;" (assignment_expression "cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2" (field_expression "cie.personality_name_._M_dataplus._M_p" (field_expression "cie.personality_name_._M_dataplus" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&cie.personality_name_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "cie.personality_name_.field_2" (field_expression "cie.personality_name_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "cie.object_ = (Relobj *)0x0;" (assignment_expression "cie.object_ = (Relobj *)0x0" (field_expression "cie.object_" identifier . field_identifier) = (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "cie.shndx_ = 0;" (assignment_expression "cie.shndx_ = 0" (field_expression "cie.shndx_" identifier . field_identifier) = number_literal) ;) (expression_statement "cie.input_offset_ = 0;" (assignment_expression "cie.input_offset_ = 0" (field_expression "cie.input_offset_" identifier . field_identifier) = number_literal) ;) (expression_statement "cie.fde_encoding_ = '\x1b';" (assignment_expression "cie.fde_encoding_ = '\x1b'" (field_expression "cie.fde_encoding_" identifier . field_identifier) = (char_literal "'\x1b'" ' escape_sequence ')) ;) (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.personality_name_,"");" 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_const*>(&cie.personality_name_,"");" (binary_expression "_M_construct<char_const*>(&cie.personality_name_,"")" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&cie.personality_name_,"")" ( (comma_expression "&cie.personality_name_,""" (pointer_expression "&cie.personality_name_" & (field_expression "cie.personality_name_" identifier . field_identifier)) , (string_literal """" " ")) ))) ;)) (expression_statement "cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2;" (assignment_expression "cie.contents_._M_dataplus._M_p = (pointer)&cie.contents_.field_2" (field_expression "cie.contents_._M_dataplus._M_p" (field_expression "cie.contents_._M_dataplus" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier) . field_identifier) = (binary_expression "(pointer)&cie.contents_.field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "cie.contents_.field_2" (field_expression "cie.contents_" identifier . field_identifier) . field_identifier))) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_start =\n       (pointer)0x0" (field_expression "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" (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" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_finish =\n       (pointer)0x0" (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" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0;" (assignment_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage =\n       (pointer)0x0" (field_expression "cie.fdes_.super__Vector_base<gold::Fde*,_std::allocator<gold::Fde*>_>._M_impl._M_end_of_storage" (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" (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) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n  _M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_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_const*>(&cie.contents_,cie_data,cie_data + cie_length);" (binary_expression "_M_construct<char_const*>(&cie.contents_,cie_data,cie_data + cie_length)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&cie.contents_,cie_data,cie_data + cie_length)" ( (comma_expression "&cie.contents_,cie_data,cie_data + cie_length" (pointer_expression "&cie.contents_" & (field_expression "cie.contents_" identifier . field_identifier)) , (comma_expression "cie_data,cie_data + cie_length" identifier , (binary_expression "cie_data + cie_length" identifier + identifier))) ))) ;)) (expression_statement "local_c0 = &cie;" (assignment_expression "local_c0 = &cie" identifier = (pointer_expression "&cie" & identifier)) ;) (ERROR "iVar4 = std::\n          _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::" (assignment_expression "iVar4 = std" identifier = identifier) : : (binary_expression "_Rb_tree<gold" identifier < identifier) : : (binary_expression "Cie*,_gold" identifier * (ERROR "," ,) identifier) : : (binary_expression "Cie*,_std" identifier * (ERROR "," ,) identifier) : : (binary_expression "_Identity<gold" identifier < identifier) : : (comma_expression "Cie*>,_gold" identifier (ERROR "*>" * >) , identifier) : :) (expression_statement "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          ::find(&(this->cie_offsets_)._M_t,&local_c0);" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          ::find(&(this->cie_offsets_)._M_t,&local_c0)" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_" identifier (ERROR "::Cie_less,_std::allocator<gold::Cie*" : : (comma_expression "Cie_less,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier *) > identifier) > (ERROR "::" : :) (call_expression "find(&(this->cie_offsets_)._M_t,&local_c0)" identifier (argument_list "(&(this->cie_offsets_)._M_t,&local_c0)" ( (pointer_expression "&(this->cie_offsets_)._M_t" & (field_expression "(this->cie_offsets_)._M_t" (parenthesized_expression "(this->cie_offsets_)" ( (field_expression "this->cie_offsets_" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "&local_c0" & identifier) )))) ;) (if_statement "if ((_Rb_tree_header *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n  {\n    this_00 = *(Cie **)(iVar4._M_node + 1);\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    fde = (Fde *)operator_new(0x38);\n    fde->object_ = (Relobj *)0x0;\n    bVar1 = this->mappings_are_done_;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_length);\n    (fde->u_).from_linker.plt = plt;\n    (fde->u_).from_linker.post_map = bVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    Cie::remove_fde(this_00,fde);\n    __in_chrg = (int)fde;\n    if (this->mappings_are_done_ != false) {\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }\n      if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar6;\n    }\n    Cie::~Cie(&cie,__in_chrg);\n    return;\n  }" if (parenthesized_expression "((_Rb_tree_header *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)" ( (binary_expression "(_Rb_tree_header *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)iVar4._M_node" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "iVar4._M_node" identifier . field_identifier)) != (pointer_expression "&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" & (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (field_expression "(this->cie_offsets_)._M_t._M_impl" (field_expression "(this->cie_offsets_)._M_t" (parenthesized_expression "(this->cie_offsets_)" ( (field_expression "this->cie_offsets_" identifier -> field_identifier) )) . field_identifier) . field_identifier) . field_identifier))) )) (compound_statement "{\n    this_00 = *(Cie **)(iVar4._M_node + 1);\n                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */\n    fde = (Fde *)operator_new(0x38);\n    fde->object_ = (Relobj *)0x0;\n    bVar1 = this->mappings_are_done_;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */\n    std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_length);\n    (fde->u_).from_linker.plt = plt;\n    (fde->u_).from_linker.post_map = bVar1;\n                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */\n    Cie::remove_fde(this_00,fde);\n    __in_chrg = (int)fde;\n    if (this->mappings_are_done_ != false) {\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }\n      if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar6;\n    }\n    Cie::~Cie(&cie,__in_chrg);\n    return;\n  }" { (expression_statement "this_00 = *(Cie **)(iVar4._M_node + 1);" (assignment_expression "this_00 = *(Cie **)(iVar4._M_node + 1)" identifier = (pointer_expression "*(Cie **)(iVar4._M_node + 1)" * (cast_expression "(Cie **)(iVar4._M_node + 1)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar4._M_node + 1)" ( (binary_expression "iVar4._M_node + 1" (field_expression "iVar4._M_node" identifier . field_identifier) + number_literal) ))))) ;) comment (expression_statement "fde = (Fde *)operator_new(0x38);" (assignment_expression "fde = (Fde *)operator_new(0x38)" identifier = (cast_expression "(Fde *)operator_new(0x38)" ( (type_descriptor "Fde *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "fde->object_ = (Relobj *)0x0;" (assignment_expression "fde->object_ = (Relobj *)0x0" (field_expression "fde->object_" identifier -> field_identifier) = (cast_expression "(Relobj *)0x0" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar1 = this->mappings_are_done_;" (assignment_expression "bVar1 = this->mappings_are_done_" identifier = (field_expression "this->mappings_are_done_" identifier -> field_identifier)) ;) (expression_statement "(fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;" (assignment_expression "(fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2" (field_expression "(fde->contents_)._M_dataplus._M_p" (field_expression "(fde->contents_)._M_dataplus" (parenthesized_expression "(fde->contents_)" ( (field_expression "fde->contents_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (binary_expression "(pointer)&(fde->contents_).field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "(fde->contents_).field_2" (parenthesized_expression "(fde->contents_)" ( (field_expression "fde->contents_" identifier -> field_identifier) )) . field_identifier))) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n    _M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_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_const*>(&fde->contents_,fde_data,fde_data + fde_length);" (binary_expression "_M_construct<char_const*>(&fde->contents_,fde_data,fde_data + fde_length)" (binary_expression "_M_construct<char_const" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(&fde->contents_,fde_data,fde_data + fde_length)" ( (comma_expression "&fde->contents_,fde_data,fde_data + fde_length" (pointer_expression "&fde->contents_" & (field_expression "fde->contents_" identifier -> field_identifier)) , (comma_expression "fde_data,fde_data + fde_length" identifier , (binary_expression "fde_data + fde_length" identifier + identifier))) ))) ;)) (expression_statement "(fde->u_).from_linker.plt = plt;" (assignment_expression "(fde->u_).from_linker.plt = plt" (field_expression "(fde->u_).from_linker.plt" (field_expression "(fde->u_).from_linker" (parenthesized_expression "(fde->u_)" ( (field_expression "fde->u_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "(fde->u_).from_linker.post_map = bVar1;" (assignment_expression "(fde->u_).from_linker.post_map = bVar1" (field_expression "(fde->u_).from_linker.post_map" (field_expression "(fde->u_).from_linker" (parenthesized_expression "(fde->u_)" ( (field_expression "fde->u_" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) comment (labeled_statement "Cie::remove_fde(this_00,fde);" statement_identifier : (ERROR ":" :) (expression_statement "remove_fde(this_00,fde);" (call_expression "remove_fde(this_00,fde)" identifier (argument_list "(this_00,fde)" ( identifier , identifier ))) ;)) (expression_statement "__in_chrg = (int)fde;" (assignment_expression "__in_chrg = (int)fde" identifier = (cast_expression "(int)fde" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (this->mappings_are_done_ != false) {\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }\n      if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar6;\n    }" if (parenthesized_expression "(this->mappings_are_done_ != false)" ( (binary_expression "this->mappings_are_done_ != false" (field_expression "this->mappings_are_done_" identifier -> field_identifier) != false) )) (compound_statement "{\n      p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n      if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }\n      if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar6;\n    }" { (expression_statement "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];" (assignment_expression "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" identifier = (subscript_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" (field_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }\n      else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n        uVar5 = (this->super_Output_section_data).addralign_;\n      }" { (expression_statement "uVar5 = (this->super_Output_section_data).addralign_;" (assignment_expression "uVar5 = (this->super_Output_section_data).addralign_" identifier = (field_expression "(this->super_Output_section_data).addralign_" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier)) ;) }) (else_clause "else {\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }" else (compound_statement "{\n        iVar3 = (*p_Var2)(this);\n        uVar5 = CONCAT44(extraout_var,iVar3);\n      }" { (expression_statement "iVar3 = (*p_Var2)(this);" (assignment_expression "iVar3 = (*p_Var2)(this)" identifier = (call_expression "(*p_Var2)(this)" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "(this)" ( identifier )))) ;) (expression_statement "uVar5 = CONCAT44(extraout_var,iVar3);" (assignment_expression "uVar5 = CONCAT44(extraout_var,iVar3)" identifier = (call_expression "CONCAT44(extraout_var,iVar3)" identifier (argument_list "(extraout_var,iVar3)" ( identifier , identifier )))) ;) }))) (if_statement "if (uVar5 == 0) {\n        uVar6 = fde_length + 8;\n      }\n      else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }" if (parenthesized_expression "(uVar5 == 0)" ( (binary_expression "uVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar6 = fde_length + 8;\n      }" { (expression_statement "uVar6 = fde_length + 8;" (assignment_expression "uVar6 = fde_length + 8" identifier = (binary_expression "fde_length + 8" identifier + number_literal)) ;) }) (else_clause "else {\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }" else (compound_statement "{\n        uVar6 = uVar5 + 7 + fde_length & -uVar5;\n      }" { (expression_statement "uVar6 = uVar5 + 7 + fde_length & -uVar5;" (assignment_expression "uVar6 = uVar5 + 7 + fde_length & -uVar5" identifier = (binary_expression "uVar5 + 7 + fde_length & -uVar5" (binary_expression "uVar5 + 7 + fde_length" (binary_expression "uVar5 + 7" identifier + number_literal) + identifier) & (unary_expression "-uVar5" - identifier))) ;) }))) (expression_statement "this->final_data_size_ = this->final_data_size_ - uVar6;" (assignment_expression "this->final_data_size_ = this->final_data_size_ - uVar6" (field_expression "this->final_data_size_" identifier -> field_identifier) = (binary_expression "this->final_data_size_ - uVar6" (field_expression "this->final_data_size_" identifier -> field_identifier) - identifier)) ;) })) (labeled_statement "Cie::~Cie(&cie,__in_chrg);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie(&cie,__in_chrg);" (unary_expression "~Cie(&cie,__in_chrg)" ~ (call_expression "Cie(&cie,__in_chrg)" identifier (argument_list "(&cie,__in_chrg)" ( (pointer_expression "&cie" & identifier) , identifier )))) ;)) (return_statement "return;" return ;) })) comment (expression_statement "do_gold_unreachable("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");" (call_expression "do_gold_unreachable("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" identifier (argument_list "("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""remove_ehframe_for_plt"" " string_content ") ))) ;) })))
(translation_unit "void FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)\n\n{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    \n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}\n\n" (function_definition "void FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)\n\n{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    \n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" primitive_type (function_declarator "FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)" identifier (parameter_list "(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_5" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_6" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    \n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "undefined8 *local_c0;" type_identifier (pointer_declarator "*local_c0" * identifier) ;) (declaration "undefined8 local_b8;" type_identifier identifier ;) (declaration "undefined4 local_b0;" type_identifier identifier ;) (declaration "undefined8 local_a8;" type_identifier identifier ;) (declaration "undefined1 local_a0;" type_identifier identifier ;) (declaration "undefined1 *local_98 [2];" type_identifier (pointer_declarator "*local_98 [2]" * (array_declarator "local_98 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_88 [16];" type_identifier (array_declarator "local_88 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 local_78;" type_identifier identifier ;) (declaration "undefined8 local_70;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined1 *local_60 [2];" type_identifier (pointer_declarator "*local_60 [2]" * (array_declarator "local_60 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 local_50 [32];" type_identifier (array_declarator "local_50 [32]" identifier [ number_literal ]) ;) (expression_statement "local_98[0] = local_88;" (assignment_expression "local_98[0] = local_88" (subscript_expression "local_98[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" identifier = number_literal) ;) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_a0 = 0x1b;" (assignment_expression "local_a0 = 0x1b" identifier = number_literal) ;) (expression_statement "FUN_001665c0(local_98,"");" (call_expression "FUN_001665c0(local_98,"")" identifier (argument_list "(local_98,"")" ( identifier , (string_literal """" " ") ))) ;) (expression_statement "local_60[0] = local_50;" (assignment_expression "local_60[0] = local_50" (subscript_expression "local_60[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "FUN_001665c0(local_60,param_3,param_3 + param_4);" (call_expression "FUN_001665c0(local_60,param_3,param_3 + param_4)" identifier (argument_list "(local_60,param_3,param_3 + param_4)" ( identifier , identifier , (binary_expression "param_3 + param_4" identifier + identifier) ))) ;) (expression_statement "local_c0 = &local_b8;" (assignment_expression "local_c0 = &local_b8" identifier = (pointer_expression "&local_b8" & identifier)) ;) (expression_statement "plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);" (assignment_expression "plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0)" identifier = (cast_expression "(long *)FUN_002a8d20(param_1 + 8,&local_c0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002a8d20(param_1 + 8,&local_c0)" identifier (argument_list "(param_1 + 8,&local_c0)" ( (binary_expression "param_1 + 8" identifier + number_literal) , (pointer_expression "&local_c0" & identifier) ))))) ;) (if_statement "if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }" if (parenthesized_expression "(plVar2 != param_1 + 9)" ( (binary_expression "plVar2 != param_1 + 9" identifier != (binary_expression "param_1 + 9" identifier + number_literal)) )) (compound_statement "{\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }" { (expression_statement "lVar4 = plVar2[4];" (assignment_expression "lVar4 = plVar2[4]" identifier = (subscript_expression "plVar2[4]" identifier [ number_literal ])) ;) (expression_statement "puVar3 = (undefined8 *)FUN_002d94a0(0x38);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d94a0(0x38)" identifier = (cast_expression "(undefined8 *)FUN_002d94a0(0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_002d94a0(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "lVar1 = param_1[0x11];" (assignment_expression "lVar1 = param_1[0x11]" identifier = (subscript_expression "param_1[0x11]" identifier [ number_literal ])) ;) (expression_statement "puVar3[3] = puVar3 + 5;" (assignment_expression "puVar3[3] = puVar3 + 5" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = (binary_expression "puVar3 + 5" identifier + number_literal)) ;) (expression_statement "FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);" (call_expression "FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6)" identifier (argument_list "(puVar3 + 3,param_5,param_5 + param_6)" ( (binary_expression "puVar3 + 3" identifier + number_literal) , identifier , (binary_expression "param_5 + param_6" identifier + identifier) ))) ;) (expression_statement "puVar3[1] = param_2;" (assignment_expression "puVar3[1] = param_2" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char *)(puVar3 + 2) = (char)lVar1;" (assignment_expression "*(char *)(puVar3 + 2) = (char)lVar1" (pointer_expression "*(char *)(puVar3 + 2)" * (cast_expression "(char *)(puVar3 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 2)" ( (binary_expression "puVar3 + 2" identifier + number_literal) )))) = (cast_expression "(char)lVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "FUN_002a8000(lVar4,puVar3);" (call_expression "FUN_002a8000(lVar4,puVar3)" identifier (argument_list "(lVar4,puVar3)" ( identifier , identifier ))) ;) (if_statement "if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }" if (parenthesized_expression "((char)param_1[0x11] != '\0')" ( (binary_expression "(char)param_1[0x11] != '\0'" (cast_expression "(char)param_1[0x11]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x11]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }" { (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n        lVar4 = param_1[6];\n      }" { (expression_statement "lVar4 = param_1[6];" (assignment_expression "lVar4 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" else (compound_statement "{\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" { (expression_statement "lVar4 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar4 = (**(code **)(*param_1 + 0x18))(param_1)" identifier = (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) }))) (if_statement "if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar5 = param_6 + 8;\n      }" { (expression_statement "uVar5 = param_6 + 8;" (assignment_expression "uVar5 = param_6 + 8" identifier = (binary_expression "param_6 + 8" identifier + number_literal)) ;) }) (else_clause "else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" else (compound_statement "{\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" { (expression_statement "uVar5 = lVar4 + 7 + param_6 & -lVar4;" (assignment_expression "uVar5 = lVar4 + 7 + param_6 & -lVar4" identifier = (binary_expression "lVar4 + 7 + param_6 & -lVar4" (binary_expression "lVar4 + 7 + param_6" (binary_expression "lVar4 + 7" identifier + number_literal) + identifier) & (unary_expression "-lVar4" - identifier))) ;) }))) (expression_statement "param_1[0x12] = param_1[0x12] - uVar5;" (assignment_expression "param_1[0x12] = param_1[0x12] - uVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) = (binary_expression "param_1[0x12] - uVar5" (subscript_expression "param_1[0x12]" identifier [ number_literal ]) - identifier)) ;) })) (expression_statement "FUN_002a7cb0(&local_b8);" (call_expression "FUN_002a7cb0(&local_b8)" identifier (argument_list "(&local_b8)" ( (pointer_expression "&local_b8" & identifier) ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");" (call_expression "FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" identifier (argument_list "("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" ( (string_literal ""../../gold/ehframe.cc"" " string_content ") , number_literal , (string_literal ""remove_ehframe_for_plt"" " string_content ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " ") ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_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) , IDENT , (binary_expression IDENT + IDENT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) & (unary_expression - IDENT))) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)\n\n{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    \n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" (primitive_type "void") (function_declarator "FUN_002a83f0(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)" (identifier "FUN_002a83f0") (parameter_list "(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,\n                 long param_6)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "long param_5" (sized_type_specifier "long" (long "long")) (identifier "param_5")) (, ",") (parameter_declaration "long param_6" (sized_type_specifier "long" (long "long")) (identifier "param_6")) () ")"))) (compound_statement "{\n  long lVar1;\n  long *plVar2;\n  undefined8 *puVar3;\n  long lVar4;\n  ulong uVar5;\n  undefined8 *local_c0;\n  undefined8 local_b8;\n  undefined4 local_b0;\n  undefined8 local_a8;\n  undefined1 local_a0;\n  undefined1 *local_98 [2];\n  undefined1 local_88 [16];\n  undefined8 local_78;\n  undefined8 local_70;\n  undefined8 local_68;\n  undefined1 *local_60 [2];\n  undefined1 local_50 [32];\n  \n  local_98[0] = local_88;\n  local_b8 = 0;\n  local_b0 = 0;\n  local_a8 = 0;\n  local_a0 = 0x1b;\n  FUN_001665c0(local_98,"");\n  local_60[0] = local_50;\n  local_78 = 0;\n  local_70 = 0;\n  local_68 = 0;\n                    \n  FUN_001665c0(local_60,param_3,param_3 + param_4);\n  local_c0 = &local_b8;\n  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);\n  if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }\n                    \n  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "undefined8 *local_c0;" (type_identifier "undefined8") (pointer_declarator "*local_c0" (* "*") (identifier "local_c0")) (; ";")) (declaration "undefined8 local_b8;" (type_identifier "undefined8") (identifier "local_b8") (; ";")) (declaration "undefined4 local_b0;" (type_identifier "undefined4") (identifier "local_b0") (; ";")) (declaration "undefined8 local_a8;" (type_identifier "undefined8") (identifier "local_a8") (; ";")) (declaration "undefined1 local_a0;" (type_identifier "undefined1") (identifier "local_a0") (; ";")) (declaration "undefined1 *local_98 [2];" (type_identifier "undefined1") (pointer_declarator "*local_98 [2]" (* "*") (array_declarator "local_98 [2]" (identifier "local_98") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_88 [16];" (type_identifier "undefined1") (array_declarator "local_88 [16]" (identifier "local_88") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 local_78;" (type_identifier "undefined8") (identifier "local_78") (; ";")) (declaration "undefined8 local_70;" (type_identifier "undefined8") (identifier "local_70") (; ";")) (declaration "undefined8 local_68;" (type_identifier "undefined8") (identifier "local_68") (; ";")) (declaration "undefined1 *local_60 [2];" (type_identifier "undefined1") (pointer_declarator "*local_60 [2]" (* "*") (array_declarator "local_60 [2]" (identifier "local_60") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 local_50 [32];" (type_identifier "undefined1") (array_declarator "local_50 [32]" (identifier "local_50") ([ "[") (number_literal "32") (] "]")) (; ";")) (expression_statement "local_98[0] = local_88;" (assignment_expression "local_98[0] = local_88" (subscript_expression "local_98[0]" (identifier "local_98") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_88")) (; ";")) (expression_statement "local_b8 = 0;" (assignment_expression "local_b8 = 0" (identifier "local_b8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_b0 = 0;" (assignment_expression "local_b0 = 0" (identifier "local_b0") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a0 = 0x1b;" (assignment_expression "local_a0 = 0x1b" (identifier "local_a0") (= "=") (number_literal "0x1b")) (; ";")) (expression_statement "FUN_001665c0(local_98,"");" (call_expression "FUN_001665c0(local_98,"")" (identifier "FUN_001665c0") (argument_list "(local_98,"")" (( "(") (identifier "local_98") (, ",") (string_literal """" (" """) (" """)) () ")"))) (; ";")) (expression_statement "local_60[0] = local_50;" (assignment_expression "local_60[0] = local_50" (subscript_expression "local_60[0]" (identifier "local_60") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "local_50")) (; ";")) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_001665c0(local_60,param_3,param_3 + param_4);" (call_expression "FUN_001665c0(local_60,param_3,param_3 + param_4)" (identifier "FUN_001665c0") (argument_list "(local_60,param_3,param_3 + param_4)" (( "(") (identifier "local_60") (, ",") (identifier "param_3") (, ",") (binary_expression "param_3 + param_4" (identifier "param_3") (+ "+") (identifier "param_4")) () ")"))) (; ";")) (expression_statement "local_c0 = &local_b8;" (assignment_expression "local_c0 = &local_b8" (identifier "local_c0") (= "=") (pointer_expression "&local_b8" (& "&") (identifier "local_b8"))) (; ";")) (expression_statement "plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);" (assignment_expression "plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0)" (identifier "plVar2") (= "=") (cast_expression "(long *)FUN_002a8d20(param_1 + 8,&local_c0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002a8d20(param_1 + 8,&local_c0)" (identifier "FUN_002a8d20") (argument_list "(param_1 + 8,&local_c0)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) (, ",") (pointer_expression "&local_c0" (& "&") (identifier "local_c0")) () ")"))))) (; ";")) (if_statement "if (plVar2 != param_1 + 9) {\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }" (if "if") (parenthesized_expression "(plVar2 != param_1 + 9)" (( "(") (binary_expression "plVar2 != param_1 + 9" (identifier "plVar2") (!= "!=") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9"))) () ")")) (compound_statement "{\n    lVar4 = plVar2[4];\n                    \n    puVar3 = (undefined8 *)FUN_002d94a0(0x38);\n    *puVar3 = 0;\n    lVar1 = param_1[0x11];\n    puVar3[3] = puVar3 + 5;\n                    \n    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);\n    puVar3[1] = param_2;\n    *(char *)(puVar3 + 2) = (char)lVar1;\n                    \n    FUN_002a8000(lVar4,puVar3);\n    if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }\n    FUN_002a7cb0(&local_b8);\n    return;\n  }" ({ "{") (expression_statement "lVar4 = plVar2[4];" (assignment_expression "lVar4 = plVar2[4]" (identifier "lVar4") (= "=") (subscript_expression "plVar2[4]" (identifier "plVar2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "puVar3 = (undefined8 *)FUN_002d94a0(0x38);" (assignment_expression "puVar3 = (undefined8 *)FUN_002d94a0(0x38)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_002d94a0(0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_002d94a0(0x38)" (identifier "FUN_002d94a0") (argument_list "(0x38)" (( "(") (number_literal "0x38") () ")"))))) (; ";")) (expression_statement "*puVar3 = 0;" (assignment_expression "*puVar3 = 0" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar1 = param_1[0x11];" (assignment_expression "lVar1 = param_1[0x11]" (identifier "lVar1") (= "=") (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]"))) (; ";")) (expression_statement "puVar3[3] = puVar3 + 5;" (assignment_expression "puVar3[3] = puVar3 + 5" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "puVar3 + 5" (identifier "puVar3") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);" (call_expression "FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6)" (identifier "FUN_001665c0") (argument_list "(puVar3 + 3,param_5,param_5 + param_6)" (( "(") (binary_expression "puVar3 + 3" (identifier "puVar3") (+ "+") (number_literal "3")) (, ",") (identifier "param_5") (, ",") (binary_expression "param_5 + param_6" (identifier "param_5") (+ "+") (identifier "param_6")) () ")"))) (; ";")) (expression_statement "puVar3[1] = param_2;" (assignment_expression "puVar3[1] = param_2" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(char *)(puVar3 + 2) = (char)lVar1;" (assignment_expression "*(char *)(puVar3 + 2) = (char)lVar1" (pointer_expression "*(char *)(puVar3 + 2)" (* "*") (cast_expression "(char *)(puVar3 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 2)" (( "(") (binary_expression "puVar3 + 2" (identifier "puVar3") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)lVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "lVar1"))) (; ";")) (expression_statement "FUN_002a8000(lVar4,puVar3);" (call_expression "FUN_002a8000(lVar4,puVar3)" (identifier "FUN_002a8000") (argument_list "(lVar4,puVar3)" (( "(") (identifier "lVar4") (, ",") (identifier "puVar3") () ")"))) (; ";")) (if_statement "if ((char)param_1[0x11] != '\0') {\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }" (if "if") (parenthesized_expression "((char)param_1[0x11] != '\0')" (( "(") (binary_expression "(char)param_1[0x11] != '\0'" (cast_expression "(char)param_1[0x11]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x11]" (identifier "param_1") ([ "[") (number_literal "0x11") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }\n      if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }\n      param_1[0x12] = param_1[0x12] - uVar5;\n    }" ({ "{") (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00185200) {\n        lVar4 = param_1[6];\n      }\n      else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00185200)" (( "(") (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00185200" (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "FUN_00185200")) () ")")) (compound_statement "{\n        lVar4 = param_1[6];\n      }" ({ "{") (expression_statement "lVar4 = param_1[6];" (assignment_expression "lVar4 = param_1[6]" (identifier "lVar4") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" (else "else") (compound_statement "{\n        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);\n      }" ({ "{") (expression_statement "lVar4 = (**(code **)(*param_1 + 0x18))(param_1);" (assignment_expression "lVar4 = (**(code **)(*param_1 + 0x18))(param_1)" (identifier "lVar4") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))(param_1)" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (} "}")))) (if_statement "if (lVar4 == 0) {\n        uVar5 = param_6 + 8;\n      }\n      else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar5 = param_6 + 8;\n      }" ({ "{") (expression_statement "uVar5 = param_6 + 8;" (assignment_expression "uVar5 = param_6 + 8" (identifier "uVar5") (= "=") (binary_expression "param_6 + 8" (identifier "param_6") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (else_clause "else {\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" (else "else") (compound_statement "{\n        uVar5 = lVar4 + 7 + param_6 & -lVar4;\n      }" ({ "{") (expression_statement "uVar5 = lVar4 + 7 + param_6 & -lVar4;" (assignment_expression "uVar5 = lVar4 + 7 + param_6 & -lVar4" (identifier "uVar5") (= "=") (binary_expression "lVar4 + 7 + param_6 & -lVar4" (binary_expression "lVar4 + 7 + param_6" (binary_expression "lVar4 + 7" (identifier "lVar4") (+ "+") (number_literal "7")) (+ "+") (identifier "param_6")) (& "&") (unary_expression "-lVar4" (- "-") (identifier "lVar4")))) (; ";")) (} "}")))) (expression_statement "param_1[0x12] = param_1[0x12] - uVar5;" (assignment_expression "param_1[0x12] = param_1[0x12] - uVar5" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (= "=") (binary_expression "param_1[0x12] - uVar5" (subscript_expression "param_1[0x12]" (identifier "param_1") ([ "[") (number_literal "0x12") (] "]")) (- "-") (identifier "uVar5"))) (; ";")) (} "}"))) (expression_statement "FUN_002a7cb0(&local_b8);" (call_expression "FUN_002a7cb0(&local_b8)" (identifier "FUN_002a7cb0") (argument_list "(&local_b8)" (( "(") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");" (call_expression "FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" (identifier "FUN_0017c650") (argument_list "("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt")" (( "(") (string_literal ""../../gold/ehframe.cc"" (" """) (string_content "../../gold/ehframe.cc") (" """)) (, ",") (number_literal "0x49e") (, ",") (string_literal ""remove_ehframe_for_plt"" (" """) (string_content "remove_ehframe_for_plt") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: void remove_ehframe_for_plt(Eh_frame * this, Output_data * plt, uchar *
   cie_data, size_t cie_length, uchar * fde_data, size_t fde_length) */

void __thiscall
var_3::type_1::function_1
          (type_1 *this,type_2 *plt,type_3 *var_6,size_t var_7,type_3 *var_10,
          size_t var_11)

{
  bool bVar1;
  type_4 *this_00;
  type_5 *var_13;
  int iVar3;
  type_6 iVar4;
  type_7 *fde;
  type_8 extraout_var;
  int __in_chrg;
  type_9 var_17;
  type_4 *local_c0;
  type_4 cie;
  uint64_t var_16;
  
  cie.personality_name_._M_dataplus._M_p = (type_11)&cie.personality_name_.field_2;
  cie.object_ = (type_10 *)0x0;
  cie.shndx_ = 0;
  cie.input_offset_ = 0;
  cie.fde_encoding_ = '\x1b';
  std::__cxx11::basic_string<char,var_4::char_traits<char>,var_4::allocator<char>var_5>::
  var_1<var_2*>(&cie.personality_name_,"");
  cie.contents_._M_dataplus._M_p = (type_11)&cie.contents_.field_2;
  cie.fdes_.super__Vector_base<var_3::type_7*,var_4::allocator<var_3::type_7*>var_5>._M_impl._M_start =
       (type_11)0x0;
  cie.fdes_.super__Vector_base<var_3::type_7*,var_4::allocator<var_3::type_7*>var_5>._M_impl._M_finish =
       (type_11)0x0;
  cie.fdes_.super__Vector_base<var_3::type_7*,var_4::allocator<var_3::type_7*>var_5>._M_impl._M_end_of_storage =
       (type_11)0x0;
                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */
  std::__cxx11::basic_string<char,var_4::char_traits<char>,var_4::allocator<char>var_5>::
  var_1<var_2*>(&cie.contents_,var_6,var_6 + var_7);
  local_c0 = &cie;
  iVar4 = std::
          _Rb_tree<var_3::type_4*,_gold::type_4*,var_4::_Identity<var_3::type_4*>,_gold::type_1::Cie_less,var_4::allocator<var_3::type_4*>var_5>
          ::var_8(&(this->cie_offsets_)._M_t,&local_c0);
  if ((type_12 *)iVar4._M_node != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)
  {
    this_00 = *(type_4 **)(iVar4._M_node + 1);
                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */
    fde = (type_7 *)var_9(0x38);
    fde->object_ = (type_10 *)0x0;
    bVar1 = this->mappings_are_done_;
    (fde->contents_)._M_dataplus._M_p = (type_11)&(fde->contents_).field_2;
                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */
    std::__cxx11::basic_string<char,var_4::char_traits<char>,var_4::allocator<char>var_5>::
    var_1<var_2*>(&fde->contents_,var_10,var_10 + var_11);
    (fde->u_).from_linker.plt = plt;
    (fde->u_).from_linker.post_map = bVar1;
                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */
    Cie::var_12(this_00,fde);
    __in_chrg = (int)fde;
    if (this->mappings_are_done_ != false) {
      var_13 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
      if (var_13 == var_14::do_addralign) {
        var_16 = (this->super_Output_section_data).addralign_;
      }
      else {
        iVar3 = (*var_13)(this);
        var_16 = var_15(extraout_var,iVar3);
      }
      if (var_16 == 0) {
        var_17 = var_11 + 8;
      }
      else {
        var_17 = var_16 + 7 + var_11 & -var_16;
      }
      this->final_data_size_ = this->final_data_size_ - var_17;
    }
    Cie::~type_4(&cie,__in_chrg);
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_18("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");
}


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

void MASKED(long *param_1,undefined8 param_2,long param_3,long param_4,long param_5,
                 long param_6)

{
  long lVar1;
  long *plVar2;
  undefined8 *puVar3;
  long lVar4;
  ulong uVar5;
  undefined8 *local_c0;
  undefined8 local_b8;
  undefined4 local_b0;
  undefined8 local_a8;
  undefined1 local_a0;
  undefined1 *local_98 [2];
  undefined1 local_88 [16];
  undefined8 local_78;
  undefined8 local_70;
  undefined8 local_68;
  undefined1 *local_60 [2];
  undefined1 local_50 [32];
  
  local_98[0] = local_88;
  local_b8 = 0;
  local_b0 = 0;
  local_a8 = 0;
  local_a0 = 0x1b;
  FUN_001665c0(local_98,"");
  local_60[0] = local_50;
  local_78 = 0;
  local_70 = 0;
  local_68 = 0;
                    /* try { // try from 002a848b to 002a848f has its CatchHandler @ 002a8597 */
  FUN_001665c0(local_60,param_3,param_3 + param_4);
  local_c0 = &local_b8;
  plVar2 = (long *)FUN_002a8d20(param_1 + 8,&local_c0);
  if (plVar2 != param_1 + 9) {
    lVar4 = plVar2[4];
                    /* try { // try from 002a84be to 002a84c2 has its CatchHandler @ 002a858f */
    puVar3 = (undefined8 *)FUN_002d94a0(0x38);
    *puVar3 = 0;
    lVar1 = param_1[0x11];
    puVar3[3] = puVar3 + 5;
                    /* try { // try from 002a84eb to 002a84ef has its CatchHandler @ 002a8587 */
    FUN_001665c0(puVar3 + 3,param_5,param_5 + param_6);
    puVar3[1] = param_2;
    *(char *)(puVar3 + 2) = (char)lVar1;
                    /* try { // try from 002a8503 to 002a8586 has its CatchHandler @ 002a858f */
    FUN_002a8000(lVar4,puVar3);
    if ((char)param_1[0x11] != '\0') {
      if (*(code **)(*param_1 + 0x18) == FUN_00185200) {
        lVar4 = param_1[6];
      }
      else {
        lVar4 = (**(code **)(*param_1 + 0x18))(param_1);
      }
      if (lVar4 == 0) {
        uVar5 = param_6 + 8;
      }
      else {
        uVar5 = lVar4 + 7 + param_6 & -lVar4;
      }
      param_1[0x12] = param_1[0x12] - uVar5;
    }
    FUN_002a7cb0(&local_b8);
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/ehframe.cc",0x49e,"remove_ehframe_for_plt");
}

