
/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* 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;
  Fde *fde;
  int iVar2;
  _func_int_varargs **pp_Var3;
  undefined *puVar4;
  uint uVar5;
  Cie *this_00;
  Cie cie;
  undefined1 *local_30;
  
  puVar4 = PTR__M_construct<char_const*>_00432488;
  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;
  cie.fde_encoding_ = '\x1b';
  cie.object_ = (Relobj *)0x0;
  cie.shndx_ = 0;
  cie.input_offset_ = 0;
  (*(code *)PTR__M_construct<char_const*>_00432488)
            (&cie.personality_name_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);
  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 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */
  (*(code *)puVar4)(&cie.contents_,cie_data,cie_data + cie_length,0);
  std::
  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
  ::find((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>
          *)&local_30,(Cie **)&this->cie_offsets_);
  if ((_Rb_tree_header *)local_30 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {
                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */
    this_00 = *(Cie **)(local_30 + 0x10);
    fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);
    bVar1 = this->mappings_are_done_;
    fde->object_ = (Relobj *)0x0;
    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;
                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */
    (*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0);
    (fde->u_).from_linker.plt = plt;
                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */
    (fde->u_).from_linker.post_map = bVar1;
    Cie::remove_fde(this_00,fde);
    if (this->mappings_are_done_ != false) {
      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;
      uVar5 = fde_length + 8;
      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {
        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;
        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);
      }
      else {
        iVar2 = (*pp_Var3[3])(this);
      }
      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {
        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;
      }
      this->final_data_size_ = this->final_data_size_ - uVar5;
    }
    Cie::~Cie(&cie,(int)fde);
    return;
  }
  puVar4 = PTR_s__0043226c + 0x1dc0;
  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar4,0x49e,PTR_s__0043226c + 0x1f4c);
                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */
  iVar2 = 0x24;
  (*(code *)PTR_operator_delete_004323c0)(cie_data);
  do {
    Cie::~Cie(&cie,iVar2);
    (*(code *)PTR__Unwind_Resume_00432258)(puVar4);
                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58
                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */
  } while( true );
}



/* gold::Eh_frame::remove_ehframe_for_plt(gold::Output_data*, unsigned char const*, unsigned int,
   unsigned char const*, unsigned int) */

void __thiscall
gold::Eh_frame::remove_ehframe_for_plt
          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,
          uint param_5)

{
  Fde FVar1;
  Fde *pFVar2;
  undefined *puVar3;
  uint uVar4;
  Cie *this_00;
  longlong lVar5;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined1 local_74;
  undefined1 *local_70 [2];
  undefined1 auStack_68 [16];
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined1 *local_4c [2];
  undefined1 auStack_44 [16];
  Cie *local_34;
  Eh_frame *local_30 [2];
  
  puVar3 = PTR__M_construct<char_const*>_00432488;
  local_70[0] = auStack_68;
  local_74 = 0x1b;
  local_80 = 0;
  local_7c = 0;
  local_78 = 0;
  (*(code *)PTR__M_construct<char_const*>_00432488)
            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);
  local_4c[0] = auStack_44;
  local_58 = 0;
  local_54 = 0;
  local_50 = 0;
                    /* try { // try from 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */
  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);
  local_34 = (Cie *)&local_80;
  std::
  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>
  ::find((Cie **)local_30);
  if (local_30[0] != this + 0x38) {
                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */
    this_00 = *(Cie **)(local_30[0] + 0x10);
    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);
    FVar1 = *(Fde *)(this + 0x58);
    *(undefined4 *)pFVar2 = 0;
    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;
                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */
    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);
    *(Output_data **)(pFVar2 + 4) = param_1;
                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */
    pFVar2[8] = FVar1;
    Cie::remove_fde(this_00,pFVar2);
    if (this[0x58] != (Eh_frame)0x0) {
      uVar4 = param_5 + 8;
      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {
        lVar5 = *(longlong *)(this + 0x28);
      }
      else {
        lVar5 = (**(code **)(*(int *)this + 0xc))(this);
      }
      if (lVar5 != 0) {
        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;
      }
      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;
    }
    Cie::~Cie((Cie *)&local_80);
    return;
  }
  puVar3 = PTR_DAT_0043226c + 0x1dc0;
  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);
                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */
  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);
  do {
    Cie::~Cie((Cie *)&local_80);
    (*(code *)PTR_FUN_00432258)(puVar3);
                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58
                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */
  } while( true );
}


lui gp,0x1c
addiu gp,gp,0x77b8
addu gp,gp,t9
addiu sp,sp,-0x98
li v0,0x1b
sw s1,0x74(sp)
or s1,a2,zero
sw s7,0x8c(sp)
or s7,a3,zero
sw s3,0x7c(sp)
or a3,zero,zero
sw s4,0x80(sp)
addiu s4,sp,0x30
sw s0,0x70(sp)
sll a3,a3,0x18
lw a2,-0x7f64(gp)
or s0,a0,zero
lw s3,-0x7d48(gp)
addiu a0,sp,0x28
sw s6,0x88(sp)
or s6,a1,zero
addiu a2,a2,0x1018
sw s5,0x84(sp)
sw s2,0x78(sp)
or t9,s3,zero
or a1,a2,zero
sw gp,0x10(sp)
sb v0,0x24(sp)
sw ra,0x94(sp)
sw s8,0x90(sp)
sw zero,0x18(sp)
sw zero,0x1c(sp)
sw zero,0x20(sp)
sw s4,0x28(sp)
lw s5,0xa8(sp)
jalr t9
_lw s2,0xac(sp)
or a3,zero,zero
addiu v0,sp,0x54
sw zero,0x40(sp)
sll a3,a3,0x18
sw zero,0x44(sp)
addu a2,s1,s7
sw zero,0x48(sp)
addiu a0,sp,0x4c
sw v0,0x4c(sp)
or t9,s3,zero
jalr t9
_or a1,s1,zero
lw gp,0x10(sp)
addiu s4,sp,0x18
addiu a2,sp,0x64
addiu a1,s0,0x34
sw s4,0x64(sp)
lw t9,-0x4914(gp)
bal 0x00273848
_addiu a0,sp,0x68
addiu v0,s0,0x38
lw v1,0x68(sp)
beq v1,v0,0x00272c04
_lw gp,0x10(sp)
lw t9,-0x7e94(gp)
li a0,0x24
jalr t9
_lw s8,0x10(v1)
or a3,zero,zero
lbu s7,0x58(s0)
or s1,v0,zero
addiu v0,v0,0x14
sll a3,a3,0x18
sw zero,0x0(s1)
addu a2,s5,s2
sw v0,0xc(s1)
addiu a0,s1,0xc
or t9,s3,zero
jalr t9
_or a1,s5,zero
lw gp,0x10(sp)
or a1,s1,zero
or a0,s8,zero
sw s6,0x4(s1)
lw t9,-0x4910(gp)
bal 0x002724bc
_sb s7,0x8(s1)
lbu v0,0x58(s0)
beq v0,zero,0x00272ba8
_lw gp,0x10(sp)
lw v1,0x0(s0)
lw v0,-0x5b00(gp)
lw t9,0xc(v1)
bne t9,v0,0x00272bf4
_addiu s2,s2,0x8
lw v0,0x28(s0)
lw v1,0x2c(s0)
or v0,v0,v1
bne v0,zero,0x00272be4
_subu v0,zero,v1
lw v1,0x5c(s0)
subu s2,v1,s2
sw s2,0x5c(s0)
lw t9,-0x490c(gp)
bal 0x00272040
_or a0,s4,zero
lw ra,0x94(sp)
lw s8,0x90(sp)
lw s7,0x8c(sp)
lw s6,0x88(sp)
lw s5,0x84(sp)
lw s4,0x80(sp)
lw s3,0x7c(sp)
lw s2,0x78(sp)
lw s1,0x74(sp)
lw s0,0x70(sp)
jr ra
_addiu sp,sp,0x98
addiu s2,s2,-0x1
addu s2,s2,v1
b 0x00272b9c
_and s2,s2,v0
jalr t9
_or a0,s0,zero
b 0x00272b90
_lw gp,0x10(sp)
lw a2,-0x7f64(gp)
li a1,0x49e
lw a0,-0x7f64(gp)
lw t9,-0x7e0c(gp)
addiu a2,a2,0x1f4c
jalr t9
_addiu a0,a0,0x1dc0
lw gp,0x10(sp)
li a1,0x24
or s0,a0,zero
lw t9,-0x7e10(gp)
jalr t9
_or a0,s1,zero
lw gp,0x10(sp)
lw t9,-0x490c(gp)
bal 0x00272040
_or a0,s4,zero
lw gp,0x10(sp)
lw t9,-0x7f78(gp)
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
b 0x00272c3c
_or s0,a0,zero
(translation_unit "/* gold::Eh_frame::remove_ehframe_for_plt(gold::Output_data*, unsigned char const*, unsigned int,\n   unsigned char const*, unsigned int) */\n\nvoid __thiscall\ngold::Eh_frame::remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)\n\n{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    /* try { // try from 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */\n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */\n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );\n}\n\n" comment (function_definition "void __thiscall\ngold::Eh_frame::remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)\n\n{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    /* try { // try from 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */\n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */\n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );\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 *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)" identifier (parameter_list "(Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)" ( (parameter_declaration "Eh_frame *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_data *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uchar *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uchar *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    /* try { // try from 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */\n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */\n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );\n}" { (declaration "Fde FVar1;" type_identifier identifier ;) (declaration "Fde *pFVar2;" type_identifier (pointer_declarator "*pFVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "Cie *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "undefined1 local_74;" type_identifier identifier ;) (declaration "undefined1 *local_70 [2];" type_identifier (pointer_declarator "*local_70 [2]" * (array_declarator "local_70 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_68 [16];" type_identifier (array_declarator "auStack_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined1 *local_4c [2];" type_identifier (pointer_declarator "*local_4c [2]" * (array_declarator "local_4c [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_44 [16];" type_identifier (array_declarator "auStack_44 [16]" identifier [ number_literal ]) ;) (declaration "Cie *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "Eh_frame *local_30 [2];" type_identifier (pointer_declarator "*local_30 [2]" * (array_declarator "local_30 [2]" identifier [ number_literal ])) ;) (expression_statement "puVar3 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar3 = PTR__M_construct<char_const*>_00432488" identifier = (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" identifier < identifier) (ERROR "*" *) > identifier)) ;) (expression_statement "local_70[0] = auStack_68;" (assignment_expression "local_70[0] = auStack_68" (subscript_expression "local_70[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74 = 0x1b;" (assignment_expression "local_74 = 0x1b" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" ( (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "(local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_4c[0] = auStack_44;" (assignment_expression "local_4c[0] = auStack_44" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) comment (expression_statement "(*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);" (call_expression "(*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_4c,param_2,param_2 + param_3,0)" ( identifier , identifier , (binary_expression "param_2 + param_3" identifier + identifier) , number_literal ))) ;) (expression_statement "local_34 = (Cie *)&local_80;" (assignment_expression "local_34 = (Cie *)&local_80" identifier = (cast_expression "(Cie *)&local_80" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_80" & identifier))) ;) (ERROR "std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::" (comma_expression "std::\n  _Rb_tree<gold::Cie*,gold" identifier (ERROR "::\n  _Rb_tree<gold::Cie*" : : (binary_expression "_Rb_tree<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "Cie*,std" identifier * (ERROR "," ,) identifier) : : (binary_expression "_Identity<gold" identifier < identifier) : : (comma_expression "Cie*>,gold" identifier (ERROR "*>" * >) , identifier) : :) (labeled_statement "Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);" statement_identifier (ERROR "::Cie_less,std::allocator<gold::Cie*>>\n  :" : : (comma_expression "Cie_less,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier * >> :) : (expression_statement "find((Cie **)local_30);" (call_expression "find((Cie **)local_30)" identifier (argument_list "((Cie **)local_30)" ( (cast_expression "(Cie **)local_30" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) ))) ;)) (if_statement "if (local_30[0] != this + 0x38) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }" if (parenthesized_expression "(local_30[0] != this + 0x38)" ( (binary_expression "local_30[0] != this + 0x38" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (binary_expression "this + 0x38" identifier + number_literal)) )) (compound_statement "{\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }" { comment (expression_statement "this_00 = *(Cie **)(local_30[0] + 0x10);" (assignment_expression "this_00 = *(Cie **)(local_30[0] + 0x10)" identifier = (pointer_expression "*(Cie **)(local_30[0] + 0x10)" * (cast_expression "(Cie **)(local_30[0] + 0x10)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_30[0] + 0x10)" ( (binary_expression "local_30[0] + 0x10" (subscript_expression "local_30[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);" (assignment_expression "pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" identifier = (cast_expression "(Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" ( (type_descriptor "Fde *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_0043233c)(0x24)" (parenthesized_expression "(*(code *)PTR_operator_new_0043233c)" ( (pointer_expression "*(code *)PTR_operator_new_0043233c" * (cast_expression "(code *)PTR_operator_new_0043233c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x24)" ( number_literal ))))) ;) (expression_statement "FVar1 = *(Fde *)(this + 0x58);" (assignment_expression "FVar1 = *(Fde *)(this + 0x58)" identifier = (pointer_expression "*(Fde *)(this + 0x58)" * (cast_expression "(Fde *)(this + 0x58)" ( (type_descriptor "Fde *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x58)" ( (binary_expression "this + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)pFVar2 = 0;" (assignment_expression "*(undefined4 *)pFVar2 = 0" (pointer_expression "*(undefined4 *)pFVar2" * (cast_expression "(undefined4 *)pFVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;" (assignment_expression "*(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14" (pointer_expression "*(Fde **)(pFVar2 + 0xc)" * (cast_expression "(Fde **)(pFVar2 + 0xc)" ( (type_descriptor "Fde **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pFVar2 + 0xc)" ( (binary_expression "pFVar2 + 0xc" identifier + number_literal) )))) = (binary_expression "pFVar2 + 0x14" identifier + number_literal)) ;) comment (expression_statement "(*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);" (call_expression "(*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pFVar2 + 0xc,param_4,param_4 + param_5,0)" ( (binary_expression "pFVar2 + 0xc" identifier + number_literal) , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal ))) ;) (expression_statement "*(Output_data **)(pFVar2 + 4) = param_1;" (assignment_expression "*(Output_data **)(pFVar2 + 4) = param_1" (pointer_expression "*(Output_data **)(pFVar2 + 4)" * (cast_expression "(Output_data **)(pFVar2 + 4)" ( (type_descriptor "Output_data **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pFVar2 + 4)" ( (binary_expression "pFVar2 + 4" identifier + number_literal) )))) = identifier) ;) comment (expression_statement "pFVar2[8] = FVar1;" (assignment_expression "pFVar2[8] = FVar1" (subscript_expression "pFVar2[8]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "Cie::remove_fde(this_00,pFVar2);" statement_identifier : (ERROR ":" :) (expression_statement "remove_fde(this_00,pFVar2);" (call_expression "remove_fde(this_00,pFVar2)" identifier (argument_list "(this_00,pFVar2)" ( identifier , identifier ))) ;)) (if_statement "if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }" if (parenthesized_expression "(this[0x58] != (Eh_frame)0x0)" ( (binary_expression "this[0x58] != (Eh_frame)0x0" (subscript_expression "this[0x58]" identifier [ number_literal ]) != (cast_expression "(Eh_frame)0x0" ( (type_descriptor "Eh_frame" type_identifier) ) number_literal)) )) (compound_statement "{\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }" { (expression_statement "uVar4 = param_5 + 8;" (assignment_expression "uVar4 = param_5 + 8" identifier = (binary_expression "param_5 + 8" identifier + number_literal)) ;) (if_statement "if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" if (parenthesized_expression "(*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0)" ( (binary_expression "*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0" (pointer_expression "*(code **)(*(int *)this + 0xc)" * (cast_expression "(code **)(*(int *)this + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0xc)" ( (binary_expression "*(int *)this + 0xc" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_addralign_004346d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        lVar5 = *(longlong *)(this + 0x28);\n      }" { (expression_statement "lVar5 = *(longlong *)(this + 0x28);" (assignment_expression "lVar5 = *(longlong *)(this + 0x28)" identifier = (pointer_expression "*(longlong *)(this + 0x28)" * (cast_expression "(longlong *)(this + 0x28)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" else (compound_statement "{\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" { (expression_statement "lVar5 = (**(code **)(*(int *)this + 0xc))(this);" (assignment_expression "lVar5 = (**(code **)(*(int *)this + 0xc))(this)" identifier = (call_expression "(**(code **)(*(int *)this + 0xc))(this)" (parenthesized_expression "(**(code **)(*(int *)this + 0xc))" ( (pointer_expression "**(code **)(*(int *)this + 0xc)" * (pointer_expression "*(code **)(*(int *)this + 0xc)" * (cast_expression "(code **)(*(int *)this + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0xc)" ( (binary_expression "*(int *)this + 0xc" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(this)" ( identifier )))) ;) }))) (if_statement "if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }" { (expression_statement "uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;" (assignment_expression "uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5" identifier = (binary_expression "param_5 + 7 + (int)lVar5 & -(int)lVar5" (binary_expression "param_5 + 7 + (int)lVar5" (binary_expression "param_5 + 7" identifier + number_literal) + (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier)) & (unary_expression "-(int)lVar5" - (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;" (assignment_expression "*(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4" (pointer_expression "*(uint *)(this + 0x5c)" * (cast_expression "(uint *)(this + 0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 0x5c) - uVar4" (pointer_expression "*(int *)(this + 0x5c)" * (cast_expression "(int *)(this + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) )))) - identifier)) ;) })) (labeled_statement "Cie::~Cie((Cie *)&local_80);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie((Cie *)&local_80);" (unary_expression "~Cie((Cie *)&local_80)" ~ (call_expression "Cie((Cie *)&local_80)" identifier (argument_list "((Cie *)&local_80)" ( (cast_expression "(Cie *)&local_80" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_80" & identifier)) )))) ;)) (return_statement "return;" return ;) })) (expression_statement "puVar3 = PTR_DAT_0043226c + 0x1dc0;" (assignment_expression "puVar3 = PTR_DAT_0043226c + 0x1dc0" identifier = (binary_expression "PTR_DAT_0043226c + 0x1dc0" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c)" ( identifier , number_literal , (binary_expression "PTR_DAT_0043226c + 0x1f4c" identifier + number_literal) ))) ;) comment (expression_statement "(*(code *)PTR_operator_delete_004323c0)(param_2,0x24);" (call_expression "(*(code *)PTR_operator_delete_004323c0)(param_2,0x24)" (parenthesized_expression "(*(code *)PTR_operator_delete_004323c0)" ( (pointer_expression "*(code *)PTR_operator_delete_004323c0" * (cast_expression "(code *)PTR_operator_delete_004323c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0x24)" ( identifier , number_literal ))) ;) (do_statement "do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );" do (compound_statement "{\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  }" { (labeled_statement "Cie::~Cie((Cie *)&local_80);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie((Cie *)&local_80);" (unary_expression "~Cie((Cie *)&local_80)" ~ (call_expression "Cie((Cie *)&local_80)" identifier (argument_list "((Cie *)&local_80)" ( (cast_expression "(Cie *)&local_80" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_80" & identifier)) )))) ;)) (expression_statement "(*(code *)PTR_FUN_00432258)(puVar3);" (call_expression "(*(code *)PTR_FUN_00432258)(puVar3)" (parenthesized_expression "(*(code *)PTR_FUN_00432258)" ( (pointer_expression "*(code *)PTR_FUN_00432258" * (cast_expression "(code *)PTR_FUN_00432258" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3)" ( identifier ))) ;) comment }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */\n/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */\n/* 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  Fde *fde;\n  int iVar2;\n  _func_int_varargs **pp_Var3;\n  undefined *puVar4;\n  uint uVar5;\n  Cie *this_00;\n  Cie cie;\n  undefined1 *local_30;\n  \n  puVar4 = PTR__M_construct<char_const*>_00432488;\n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.fde_encoding_ = '\x1b';\n  cie.object_ = (Relobj *)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (&cie.personality_name_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);\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 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */\n  (*(code *)puVar4)(&cie.contents_,cie_data,cie_data + cie_length,0);\n  std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30,(Cie **)&this->cie_offsets_);\n  if ((_Rb_tree_header *)local_30 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30 + 0x10);\n    fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    bVar1 = this->mappings_are_done_;\n    fde->object_ = (Relobj *)0x0;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0);\n    (fde->u_).from_linker.plt = plt;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    (fde->u_).from_linker.post_map = bVar1;\n    Cie::remove_fde(this_00,fde);\n    if (this->mappings_are_done_ != false) {\n      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;\n      uVar5 = fde_length + 8;\n      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }\n      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar5;\n    }\n    Cie::~Cie(&cie,(int)fde);\n    return;\n  }\n  puVar4 = PTR_s__0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar4,0x49e,PTR_s__0043226c + 0x1f4c);\n                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */\n  iVar2 = 0x24;\n  (*(code *)PTR_operator_delete_004323c0)(cie_data);\n  do {\n    Cie::~Cie(&cie,iVar2);\n    (*(code *)PTR__Unwind_Resume_00432258)(puVar4);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );\n}\n\n" comment comment 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  Fde *fde;\n  int iVar2;\n  _func_int_varargs **pp_Var3;\n  undefined *puVar4;\n  uint uVar5;\n  Cie *this_00;\n  Cie cie;\n  undefined1 *local_30;\n  \n  puVar4 = PTR__M_construct<char_const*>_00432488;\n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.fde_encoding_ = '\x1b';\n  cie.object_ = (Relobj *)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (&cie.personality_name_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);\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 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */\n  (*(code *)puVar4)(&cie.contents_,cie_data,cie_data + cie_length,0);\n  std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30,(Cie **)&this->cie_offsets_);\n  if ((_Rb_tree_header *)local_30 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30 + 0x10);\n    fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    bVar1 = this->mappings_are_done_;\n    fde->object_ = (Relobj *)0x0;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0);\n    (fde->u_).from_linker.plt = plt;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    (fde->u_).from_linker.post_map = bVar1;\n    Cie::remove_fde(this_00,fde);\n    if (this->mappings_are_done_ != false) {\n      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;\n      uVar5 = fde_length + 8;\n      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }\n      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar5;\n    }\n    Cie::~Cie(&cie,(int)fde);\n    return;\n  }\n  puVar4 = PTR_s__0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar4,0x49e,PTR_s__0043226c + 0x1f4c);\n                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */\n  iVar2 = 0x24;\n  (*(code *)PTR_operator_delete_004323c0)(cie_data);\n  do {\n    Cie::~Cie(&cie,iVar2);\n    (*(code *)PTR__Unwind_Resume_00432258)(puVar4);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );\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  Fde *fde;\n  int iVar2;\n  _func_int_varargs **pp_Var3;\n  undefined *puVar4;\n  uint uVar5;\n  Cie *this_00;\n  Cie cie;\n  undefined1 *local_30;\n  \n  puVar4 = PTR__M_construct<char_const*>_00432488;\n  cie.personality_name_._M_dataplus._M_p = (pointer)&cie.personality_name_.field_2;\n  cie.fde_encoding_ = '\x1b';\n  cie.object_ = (Relobj *)0x0;\n  cie.shndx_ = 0;\n  cie.input_offset_ = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (&cie.personality_name_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);\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 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */\n  (*(code *)puVar4)(&cie.contents_,cie_data,cie_data + cie_length,0);\n  std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30,(Cie **)&this->cie_offsets_);\n  if ((_Rb_tree_header *)local_30 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30 + 0x10);\n    fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    bVar1 = this->mappings_are_done_;\n    fde->object_ = (Relobj *)0x0;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0);\n    (fde->u_).from_linker.plt = plt;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    (fde->u_).from_linker.post_map = bVar1;\n    Cie::remove_fde(this_00,fde);\n    if (this->mappings_are_done_ != false) {\n      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;\n      uVar5 = fde_length + 8;\n      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }\n      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar5;\n    }\n    Cie::~Cie(&cie,(int)fde);\n    return;\n  }\n  puVar4 = PTR_s__0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar4,0x49e,PTR_s__0043226c + 0x1f4c);\n                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */\n  iVar2 = 0x24;\n  (*(code *)PTR_operator_delete_004323c0)(cie_data);\n  do {\n    Cie::~Cie(&cie,iVar2);\n    (*(code *)PTR__Unwind_Resume_00432258)(puVar4);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "Fde *fde;" type_identifier (pointer_declarator "*fde" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "_func_int_varargs **pp_Var3;" type_identifier (pointer_declarator "**pp_Var3" * (pointer_declarator "*pp_Var3" * identifier)) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "Cie *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Cie cie;" type_identifier identifier ;) (declaration "undefined1 *local_30;" type_identifier (pointer_declarator "*local_30" * identifier) ;) (expression_statement "puVar4 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar4 = PTR__M_construct<char_const*>_00432488" identifier = (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" identifier < identifier) (ERROR "*" *) > 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.fde_encoding_ = '\x1b';" (assignment_expression "cie.fde_encoding_ = '\x1b'" (field_expression "cie.fde_encoding_" identifier . field_identifier) = (char_literal "'\x1b'" ' escape_sequence ')) ;) (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 "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (&cie.personality_name_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (&cie.personality_name_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" ( (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "(&cie.personality_name_,PTR_s__0043226c + 0x1018,PTR_s__0043226c + 0x1018,0)" ( (pointer_expression "&cie.personality_name_" & (field_expression "cie.personality_name_" identifier . field_identifier)) , (binary_expression "PTR_s__0043226c + 0x1018" identifier + number_literal) , (binary_expression "PTR_s__0043226c + 0x1018" identifier + number_literal) , number_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 (expression_statement "(*(code *)puVar4)(&cie.contents_,cie_data,cie_data + cie_length,0);" (call_expression "(*(code *)puVar4)(&cie.contents_,cie_data,cie_data + cie_length,0)" (parenthesized_expression "(*(code *)puVar4)" ( (pointer_expression "*(code *)puVar4" * (cast_expression "(code *)puVar4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&cie.contents_,cie_data,cie_data + cie_length,0)" ( (pointer_expression "&cie.contents_" & (field_expression "cie.contents_" identifier . field_identifier)) , identifier , (binary_expression "cie_data + cie_length" identifier + identifier) , number_literal ))) ;) (ERROR "std::\n  _Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::" (comma_expression "std::\n  _Rb_tree<gold::Cie*,_gold" identifier (ERROR "::\n  _Rb_tree<gold::Cie*" : : (binary_expression "_Rb_tree<gold" identifier < identifier) : : identifier *) , 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((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30,(Cie **)&this->cie_offsets_);" (binary_expression "Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n  ::find((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30,(Cie **)&this->cie_offsets_)" (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((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30,(Cie **)&this->cie_offsets_)" identifier (argument_list "((_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30,(Cie **)&this->cie_offsets_)" ( (binary_expression "(_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)&local_30" (parenthesized_expression "(_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::Cie*>_>\n          *)" ( (ERROR "_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold::Eh_frame::Cie_less,_std::allocator<gold::" (comma_expression "_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold::Cie*>,_gold" (binary_expression "_Rb_tree<gold::Cie*,_gold::Cie*,_std::_Identity<gold" (binary_expression "_Rb_tree<gold::Cie*,_gold::Cie*,_std" (binary_expression "_Rb_tree<gold::Cie*,_gold" (binary_expression "_Rb_tree<gold" identifier < identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::_Identity" : : identifier) < identifier) (ERROR "::Cie*>" : : identifier * >) , identifier) : : identifier : : (comma_expression "Cie_less,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Cie*>_>\n          *" (binary_expression "Cie*>_" identifier * (ERROR ">" >) identifier) > (pointer_expression "*" * identifier)) )) & identifier) , (cast_expression "(Cie **)&this->cie_offsets_" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&this->cie_offsets_" & (field_expression "this->cie_offsets_" identifier -> field_identifier))) )))) ;) (if_statement "if ((_Rb_tree_header *)local_30 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {\n                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30 + 0x10);\n    fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    bVar1 = this->mappings_are_done_;\n    fde->object_ = (Relobj *)0x0;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0);\n    (fde->u_).from_linker.plt = plt;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    (fde->u_).from_linker.post_map = bVar1;\n    Cie::remove_fde(this_00,fde);\n    if (this->mappings_are_done_ != false) {\n      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;\n      uVar5 = fde_length + 8;\n      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }\n      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar5;\n    }\n    Cie::~Cie(&cie,(int)fde);\n    return;\n  }" if (parenthesized_expression "((_Rb_tree_header *)local_30 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)" ( (binary_expression "(_Rb_tree_header *)local_30 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)local_30" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) 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                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */\n    this_00 = *(Cie **)(local_30 + 0x10);\n    fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    bVar1 = this->mappings_are_done_;\n    fde->object_ = (Relobj *)0x0;\n    (fde->contents_)._M_dataplus._M_p = (pointer)&(fde->contents_).field_2;\n                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */\n    (*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0);\n    (fde->u_).from_linker.plt = plt;\n                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */\n    (fde->u_).from_linker.post_map = bVar1;\n    Cie::remove_fde(this_00,fde);\n    if (this->mappings_are_done_ != false) {\n      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;\n      uVar5 = fde_length + 8;\n      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }\n      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar5;\n    }\n    Cie::~Cie(&cie,(int)fde);\n    return;\n  }" { comment (expression_statement "this_00 = *(Cie **)(local_30 + 0x10);" (assignment_expression "this_00 = *(Cie **)(local_30 + 0x10)" identifier = (pointer_expression "*(Cie **)(local_30 + 0x10)" * (cast_expression "(Cie **)(local_30 + 0x10)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_30 + 0x10)" ( (binary_expression "local_30 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);" (assignment_expression "fde = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" identifier = (cast_expression "(Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" ( (type_descriptor "Fde *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_0043233c)(0x24)" (parenthesized_expression "(*(code *)PTR_operator_new_0043233c)" ( (pointer_expression "*(code *)PTR_operator_new_0043233c" * (cast_expression "(code *)PTR_operator_new_0043233c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x24)" ( 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->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 "(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 (expression_statement "(*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0);" (call_expression "(*(code *)puVar4)(&fde->contents_,fde_data,fde_data + fde_length,0)" (parenthesized_expression "(*(code *)puVar4)" ( (pointer_expression "*(code *)puVar4" * (cast_expression "(code *)puVar4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&fde->contents_,fde_data,fde_data + fde_length,0)" ( (pointer_expression "&fde->contents_" & (field_expression "fde->contents_" identifier -> field_identifier)) , identifier , (binary_expression "fde_data + fde_length" identifier + identifier) , number_literal ))) ;) (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) ;) comment (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) ;) (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 ))) ;)) (if_statement "if (this->mappings_are_done_ != false) {\n      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;\n      uVar5 = fde_length + 8;\n      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }\n      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar5;\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      pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;\n      uVar5 = fde_length + 8;\n      if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }\n      if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }\n      this->final_data_size_ = this->final_data_size_ - uVar5;\n    }" { (expression_statement "pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;" (assignment_expression "pp_Var3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data" identifier = (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)) ;) (expression_statement "uVar5 = fde_length + 8;" (assignment_expression "uVar5 = fde_length + 8" identifier = (binary_expression "fde_length + 8" identifier + number_literal)) ;) (if_statement "if (pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0) {\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }\n      else {\n        iVar2 = (*pp_Var3[3])(this);\n      }" if (parenthesized_expression "(pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0)" ( (binary_expression "pp_Var3[3] == (_func_int_varargs *)PTR_do_addralign_004346d0" (subscript_expression "pp_Var3[3]" identifier [ number_literal ]) == (cast_expression "(_func_int_varargs *)PTR_do_addralign_004346d0" ( (type_descriptor "_func_int_varargs *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        iVar2 = *(int *)&(this->super_Output_section_data).addralign_;\n        pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);\n      }" { (expression_statement "iVar2 = *(int *)&(this->super_Output_section_data).addralign_;" (assignment_expression "iVar2 = *(int *)&(this->super_Output_section_data).addralign_" identifier = (pointer_expression "*(int *)&(this->super_Output_section_data).addralign_" * (cast_expression "(int *)&(this->super_Output_section_data).addralign_" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(this->super_Output_section_data).addralign_" & (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))))) ;) (expression_statement "pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4);" (assignment_expression "pp_Var3 = *(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4)" identifier = (pointer_expression "*(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4)" * (cast_expression "(_func_int_varargs ***)((int)&(this->super_Output_section_data).addralign_ + 4)" ( (type_descriptor "_func_int_varargs ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "((int)&(this->super_Output_section_data).addralign_ + 4)" ( (binary_expression "(int)&(this->super_Output_section_data).addralign_ + 4" (cast_expression "(int)&(this->super_Output_section_data).addralign_" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(this->super_Output_section_data).addralign_" & (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))) + number_literal) ))))) ;) }) (else_clause "else {\n        iVar2 = (*pp_Var3[3])(this);\n      }" else (compound_statement "{\n        iVar2 = (*pp_Var3[3])(this);\n      }" { (expression_statement "iVar2 = (*pp_Var3[3])(this);" (assignment_expression "iVar2 = (*pp_Var3[3])(this)" identifier = (call_expression "(*pp_Var3[3])(this)" (parenthesized_expression "(*pp_Var3[3])" ( (pointer_expression "*pp_Var3[3]" * (subscript_expression "pp_Var3[3]" identifier [ number_literal ])) )) (argument_list "(this)" ( identifier )))) ;) }))) (if_statement "if (iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0) {\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }" if (parenthesized_expression "(iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0)" ( (binary_expression "iVar2 != 0 || pp_Var3 != (_func_int_varargs **)0x0" (binary_expression "iVar2 != 0" identifier != number_literal) || (binary_expression "pp_Var3 != (_func_int_varargs **)0x0" identifier != (cast_expression "(_func_int_varargs **)0x0" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal))) )) (compound_statement "{\n        uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;\n      }" { (expression_statement "uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3;" (assignment_expression "uVar5 = fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3" identifier = (binary_expression "fde_length + 7 + (int)pp_Var3 & -(int)pp_Var3" (binary_expression "fde_length + 7 + (int)pp_Var3" (binary_expression "fde_length + 7" identifier + number_literal) + (cast_expression "(int)pp_Var3" ( (type_descriptor "int" primitive_type) ) identifier)) & (unary_expression "-(int)pp_Var3" - (cast_expression "(int)pp_Var3" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "this->final_data_size_ = this->final_data_size_ - uVar5;" (assignment_expression "this->final_data_size_ = this->final_data_size_ - uVar5" (field_expression "this->final_data_size_" identifier -> field_identifier) = (binary_expression "this->final_data_size_ - uVar5" (field_expression "this->final_data_size_" identifier -> field_identifier) - identifier)) ;) })) (labeled_statement "Cie::~Cie(&cie,(int)fde);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie(&cie,(int)fde);" (unary_expression "~Cie(&cie,(int)fde)" ~ (call_expression "Cie(&cie,(int)fde)" identifier (argument_list "(&cie,(int)fde)" ( (pointer_expression "&cie" & identifier) , (cast_expression "(int)fde" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (return_statement "return;" return ;) })) (expression_statement "puVar4 = PTR_s__0043226c + 0x1dc0;" (assignment_expression "puVar4 = PTR_s__0043226c + 0x1dc0" identifier = (binary_expression "PTR_s__0043226c + 0x1dc0" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar4,0x49e,PTR_s__0043226c + 0x1f4c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar4,0x49e,PTR_s__0043226c + 0x1f4c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4,0x49e,PTR_s__0043226c + 0x1f4c)" ( identifier , number_literal , (binary_expression "PTR_s__0043226c + 0x1f4c" identifier + number_literal) ))) ;) comment (expression_statement "iVar2 = 0x24;" (assignment_expression "iVar2 = 0x24" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_operator_delete_004323c0)(cie_data);" (call_expression "(*(code *)PTR_operator_delete_004323c0)(cie_data)" (parenthesized_expression "(*(code *)PTR_operator_delete_004323c0)" ( (pointer_expression "*(code *)PTR_operator_delete_004323c0" * (cast_expression "(code *)PTR_operator_delete_004323c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(cie_data)" ( identifier ))) ;) (do_statement "do {\n    Cie::~Cie(&cie,iVar2);\n    (*(code *)PTR__Unwind_Resume_00432258)(puVar4);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  } while( true );" do (compound_statement "{\n    Cie::~Cie(&cie,iVar2);\n    (*(code *)PTR__Unwind_Resume_00432258)(puVar4);\n                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58\n                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */\n  }" { (labeled_statement "Cie::~Cie(&cie,iVar2);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie(&cie,iVar2);" (unary_expression "~Cie(&cie,iVar2)" ~ (call_expression "Cie(&cie,iVar2)" identifier (argument_list "(&cie,iVar2)" ( (pointer_expression "&cie" & identifier) , identifier )))) ;)) (expression_statement "(*(code *)PTR__Unwind_Resume_00432258)(puVar4);" (call_expression "(*(code *)PTR__Unwind_Resume_00432258)(puVar4)" (parenthesized_expression "(*(code *)PTR__Unwind_Resume_00432258)" ( (pointer_expression "*(code *)PTR__Unwind_Resume_00432258" * (cast_expression "(code *)PTR__Unwind_Resume_00432258" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar4)" ( identifier ))) ;) comment }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void __thiscall\ngold::Eh_frame::remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)\n\n{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    \n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    \n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  } while( true );\n}\n\n" (function_definition "void __thiscall\ngold::Eh_frame::remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)\n\n{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    \n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    \n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  } while( true );\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 *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)" identifier (parameter_list "(Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)" ( (parameter_declaration "Eh_frame *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_data *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uchar *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "uchar *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "uint param_5" type_identifier identifier) ))) (compound_statement "{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    \n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    \n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  } while( true );\n}" { (declaration "Fde FVar1;" type_identifier identifier ;) (declaration "Fde *pFVar2;" type_identifier (pointer_declarator "*pFVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "Cie *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "longlong lVar5;" type_identifier identifier ;) (declaration "undefined4 local_80;" type_identifier identifier ;) (declaration "undefined4 local_7c;" type_identifier identifier ;) (declaration "undefined4 local_78;" type_identifier identifier ;) (declaration "undefined1 local_74;" type_identifier identifier ;) (declaration "undefined1 *local_70 [2];" type_identifier (pointer_declarator "*local_70 [2]" * (array_declarator "local_70 [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_68 [16];" type_identifier (array_declarator "auStack_68 [16]" identifier [ number_literal ]) ;) (declaration "undefined4 local_58;" type_identifier identifier ;) (declaration "undefined4 local_54;" type_identifier identifier ;) (declaration "undefined4 local_50;" type_identifier identifier ;) (declaration "undefined1 *local_4c [2];" type_identifier (pointer_declarator "*local_4c [2]" * (array_declarator "local_4c [2]" identifier [ number_literal ])) ;) (declaration "undefined1 auStack_44 [16];" type_identifier (array_declarator "auStack_44 [16]" identifier [ number_literal ]) ;) (declaration "Cie *local_34;" type_identifier (pointer_declarator "*local_34" * identifier) ;) (declaration "Eh_frame *local_30 [2];" type_identifier (pointer_declarator "*local_30 [2]" * (array_declarator "local_30 [2]" identifier [ number_literal ])) ;) (expression_statement "puVar3 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar3 = PTR__M_construct<char_const*>_00432488" identifier = (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" identifier < identifier) (ERROR "*" *) > identifier)) ;) (expression_statement "local_70[0] = auStack_68;" (assignment_expression "local_70[0] = auStack_68" (subscript_expression "local_70[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_74 = 0x1b;" (assignment_expression "local_74 = 0x1b" identifier = number_literal) ;) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" identifier = number_literal) ;) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" identifier = number_literal) ;) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" ( (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" * (cast_expression "(code *)PTR__M_construct" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) < identifier) (ERROR "*" *) > identifier) )) (argument_list "(local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" ( identifier , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , (binary_expression "PTR_DAT_0043226c + 0x1018" identifier + number_literal) , number_literal ))) ;) (expression_statement "local_4c[0] = auStack_44;" (assignment_expression "local_4c[0] = auStack_44" (subscript_expression "local_4c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" identifier = number_literal) ;) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);" (call_expression "(*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_4c,param_2,param_2 + param_3,0)" ( identifier , identifier , (binary_expression "param_2 + param_3" identifier + identifier) , number_literal ))) ;) (expression_statement "local_34 = (Cie *)&local_80;" (assignment_expression "local_34 = (Cie *)&local_80" identifier = (cast_expression "(Cie *)&local_80" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_80" & identifier))) ;) (ERROR "std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::" (comma_expression "std::\n  _Rb_tree<gold::Cie*,gold" identifier (ERROR "::\n  _Rb_tree<gold::Cie*" : : (binary_expression "_Rb_tree<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "Cie*,std" identifier * (ERROR "," ,) identifier) : : (binary_expression "_Identity<gold" identifier < identifier) : : (comma_expression "Cie*>,gold" identifier (ERROR "*>" * >) , identifier) : :) (labeled_statement "Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);" statement_identifier (ERROR "::Cie_less,std::allocator<gold::Cie*>>\n  :" : : (comma_expression "Cie_less,std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier * >> :) : (expression_statement "find((Cie **)local_30);" (call_expression "find((Cie **)local_30)" identifier (argument_list "((Cie **)local_30)" ( (cast_expression "(Cie **)local_30" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) ))) ;)) (if_statement "if (local_30[0] != this + 0x38) {\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }" if (parenthesized_expression "(local_30[0] != this + 0x38)" ( (binary_expression "local_30[0] != this + 0x38" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (binary_expression "this + 0x38" identifier + number_literal)) )) (compound_statement "{\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }" { (expression_statement "this_00 = *(Cie **)(local_30[0] + 0x10);" (assignment_expression "this_00 = *(Cie **)(local_30[0] + 0x10)" identifier = (pointer_expression "*(Cie **)(local_30[0] + 0x10)" * (cast_expression "(Cie **)(local_30[0] + 0x10)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_30[0] + 0x10)" ( (binary_expression "local_30[0] + 0x10" (subscript_expression "local_30[0]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);" (assignment_expression "pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" identifier = (cast_expression "(Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" ( (type_descriptor "Fde *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_operator_new_0043233c)(0x24)" (parenthesized_expression "(*(code *)PTR_operator_new_0043233c)" ( (pointer_expression "*(code *)PTR_operator_new_0043233c" * (cast_expression "(code *)PTR_operator_new_0043233c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x24)" ( number_literal ))))) ;) (expression_statement "FVar1 = *(Fde *)(this + 0x58);" (assignment_expression "FVar1 = *(Fde *)(this + 0x58)" identifier = (pointer_expression "*(Fde *)(this + 0x58)" * (cast_expression "(Fde *)(this + 0x58)" ( (type_descriptor "Fde *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x58)" ( (binary_expression "this + 0x58" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)pFVar2 = 0;" (assignment_expression "*(undefined4 *)pFVar2 = 0" (pointer_expression "*(undefined4 *)pFVar2" * (cast_expression "(undefined4 *)pFVar2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;" (assignment_expression "*(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14" (pointer_expression "*(Fde **)(pFVar2 + 0xc)" * (cast_expression "(Fde **)(pFVar2 + 0xc)" ( (type_descriptor "Fde **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pFVar2 + 0xc)" ( (binary_expression "pFVar2 + 0xc" identifier + number_literal) )))) = (binary_expression "pFVar2 + 0x14" identifier + number_literal)) ;) (expression_statement "(*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);" (call_expression "(*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0)" (parenthesized_expression "(*(code *)puVar3)" ( (pointer_expression "*(code *)puVar3" * (cast_expression "(code *)puVar3" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pFVar2 + 0xc,param_4,param_4 + param_5,0)" ( (binary_expression "pFVar2 + 0xc" identifier + number_literal) , identifier , (binary_expression "param_4 + param_5" identifier + identifier) , number_literal ))) ;) (expression_statement "*(Output_data **)(pFVar2 + 4) = param_1;" (assignment_expression "*(Output_data **)(pFVar2 + 4) = param_1" (pointer_expression "*(Output_data **)(pFVar2 + 4)" * (cast_expression "(Output_data **)(pFVar2 + 4)" ( (type_descriptor "Output_data **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pFVar2 + 4)" ( (binary_expression "pFVar2 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "pFVar2[8] = FVar1;" (assignment_expression "pFVar2[8] = FVar1" (subscript_expression "pFVar2[8]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "Cie::remove_fde(this_00,pFVar2);" statement_identifier : (ERROR ":" :) (expression_statement "remove_fde(this_00,pFVar2);" (call_expression "remove_fde(this_00,pFVar2)" identifier (argument_list "(this_00,pFVar2)" ( identifier , identifier ))) ;)) (if_statement "if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }" if (parenthesized_expression "(this[0x58] != (Eh_frame)0x0)" ( (binary_expression "this[0x58] != (Eh_frame)0x0" (subscript_expression "this[0x58]" identifier [ number_literal ]) != (cast_expression "(Eh_frame)0x0" ( (type_descriptor "Eh_frame" type_identifier) ) number_literal)) )) (compound_statement "{\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }" { (expression_statement "uVar4 = param_5 + 8;" (assignment_expression "uVar4 = param_5 + 8" identifier = (binary_expression "param_5 + 8" identifier + number_literal)) ;) (if_statement "if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" if (parenthesized_expression "(*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0)" ( (binary_expression "*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0" (pointer_expression "*(code **)(*(int *)this + 0xc)" * (cast_expression "(code **)(*(int *)this + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0xc)" ( (binary_expression "*(int *)this + 0xc" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) == (cast_expression "(code *)PTR_do_addralign_004346d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n        lVar5 = *(longlong *)(this + 0x28);\n      }" { (expression_statement "lVar5 = *(longlong *)(this + 0x28);" (assignment_expression "lVar5 = *(longlong *)(this + 0x28)" identifier = (pointer_expression "*(longlong *)(this + 0x28)" * (cast_expression "(longlong *)(this + 0x28)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x28)" ( (binary_expression "this + 0x28" identifier + number_literal) ))))) ;) }) (else_clause "else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" else (compound_statement "{\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" { (expression_statement "lVar5 = (**(code **)(*(int *)this + 0xc))(this);" (assignment_expression "lVar5 = (**(code **)(*(int *)this + 0xc))(this)" identifier = (call_expression "(**(code **)(*(int *)this + 0xc))(this)" (parenthesized_expression "(**(code **)(*(int *)this + 0xc))" ( (pointer_expression "**(code **)(*(int *)this + 0xc)" * (pointer_expression "*(code **)(*(int *)this + 0xc)" * (cast_expression "(code **)(*(int *)this + 0xc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)this + 0xc)" ( (binary_expression "*(int *)this + 0xc" (pointer_expression "*(int *)this" * (cast_expression "(int *)this" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) )) (argument_list "(this)" ( identifier )))) ;) }))) (if_statement "if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }" { (expression_statement "uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;" (assignment_expression "uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5" identifier = (binary_expression "param_5 + 7 + (int)lVar5 & -(int)lVar5" (binary_expression "param_5 + 7 + (int)lVar5" (binary_expression "param_5 + 7" identifier + number_literal) + (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier)) & (unary_expression "-(int)lVar5" - (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "*(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;" (assignment_expression "*(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4" (pointer_expression "*(uint *)(this + 0x5c)" * (cast_expression "(uint *)(this + 0x5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) )))) = (binary_expression "*(int *)(this + 0x5c) - uVar4" (pointer_expression "*(int *)(this + 0x5c)" * (cast_expression "(int *)(this + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(this + 0x5c)" ( (binary_expression "this + 0x5c" identifier + number_literal) )))) - identifier)) ;) })) (labeled_statement "Cie::~Cie((Cie *)&local_80);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie((Cie *)&local_80);" (unary_expression "~Cie((Cie *)&local_80)" ~ (call_expression "Cie((Cie *)&local_80)" identifier (argument_list "((Cie *)&local_80)" ( (cast_expression "(Cie *)&local_80" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_80" & identifier)) )))) ;)) (return_statement "return;" return ;) })) (expression_statement "puVar3 = PTR_DAT_0043226c + 0x1dc0;" (assignment_expression "puVar3 = PTR_DAT_0043226c + 0x1dc0" identifier = (binary_expression "PTR_DAT_0043226c + 0x1dc0" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" ( (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" * (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c)" ( identifier , number_literal , (binary_expression "PTR_DAT_0043226c + 0x1f4c" identifier + number_literal) ))) ;) (expression_statement "(*(code *)PTR_operator_delete_004323c0)(param_2,0x24);" (call_expression "(*(code *)PTR_operator_delete_004323c0)(param_2,0x24)" (parenthesized_expression "(*(code *)PTR_operator_delete_004323c0)" ( (pointer_expression "*(code *)PTR_operator_delete_004323c0" * (cast_expression "(code *)PTR_operator_delete_004323c0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,0x24)" ( identifier , number_literal ))) ;) (do_statement "do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  } while( true );" do (compound_statement "{\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  }" { (labeled_statement "Cie::~Cie((Cie *)&local_80);" statement_identifier : (ERROR ":" :) (expression_statement "~Cie((Cie *)&local_80);" (unary_expression "~Cie((Cie *)&local_80)" ~ (call_expression "Cie((Cie *)&local_80)" identifier (argument_list "((Cie *)&local_80)" ( (cast_expression "(Cie *)&local_80" ( (type_descriptor "Cie *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_80" & identifier)) )))) ;)) (expression_statement "(*(code *)PTR_FUN_00432258)(puVar3);" (call_expression "(*(code *)PTR_FUN_00432258)(puVar3)" (parenthesized_expression "(*(code *)PTR_FUN_00432258)" ( (pointer_expression "*(code *)PTR_FUN_00432258" * (cast_expression "(code *)PTR_FUN_00432258" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar3)" ( identifier ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (ms_call_modifier __thiscall) (ERROR IDENT : : IDENT : :) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE 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 ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT < IDENT) (ERROR *) > IDENT)) ;) (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 (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) < IDENT) (ERROR *) > IDENT) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , 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 (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + IDENT) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (ERROR (comma_expression IDENT (ERROR : : (binary_expression IDENT < IDENT) : : IDENT *) , IDENT) : : (binary_expression IDENT * (ERROR ,) IDENT) : : (binary_expression IDENT < IDENT) : : (comma_expression IDENT (ERROR * >) , IDENT) : :) (labeled_statement statement_identifier (ERROR : : (comma_expression IDENT , IDENT) : : (binary_expression IDENT < IDENT) : : IDENT * >> :) : (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT) ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , IDENT , (binary_expression IDENT + IDENT) , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (ERROR :) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (cast_expression ( (type_descriptor TYPE) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) ))))) )) (argument_list ( IDENT )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) & (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - IDENT)) ;) })) (labeled_statement statement_identifier : (ERROR :) (expression_statement (unary_expression ~ (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) )))) ;)) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT ))) ;) (do_statement do (compound_statement { (labeled_statement statement_identifier : (ERROR :) (expression_statement (unary_expression ~ (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT)) )))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void __thiscall\ngold::Eh_frame::remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)\n\n{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    \n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    \n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  } while( true );\n}" (primitive_type "void") (ms_call_modifier "__thiscall" (__thiscall "__thiscall")) (ERROR "gold::Eh_frame::" (identifier "gold") (: ":") (: ":") (identifier "Eh_frame") (: ":") (: ":")) (function_declarator "remove_ehframe_for_plt\n          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)" (identifier "remove_ehframe_for_plt") (parameter_list "(Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,\n          uint param_5)" (( "(") (parameter_declaration "Eh_frame *this" (type_identifier "Eh_frame") (pointer_declarator "*this" (* "*") (identifier "this"))) (, ",") (parameter_declaration "Output_data *param_1" (type_identifier "Output_data") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uchar *param_2" (type_identifier "uchar") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "uchar *param_4" (type_identifier "uchar") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "uint param_5" (type_identifier "uint") (identifier "param_5")) () ")"))) (compound_statement "{\n  Fde FVar1;\n  Fde *pFVar2;\n  undefined *puVar3;\n  uint uVar4;\n  Cie *this_00;\n  longlong lVar5;\n  undefined4 local_80;\n  undefined4 local_7c;\n  undefined4 local_78;\n  undefined1 local_74;\n  undefined1 *local_70 [2];\n  undefined1 auStack_68 [16];\n  undefined4 local_58;\n  undefined4 local_54;\n  undefined4 local_50;\n  undefined1 *local_4c [2];\n  undefined1 auStack_44 [16];\n  Cie *local_34;\n  Eh_frame *local_30 [2];\n  \n  puVar3 = PTR__M_construct<char_const*>_00432488;\n  local_70[0] = auStack_68;\n  local_74 = 0x1b;\n  local_80 = 0;\n  local_7c = 0;\n  local_78 = 0;\n  (*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);\n  local_4c[0] = auStack_44;\n  local_58 = 0;\n  local_54 = 0;\n  local_50 = 0;\n                    \n  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);\n  local_34 = (Cie *)&local_80;\n  std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);\n  if (local_30[0] != this + 0x38) {\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }\n  puVar3 = PTR_DAT_0043226c + 0x1dc0;\n  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);\n                    \n  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);\n  do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  } while( true );\n}" ({ "{") (declaration "Fde FVar1;" (type_identifier "Fde") (identifier "FVar1") (; ";")) (declaration "Fde *pFVar2;" (type_identifier "Fde") (pointer_declarator "*pFVar2" (* "*") (identifier "pFVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "Cie *this_00;" (type_identifier "Cie") (pointer_declarator "*this_00" (* "*") (identifier "this_00")) (; ";")) (declaration "longlong lVar5;" (type_identifier "longlong") (identifier "lVar5") (; ";")) (declaration "undefined4 local_80;" (type_identifier "undefined4") (identifier "local_80") (; ";")) (declaration "undefined4 local_7c;" (type_identifier "undefined4") (identifier "local_7c") (; ";")) (declaration "undefined4 local_78;" (type_identifier "undefined4") (identifier "local_78") (; ";")) (declaration "undefined1 local_74;" (type_identifier "undefined1") (identifier "local_74") (; ";")) (declaration "undefined1 *local_70 [2];" (type_identifier "undefined1") (pointer_declarator "*local_70 [2]" (* "*") (array_declarator "local_70 [2]" (identifier "local_70") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 auStack_68 [16];" (type_identifier "undefined1") (array_declarator "auStack_68 [16]" (identifier "auStack_68") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined4 local_58;" (type_identifier "undefined4") (identifier "local_58") (; ";")) (declaration "undefined4 local_54;" (type_identifier "undefined4") (identifier "local_54") (; ";")) (declaration "undefined4 local_50;" (type_identifier "undefined4") (identifier "local_50") (; ";")) (declaration "undefined1 *local_4c [2];" (type_identifier "undefined1") (pointer_declarator "*local_4c [2]" (* "*") (array_declarator "local_4c [2]" (identifier "local_4c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined1 auStack_44 [16];" (type_identifier "undefined1") (array_declarator "auStack_44 [16]" (identifier "auStack_44") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "Cie *local_34;" (type_identifier "Cie") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "Eh_frame *local_30 [2];" (type_identifier "Eh_frame") (pointer_declarator "*local_30 [2]" (* "*") (array_declarator "local_30 [2]" (identifier "local_30") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar3 = PTR__M_construct<char_const*>_00432488;" (assignment_expression "puVar3 = PTR__M_construct<char_const*>_00432488" (identifier "puVar3") (= "=") (binary_expression "PTR__M_construct<char_const*>_00432488" (binary_expression "PTR__M_construct<char_const" (identifier "PTR__M_construct") (< "<") (identifier "char_const")) (ERROR "*" (* "*")) (> ">") (identifier "_00432488"))) (; ";")) (expression_statement "local_70[0] = auStack_68;" (assignment_expression "local_70[0] = auStack_68" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "auStack_68")) (; ";")) (expression_statement "local_74 = 0x1b;" (assignment_expression "local_74 = 0x1b" (identifier "local_74") (= "=") (number_literal "0x1b")) (; ";")) (expression_statement "local_80 = 0;" (assignment_expression "local_80 = 0" (identifier "local_80") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_7c = 0;" (assignment_expression "local_7c = 0" (identifier "local_7c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);" (call_expression "(*(code *)PTR__M_construct<char_const*>_00432488)\n            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (parenthesized_expression "(*(code *)PTR__M_construct<char_const*>_00432488)" (( "(") (binary_expression "*(code *)PTR__M_construct<char_const*>_00432488" (binary_expression "*(code *)PTR__M_construct<char_const" (pointer_expression "*(code *)PTR__M_construct" (* "*") (cast_expression "(code *)PTR__M_construct" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR__M_construct"))) (< "<") (identifier "char_const")) (ERROR "*" (* "*")) (> ">") (identifier "_00432488")) () ")")) (argument_list "(local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0)" (( "(") (identifier "local_70") (, ",") (binary_expression "PTR_DAT_0043226c + 0x1018" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x1018")) (, ",") (binary_expression "PTR_DAT_0043226c + 0x1018" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x1018")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_4c[0] = auStack_44;" (assignment_expression "local_4c[0] = auStack_44" (subscript_expression "local_4c[0]" (identifier "local_4c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "auStack_44")) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_54 = 0;" (assignment_expression "local_54 = 0" (identifier "local_54") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);" (call_expression "(*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0)" (parenthesized_expression "(*(code *)puVar3)" (( "(") (pointer_expression "*(code *)puVar3" (* "*") (cast_expression "(code *)puVar3" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")")) (argument_list "(local_4c,param_2,param_2 + param_3,0)" (( "(") (identifier "local_4c") (, ",") (identifier "param_2") (, ",") (binary_expression "param_2 + param_3" (identifier "param_2") (+ "+") (identifier "param_3")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "local_34 = (Cie *)&local_80;" (assignment_expression "local_34 = (Cie *)&local_80" (identifier "local_34") (= "=") (cast_expression "(Cie *)&local_80" (( "(") (type_descriptor "Cie *" (type_identifier "Cie") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_80" (& "&") (identifier "local_80")))) (; ";")) (ERROR "std::\n  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::" (comma_expression "std::\n  _Rb_tree<gold::Cie*,gold" (identifier "std") (ERROR "::\n  _Rb_tree<gold::Cie*" (: ":") (: ":") (binary_expression "_Rb_tree<gold" (identifier "_Rb_tree") (< "<") (identifier "gold")) (: ":") (: ":") (identifier "Cie") (* "*")) (, ",") (identifier "gold")) (: ":") (: ":") (binary_expression "Cie*,std" (identifier "Cie") (* "*") (ERROR "," (, ",")) (identifier "std")) (: ":") (: ":") (binary_expression "_Identity<gold" (identifier "_Identity") (< "<") (identifier "gold")) (: ":") (: ":") (comma_expression "Cie*>,gold" (identifier "Cie") (ERROR "*>" (* "*") (> ">")) (, ",") (identifier "gold")) (: ":") (: ":")) (labeled_statement "Eh_frame::Cie_less,std::allocator<gold::Cie*>>\n  ::find((Cie **)local_30);" (statement_identifier "Eh_frame") (ERROR "::Cie_less,std::allocator<gold::Cie*>>\n  :" (: ":") (: ":") (comma_expression "Cie_less,std" (identifier "Cie_less") (, ",") (identifier "std")) (: ":") (: ":") (binary_expression "allocator<gold" (identifier "allocator") (< "<") (identifier "gold")) (: ":") (: ":") (identifier "Cie") (* "*") (>> ">>") (: ":")) (: ":") (expression_statement "find((Cie **)local_30);" (call_expression "find((Cie **)local_30)" (identifier "find") (argument_list "((Cie **)local_30)" (( "(") (cast_expression "(Cie **)local_30" (( "(") (type_descriptor "Cie **" (type_identifier "Cie") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_30")) () ")"))) (; ";"))) (if_statement "if (local_30[0] != this + 0x38) {\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }" (if "if") (parenthesized_expression "(local_30[0] != this + 0x38)" (( "(") (binary_expression "local_30[0] != this + 0x38" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (!= "!=") (binary_expression "this + 0x38" (identifier "this") (+ "+") (number_literal "0x38"))) () ")")) (compound_statement "{\n                    \n    this_00 = *(Cie **)(local_30[0] + 0x10);\n    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);\n    FVar1 = *(Fde *)(this + 0x58);\n    *(undefined4 *)pFVar2 = 0;\n    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;\n                    \n    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);\n    *(Output_data **)(pFVar2 + 4) = param_1;\n                    \n    pFVar2[8] = FVar1;\n    Cie::remove_fde(this_00,pFVar2);\n    if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }\n    Cie::~Cie((Cie *)&local_80);\n    return;\n  }" ({ "{") (expression_statement "this_00 = *(Cie **)(local_30[0] + 0x10);" (assignment_expression "this_00 = *(Cie **)(local_30[0] + 0x10)" (identifier "this_00") (= "=") (pointer_expression "*(Cie **)(local_30[0] + 0x10)" (* "*") (cast_expression "(Cie **)(local_30[0] + 0x10)" (( "(") (type_descriptor "Cie **" (type_identifier "Cie") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_30[0] + 0x10)" (( "(") (binary_expression "local_30[0] + 0x10" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);" (assignment_expression "pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" (identifier "pFVar2") (= "=") (cast_expression "(Fde *)(*(code *)PTR_operator_new_0043233c)(0x24)" (( "(") (type_descriptor "Fde *" (type_identifier "Fde") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_operator_new_0043233c)(0x24)" (parenthesized_expression "(*(code *)PTR_operator_new_0043233c)" (( "(") (pointer_expression "*(code *)PTR_operator_new_0043233c" (* "*") (cast_expression "(code *)PTR_operator_new_0043233c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_new_0043233c"))) () ")")) (argument_list "(0x24)" (( "(") (number_literal "0x24") () ")"))))) (; ";")) (expression_statement "FVar1 = *(Fde *)(this + 0x58);" (assignment_expression "FVar1 = *(Fde *)(this + 0x58)" (identifier "FVar1") (= "=") (pointer_expression "*(Fde *)(this + 0x58)" (* "*") (cast_expression "(Fde *)(this + 0x58)" (( "(") (type_descriptor "Fde *" (type_identifier "Fde") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x58)" (( "(") (binary_expression "this + 0x58" (identifier "this") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)pFVar2 = 0;" (assignment_expression "*(undefined4 *)pFVar2 = 0" (pointer_expression "*(undefined4 *)pFVar2" (* "*") (cast_expression "(undefined4 *)pFVar2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pFVar2"))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;" (assignment_expression "*(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14" (pointer_expression "*(Fde **)(pFVar2 + 0xc)" (* "*") (cast_expression "(Fde **)(pFVar2 + 0xc)" (( "(") (type_descriptor "Fde **" (type_identifier "Fde") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pFVar2 + 0xc)" (( "(") (binary_expression "pFVar2 + 0xc" (identifier "pFVar2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pFVar2 + 0x14" (identifier "pFVar2") (+ "+") (number_literal "0x14"))) (; ";")) (expression_statement "(*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);" (call_expression "(*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0)" (parenthesized_expression "(*(code *)puVar3)" (( "(") (pointer_expression "*(code *)puVar3" (* "*") (cast_expression "(code *)puVar3" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3"))) () ")")) (argument_list "(pFVar2 + 0xc,param_4,param_4 + param_5,0)" (( "(") (binary_expression "pFVar2 + 0xc" (identifier "pFVar2") (+ "+") (number_literal "0xc")) (, ",") (identifier "param_4") (, ",") (binary_expression "param_4 + param_5" (identifier "param_4") (+ "+") (identifier "param_5")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*(Output_data **)(pFVar2 + 4) = param_1;" (assignment_expression "*(Output_data **)(pFVar2 + 4) = param_1" (pointer_expression "*(Output_data **)(pFVar2 + 4)" (* "*") (cast_expression "(Output_data **)(pFVar2 + 4)" (( "(") (type_descriptor "Output_data **" (type_identifier "Output_data") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pFVar2 + 4)" (( "(") (binary_expression "pFVar2 + 4" (identifier "pFVar2") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "pFVar2[8] = FVar1;" (assignment_expression "pFVar2[8] = FVar1" (subscript_expression "pFVar2[8]" (identifier "pFVar2") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "FVar1")) (; ";")) (labeled_statement "Cie::remove_fde(this_00,pFVar2);" (statement_identifier "Cie") (: ":") (ERROR ":" (: ":")) (expression_statement "remove_fde(this_00,pFVar2);" (call_expression "remove_fde(this_00,pFVar2)" (identifier "remove_fde") (argument_list "(this_00,pFVar2)" (( "(") (identifier "this_00") (, ",") (identifier "pFVar2") () ")"))) (; ";"))) (if_statement "if (this[0x58] != (Eh_frame)0x0) {\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }" (if "if") (parenthesized_expression "(this[0x58] != (Eh_frame)0x0)" (( "(") (binary_expression "this[0x58] != (Eh_frame)0x0" (subscript_expression "this[0x58]" (identifier "this") ([ "[") (number_literal "0x58") (] "]")) (!= "!=") (cast_expression "(Eh_frame)0x0" (( "(") (type_descriptor "Eh_frame" (type_identifier "Eh_frame")) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar4 = param_5 + 8;\n      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }\n      if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }\n      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;\n    }" ({ "{") (expression_statement "uVar4 = param_5 + 8;" (assignment_expression "uVar4 = param_5 + 8" (identifier "uVar4") (= "=") (binary_expression "param_5 + 8" (identifier "param_5") (+ "+") (number_literal "8"))) (; ";")) (if_statement "if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {\n        lVar5 = *(longlong *)(this + 0x28);\n      }\n      else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" (if "if") (parenthesized_expression "(*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0)" (( "(") (binary_expression "*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0" (pointer_expression "*(code **)(*(int *)this + 0xc)" (* "*") (cast_expression "(code **)(*(int *)this + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)this + 0xc)" (( "(") (binary_expression "*(int *)this + 0xc" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (cast_expression "(code *)PTR_do_addralign_004346d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_addralign_004346d0"))) () ")")) (compound_statement "{\n        lVar5 = *(longlong *)(this + 0x28);\n      }" ({ "{") (expression_statement "lVar5 = *(longlong *)(this + 0x28);" (assignment_expression "lVar5 = *(longlong *)(this + 0x28)" (identifier "lVar5") (= "=") (pointer_expression "*(longlong *)(this + 0x28)" (* "*") (cast_expression "(longlong *)(this + 0x28)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x28)" (( "(") (binary_expression "this + 0x28" (identifier "this") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" (else "else") (compound_statement "{\n        lVar5 = (**(code **)(*(int *)this + 0xc))(this);\n      }" ({ "{") (expression_statement "lVar5 = (**(code **)(*(int *)this + 0xc))(this);" (assignment_expression "lVar5 = (**(code **)(*(int *)this + 0xc))(this)" (identifier "lVar5") (= "=") (call_expression "(**(code **)(*(int *)this + 0xc))(this)" (parenthesized_expression "(**(code **)(*(int *)this + 0xc))" (( "(") (pointer_expression "**(code **)(*(int *)this + 0xc)" (* "*") (pointer_expression "*(code **)(*(int *)this + 0xc)" (* "*") (cast_expression "(code **)(*(int *)this + 0xc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)this + 0xc)" (( "(") (binary_expression "*(int *)this + 0xc" (pointer_expression "*(int *)this" (* "*") (cast_expression "(int *)this" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "this"))) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (argument_list "(this)" (( "(") (identifier "this") () ")")))) (; ";")) (} "}")))) (if_statement "if (lVar5 != 0) {\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }" (if "if") (parenthesized_expression "(lVar5 != 0)" (( "(") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;\n      }" ({ "{") (expression_statement "uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;" (assignment_expression "uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5" (identifier "uVar4") (= "=") (binary_expression "param_5 + 7 + (int)lVar5 & -(int)lVar5" (binary_expression "param_5 + 7 + (int)lVar5" (binary_expression "param_5 + 7" (identifier "param_5") (+ "+") (number_literal "7")) (+ "+") (cast_expression "(int)lVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar5"))) (& "&") (unary_expression "-(int)lVar5" (- "-") (cast_expression "(int)lVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar5"))))) (; ";")) (} "}"))) (expression_statement "*(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;" (assignment_expression "*(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4" (pointer_expression "*(uint *)(this + 0x5c)" (* "*") (cast_expression "(uint *)(this + 0x5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x5c)" (( "(") (binary_expression "this + 0x5c" (identifier "this") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (binary_expression "*(int *)(this + 0x5c) - uVar4" (pointer_expression "*(int *)(this + 0x5c)" (* "*") (cast_expression "(int *)(this + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(this + 0x5c)" (( "(") (binary_expression "this + 0x5c" (identifier "this") (+ "+") (number_literal "0x5c")) () ")")))) (- "-") (identifier "uVar4"))) (; ";")) (} "}"))) (labeled_statement "Cie::~Cie((Cie *)&local_80);" (statement_identifier "Cie") (: ":") (ERROR ":" (: ":")) (expression_statement "~Cie((Cie *)&local_80);" (unary_expression "~Cie((Cie *)&local_80)" (~ "~") (call_expression "Cie((Cie *)&local_80)" (identifier "Cie") (argument_list "((Cie *)&local_80)" (( "(") (cast_expression "(Cie *)&local_80" (( "(") (type_descriptor "Cie *" (type_identifier "Cie") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_80" (& "&") (identifier "local_80"))) () ")")))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar3 = PTR_DAT_0043226c + 0x1dc0;" (assignment_expression "puVar3 = PTR_DAT_0043226c + 0x1dc0" (identifier "puVar3") (= "=") (binary_expression "PTR_DAT_0043226c + 0x1dc0" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x1dc0"))) (; ";")) (expression_statement "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);" (call_expression "(*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c)" (parenthesized_expression "(*(code *)PTR_do_gold_unreachable_004323c4)" (( "(") (pointer_expression "*(code *)PTR_do_gold_unreachable_004323c4" (* "*") (cast_expression "(code *)PTR_do_gold_unreachable_004323c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_do_gold_unreachable_004323c4"))) () ")")) (argument_list "(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c)" (( "(") (identifier "puVar3") (, ",") (number_literal "0x49e") (, ",") (binary_expression "PTR_DAT_0043226c + 0x1f4c" (identifier "PTR_DAT_0043226c") (+ "+") (number_literal "0x1f4c")) () ")"))) (; ";")) (expression_statement "(*(code *)PTR_operator_delete_004323c0)(param_2,0x24);" (call_expression "(*(code *)PTR_operator_delete_004323c0)(param_2,0x24)" (parenthesized_expression "(*(code *)PTR_operator_delete_004323c0)" (( "(") (pointer_expression "*(code *)PTR_operator_delete_004323c0" (* "*") (cast_expression "(code *)PTR_operator_delete_004323c0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_operator_delete_004323c0"))) () ")")) (argument_list "(param_2,0x24)" (( "(") (identifier "param_2") (, ",") (number_literal "0x24") () ")"))) (; ";")) (do_statement "do {\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  } while( true );" (do "do") (compound_statement "{\n    Cie::~Cie((Cie *)&local_80);\n    (*(code *)PTR_FUN_00432258)(puVar3);\n                    \n  }" ({ "{") (labeled_statement "Cie::~Cie((Cie *)&local_80);" (statement_identifier "Cie") (: ":") (ERROR ":" (: ":")) (expression_statement "~Cie((Cie *)&local_80);" (unary_expression "~Cie((Cie *)&local_80)" (~ "~") (call_expression "Cie((Cie *)&local_80)" (identifier "Cie") (argument_list "((Cie *)&local_80)" (( "(") (cast_expression "(Cie *)&local_80" (( "(") (type_descriptor "Cie *" (type_identifier "Cie") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&local_80" (& "&") (identifier "local_80"))) () ")")))) (; ";"))) (expression_statement "(*(code *)PTR_FUN_00432258)(puVar3);" (call_expression "(*(code *)PTR_FUN_00432258)(puVar3)" (parenthesized_expression "(*(code *)PTR_FUN_00432258)" (( "(") (pointer_expression "*(code *)PTR_FUN_00432258" (* "*") (cast_expression "(code *)PTR_FUN_00432258" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00432258"))) () ")")) (argument_list "(puVar3)" (( "(") (identifier "puVar3") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Struct "Output_section_data": ignoring overlapping field "output_section_" */
/* WARNING: Struct "Output_section": ignoring overlapping field "name_" */
/* 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_5::type_1::function_1
          (type_1 *this,type_2 *plt,type_3 *var_8,size_t var_9,type_3 *var_12,
          size_t var_13)

{
  bool bVar1;
  type_4 *fde;
  int var_15;
  type_5 **var_16;
  type_6 *puVar4;
  type_7 var_17;
  type_8 *this_00;
  type_8 cie;
  type_9 *var_11;
  
  puVar4 = var_1<var_2*>var_3;
  cie.personality_name_._M_dataplus._M_p = (type_12)&cie.personality_name_.field_2;
  cie.fde_encoding_ = '\x1b';
  cie.object_ = (type_10 *)0x0;
  cie.shndx_ = 0;
  cie.input_offset_ = 0;
  (*(type_11 *)var_1<var_2*>var_3)
            (&cie.personality_name_,var_4 + 0x1018,var_4 + 0x1018,0);
  cie.contents_._M_dataplus._M_p = (type_12)&cie.contents_.field_2;
  cie.fdes_.super__Vector_base<var_5::type_4*,var_6::allocator<var_5::type_4*>var_7>._M_impl._M_start =
       (type_12)0x0;
  cie.fdes_.super__Vector_base<var_5::type_4*,var_6::allocator<var_5::type_4*>var_7>._M_impl._M_finish =
       (type_12)0x0;
  cie.fdes_.super__Vector_base<var_5::type_4*,var_6::allocator<var_5::type_4*>var_7>._M_impl._M_end_of_storage =
       (type_12)0x0;
                    /* try { // try from 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */
  (*(type_11 *)puVar4)(&cie.contents_,var_8,var_8 + var_9,0);
  std::
  _Rb_tree<var_5::type_8*,_gold::type_8*,var_6::_Identity<var_5::type_8*>,_gold::type_1::Cie_less,var_6::allocator<var_5::type_8*>var_7>
  ::var_10((_Rb_tree<var_5::type_8*,_gold::type_8*,var_6::_Identity<var_5::type_8*>,_gold::type_1::Cie_less,var_6::allocator<var_5::type_8*>var_7>
          *)&var_11,(type_8 **)&this->cie_offsets_);
  if ((type_13 *)var_11 != &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header) {
                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */
    this_00 = *(type_8 **)(var_11 + 0x10);
    fde = (type_4 *)(*(type_11 *)PTR_operator_new_0043233c)(0x24);
    bVar1 = this->mappings_are_done_;
    fde->object_ = (type_10 *)0x0;
    (fde->contents_)._M_dataplus._M_p = (type_12)&(fde->contents_).field_2;
                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */
    (*(type_11 *)puVar4)(&fde->contents_,var_12,var_12 + var_13,0);
    (fde->u_).from_linker.plt = plt;
                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */
    (fde->u_).from_linker.post_map = bVar1;
    Cie::var_14(this_00,fde);
    if (this->mappings_are_done_ != false) {
      var_16 = (this->super_Output_section_data).super_Output_data._vptr_Output_data;
      var_17 = var_13 + 8;
      if (var_16[3] == (type_5 *)PTR_do_addralign_004346d0) {
        var_15 = *(int *)&(this->super_Output_section_data).addralign_;
        var_16 = *(type_5 ***)((int)&(this->super_Output_section_data).addralign_ + 4);
      }
      else {
        var_15 = (*var_16[3])(this);
      }
      if (var_15 != 0 || var_16 != (type_5 **)0x0) {
        var_17 = var_13 + 7 + (int)var_16 & -(int)var_16;
      }
      this->final_data_size_ = this->final_data_size_ - var_17;
    }
    Cie::~type_8(&cie,(int)fde);
    return;
  }
  puVar4 = var_4 + 0x1dc0;
  (*(type_11 *)PTR_do_gold_unreachable_004323c4)(puVar4,0x49e,var_4 + 0x1f4c);
                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */
  var_15 = 0x24;
  (*(type_11 *)PTR_operator_delete_004323c0)(var_8);
  do {
    Cie::~type_8(&cie,var_15);
    (*(type_11 *)PTR__Unwind_Resume_00432258)(puVar4);
                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58
                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */
  } while( true );
}


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

/* gold::Eh_frame::MASKED(gold::Output_data*, unsigned char const*, unsigned int,
   unsigned char const*, unsigned int) */

void __thiscall
gold::Eh_frame::MASKED
          (Eh_frame *this,Output_data *param_1,uchar *param_2,uint param_3,uchar *param_4,
          uint param_5)

{
  Fde FVar1;
  Fde *pFVar2;
  undefined *puVar3;
  uint uVar4;
  Cie *this_00;
  longlong lVar5;
  undefined4 local_80;
  undefined4 local_7c;
  undefined4 local_78;
  undefined1 local_74;
  undefined1 *local_70 [2];
  undefined1 auStack_68 [16];
  undefined4 local_58;
  undefined4 local_54;
  undefined4 local_50;
  undefined1 *local_4c [2];
  undefined1 auStack_44 [16];
  Cie *local_34;
  Eh_frame *local_30 [2];
  
  puVar3 = PTR__M_construct<char_const*>_00432488;
  local_70[0] = auStack_68;
  local_74 = 0x1b;
  local_80 = 0;
  local_7c = 0;
  local_78 = 0;
  (*(code *)PTR__M_construct<char_const*>_00432488)
            (local_70,PTR_DAT_0043226c + 0x1018,PTR_DAT_0043226c + 0x1018,0);
  local_4c[0] = auStack_44;
  local_58 = 0;
  local_54 = 0;
  local_50 = 0;
                    /* try { // try from 00272ad4 to 00272adb has its CatchHandler @ 00272c64 */
  (*(code *)puVar3)(local_4c,param_2,param_2 + param_3,0);
  local_34 = (Cie *)&local_80;
  std::
  _Rb_tree<gold::Cie*,gold::Cie*,std::_Identity<gold::Cie*>,gold::Eh_frame::Cie_less,std::allocator<gold::Cie*>>
  ::find((Cie **)local_30);
  if (local_30[0] != this + 0x38) {
                    /* try { // try from 00272b14 to 00272b1b has its CatchHandler @ 00272c58 */
    this_00 = *(Cie **)(local_30[0] + 0x10);
    pFVar2 = (Fde *)(*(code *)PTR_operator_new_0043233c)(0x24);
    FVar1 = *(Fde *)(this + 0x58);
    *(undefined4 *)pFVar2 = 0;
    *(Fde **)(pFVar2 + 0xc) = pFVar2 + 0x14;
                    /* try { // try from 00272b44 to 00272b4b has its CatchHandler @ 00272c20 */
    (*(code *)puVar3)(pFVar2 + 0xc,param_4,param_4 + param_5,0);
    *(Output_data **)(pFVar2 + 4) = param_1;
                    /* try { // try from 00272b60 to 00272c1f has its CatchHandler @ 00272c58 */
    pFVar2[8] = FVar1;
    Cie::remove_fde(this_00,pFVar2);
    if (this[0x58] != (Eh_frame)0x0) {
      uVar4 = param_5 + 8;
      if (*(code **)(*(int *)this + 0xc) == (code *)PTR_do_addralign_004346d0) {
        lVar5 = *(longlong *)(this + 0x28);
      }
      else {
        lVar5 = (**(code **)(*(int *)this + 0xc))(this);
      }
      if (lVar5 != 0) {
        uVar4 = param_5 + 7 + (int)lVar5 & -(int)lVar5;
      }
      *(uint *)(this + 0x5c) = *(int *)(this + 0x5c) - uVar4;
    }
    Cie::~Cie((Cie *)&local_80);
    return;
  }
  puVar3 = PTR_DAT_0043226c + 0x1dc0;
  (*(code *)PTR_do_gold_unreachable_004323c4)(puVar3,0x49e,PTR_DAT_0043226c + 0x1f4c);
                    /* catch() { ... } // from try @ 00272b44 with catch @ 00272c20 */
  (*(code *)PTR_operator_delete_004323c0)(param_2,0x24);
  do {
    Cie::~Cie((Cie *)&local_80);
    (*(code *)PTR_FUN_00432258)(puVar3);
                    /* catch() { ... } // from try @ 00272b14 with catch @ 00272c58
                       catch() { ... } // from try @ 00272b60 with catch @ 00272c58 */
  } while( true );
}

