
/* DWARF original name: do_sized_write<32, true>
   DWARF original prototype: void do_sized_write<32,_true>(Eh_frame * this, uchar * oview) */

void __thiscall gold::Eh_frame::do_sized_write<32,_true>(Eh_frame *this,uchar *oview)

{
  byte bVar1;
  uint64_t address;
  _func_int_varargs *p_Var2;
  Output_section *pOVar3;
  uint addralign;
  section_offset_type offset;
  pointer pPVar4;
  long output_offset;
  _Rb_tree_header *local_78;
  Post_fdes *local_68;
  _Rb_tree_node_base *local_60;
  Post_fdes post_fdes;
  
  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;
  if ((bVar1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xc5,"address");
  }
  address = (this->super_Output_section_data).super_Output_data.address_;
  p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
  if (p_Var2 == Output_section_data::do_addralign) {
    addralign = (uint)(this->super_Output_section_data).addralign_;
  }
  else {
    addralign = (*p_Var2)();
    bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;
  }
  if ((bVar1 & 4) == 0) {
LAB_002c4b65:
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/output.h",0xe3,"offset");
  }
  pOVar3 = (this->super_Output_section_data).output_section_;
  if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) goto LAB_002c4b65;
  output_offset =
       (this->super_Output_section_data).super_Output_data.offset_ -
       (pOVar3->super_Output_data).offset_;
  post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_start =
       (pointer)0x0;
  post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_finish =
       (pointer)0x0;
  local_60 = (_Rb_tree_node_base *)
             (this->unmergeable_cie_offsets_).
             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;
  post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.
  _M_end_of_storage = (pointer)0x0;
  if (local_60 ==
      (_Rb_tree_node_base *)
      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>.
      _M_impl._M_finish) {
    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
    offset = 0;
    if (&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (_Rb_tree_header *)local_60) {
      return;
    }
  }
  else {
    offset = 0;
    do {
                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */
      offset = Cie::write<32,_true>
                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,
                          this->eh_frame_hdr_,&post_fdes);
      local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);
    } while ((_Rb_tree_node_base *)
             (this->unmergeable_cie_offsets_).
             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=
             local_60);
    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
    if ((_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)
    goto LAB_002c4abf;
  }
  do {
    local_78 = &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;
    local_68 = &post_fdes;
    offset = Cie::write<32,_true>
                       (*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,
                        this->eh_frame_hdr_,local_68);
    local_60 = (_Rb_tree_node_base *)std::_Rb_tree_increment(local_60);
  } while ((_Rb_tree_header *)local_60 != local_78);
LAB_002c4abf:
  pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.
           _M_finish;
  if (post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_start
      != post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.
         _M_finish) {
    local_60 = (_Rb_tree_node_base *)
               post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl
               ._M_start;
    do {
      offset = Fde::write<32,_true>
                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,
                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,
                          this->eh_frame_hdr_);
      local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18);
      pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl
               ._M_start;
    } while ((_Rb_tree_node_base *)
             post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.
             _M_finish != local_60);
  }
  if (pPVar4 != (pointer)0x0) {
    operator_delete(pPVar4);
  }
  return;
}



void FUN_002c4990(long *param_1,undefined8 param_2)

{
  byte bVar1;
  long lVar2;
  undefined8 uVar3;
  ulong uVar4;
  undefined8 *puVar5;
  long lVar6;
  long *local_78;
  long *local_60;
  undefined8 *local_58;
  undefined8 *local_50;
  undefined8 local_48;
  
  bVar1 = *(byte *)(param_1 + 4);
  if ((bVar1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/output.h",0xc5,"address");
  }
  lVar2 = param_1[1];
  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {
    uVar4 = param_1[6];
  }
  else {
    uVar4 = (**(code **)(*param_1 + 0x18))();
    bVar1 = *(byte *)(param_1 + 4);
  }
  if ((bVar1 & 4) == 0) {
LAB_002c4b65:
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");
  }
  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;
  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);
  local_58 = (undefined8 *)0x0;
  local_50 = (undefined8 *)0x0;
  local_60 = (long *)param_1[0xe];
  local_48 = 0;
  if (local_60 == (undefined8 *)param_1[0xf]) {
    local_60 = (long *)param_1[0xb];
    uVar3 = 0;
    if (param_1 + 9 == local_60) {
      return;
    }
  }
  else {
    uVar3 = 0;
    do {
                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */
      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],
                           &local_58);
      local_60 = local_60 + 1;
    } while ((undefined8 *)param_1[0xf] != local_60);
    local_60 = (long *)param_1[0xb];
    if (local_60 == param_1 + 9) goto LAB_002c4abf;
  }
  do {
    local_78 = param_1 + 9;
    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);
    local_60 = (long *)thunk_FUN_002f1310(local_60);
  } while (local_60 != local_78);
LAB_002c4abf:
  puVar5 = local_50;
  if (local_58 != local_50) {
    local_60 = local_58;
    do {
      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],
                           *(undefined1 *)(local_60 + 2),param_1[7]);
      local_60 = local_60 + 3;
      puVar5 = local_58;
    } while (local_50 != local_60);
  }
  if (puVar5 != (undefined8 *)0x0) {
    FUN_002eff50();
  }
  return;
}


PUSH RBP
MOV RBP,RSP
PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBX
SUB RSP,0x48
MOVZX EDX,byte ptr [RDI + 0x20]
TEST DL,0x1
JZ 0x002c4b7d
MOV RAX,qword ptr [RDI]
LEA RCX,[0x170dc0]
MOV RBX,RDI
MOV R15,RSI
MOV R14,qword ptr [RDI + 0x8]
MOV RAX,qword ptr [RAX + 0x18]
CMP RAX,RCX
JNZ 0x002c4b30
MOV R12,qword ptr [RDI + 0x30]
AND EDX,0x4
JZ 0x002c4b65
MOV RAX,qword ptr [RBX + 0x28]
MOV R13,qword ptr [RBX + 0x18]
TEST byte ptr [RAX + 0x20],0x4
JZ 0x002c4b65
SUB R13,qword ptr [RAX + 0x18]
MOV qword ptr [RBP + -0x50],0x0
MOV qword ptr [RBP + -0x48],0x0
MOV RAX,qword ptr [RBX + 0x70]
MOV qword ptr [RBP + -0x40],0x0
CMP RAX,qword ptr [RBX + 0x78]
JZ 0x002c4b40
MOV qword ptr [RBP + -0x58],RAX
LEA RAX,[RBP + -0x50]
XOR ECX,ECX
MOV qword ptr [RBP + -0x60],RAX
NOP word ptr CS:[RAX + RAX*0x1]
MOV RAX,qword ptr [RBP + -0x58]
PUSH qword ptr [RBP + -0x60]
MOV R9D,R12D
MOV R8,R14
PUSH qword ptr [RBX + 0x38]
MOV RDX,R13
MOV RSI,R15
MOV RDI,qword ptr [RAX]
CALL 0x002c47e0
MOV RCX,RAX
POP RSI
ADD qword ptr [RBP + -0x58],0x8
POP RDI
MOV RAX,qword ptr [RBP + -0x58]
CMP qword ptr [RBX + 0x78],RAX
JNZ 0x002c4a30
MOV RAX,qword ptr [RBX + 0x58]
LEA RDX,[RBX + 0x48]
MOV qword ptr [RBP + -0x70],RDX
MOV qword ptr [RBP + -0x58],RAX
CMP RAX,RDX
JZ 0x002c4abf
NOP word ptr [RAX + RAX*0x1]
MOV RAX,qword ptr [RBP + -0x58]
MOV R9D,R12D
MOV R8,R14
MOV RDX,R13
MOV RSI,R15
MOV RDI,qword ptr [RAX + 0x20]
PUSH qword ptr [RBP + -0x60]
PUSH qword ptr [RBX + 0x38]
CALL 0x002c47e0
MOV RDI,qword ptr [RBP + -0x58]
MOV qword ptr [RBP + -0x68],RAX
POP RAX
POP RDX
CALL 0x002f1360
MOV RDX,qword ptr [RBP + -0x70]
MOV RCX,qword ptr [RBP + -0x68]
MOV qword ptr [RBP + -0x58],RAX
CMP RAX,RDX
JNZ 0x002c4a80
MOV RAX,qword ptr [RBP + -0x50]
MOV RDI,qword ptr [RBP + -0x48]
CMP RAX,RDI
JZ 0x002c4b14
MOV qword ptr [RBP + -0x58],RAX
MOV RSI,qword ptr [RBP + -0x58]
SUB RSP,0x8
PUSH qword ptr [RBX + 0x38]
MOV R9D,R12D
MOV R8,R14
MOV RDX,R13
MOVZX EAX,byte ptr [RSI + 0x10]
PUSH RAX
MOV RAX,RSI
PUSH qword ptr [RSI + 0x8]
MOV RDI,qword ptr [RAX]
MOV RSI,R15
CALL 0x002c21a0
MOV RCX,RAX
ADD qword ptr [RBP + -0x58],0x18
ADD RSP,0x20
MOV RAX,qword ptr [RBP + -0x58]
CMP qword ptr [RBP + -0x48],RAX
JNZ 0x002c4ad0
MOV RDI,qword ptr [RBP + -0x50]
TEST RDI,RDI
JZ 0x002c4b1e
CALL 0x002eff50
LEA RSP,[RBP + -0x28]
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
CALL RAX
MOVZX EDX,byte ptr [RBX + 0x20]
MOV R12,RAX
JMP 0x002c49d3
MOV RAX,qword ptr [RBX + 0x58]
LEA RDX,[RBX + 0x48]
LEA RDI,[RBP + -0x50]
XOR ECX,ECX
MOV qword ptr [RBP + -0x70],RDX
MOV qword ptr [RBP + -0x58],RAX
MOV qword ptr [RBP + -0x60],RDI
CMP RDX,RAX
JNZ 0x002c4a80
JMP 0x002c4b1e
LEA RDX,[0x3a3aca]
MOV ESI,0xe3
LEA RDI,[0x385398]
CALL 0x0018dcf0
LEA RDX,[0x3a3a88]
MOV ESI,0xc5
LEA RDI,[0x385398]
CALL 0x0018dcf0
(translation_unit "void FUN_002c4990(long *param_1,undefined8 param_2)\n\n{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}\n\n" (function_definition "void FUN_002c4990(long *param_1,undefined8 param_2)\n\n{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002c4990(long *param_1,undefined8 param_2)" identifier (parameter_list "(long *param_1,undefined8 param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_78;" (sized_type_specifier "long" long) (pointer_declarator "*local_78" * identifier) ;) (declaration "long *local_60;" (sized_type_specifier "long" long) (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined8 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" identifier = (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }" { comment (expression_statement "FUN_0018dcf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0018dcf0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "lVar2 = param_1[1];" (assignment_expression "lVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00170dc0)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00170dc0" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    uVar4 = param_1[6];\n  }" { (expression_statement "uVar4 = param_1[6];" (assignment_expression "uVar4 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" else (compound_statement "{\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" { (expression_statement "uVar4 = (**(code **)(*param_1 + 0x18))();" (assignment_expression "uVar4 = (**(code **)(*param_1 + 0x18))()" identifier = (call_expression "(**(code **)(*param_1 + 0x18))()" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" identifier = (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }))) (if_statement "if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }" { (labeled_statement "LAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (expression_statement "FUN_0018dcf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0018dcf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (if_statement "if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;" if (parenthesized_expression "((*(byte *)(param_1[5] + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1[5] + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1[5] + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1[5] + 0x20) & 4" (pointer_expression "*(byte *)(param_1[5] + 0x20)" * (cast_expression "(byte *)(param_1[5] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x20)" ( (binary_expression "param_1[5] + 0x20" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_002c4b65;" goto statement_identifier ;)) (expression_statement "lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);" (assignment_expression "lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18)" identifier = (binary_expression "param_1[3] - *(long *)(param_1[5] + 0x18)" (subscript_expression "param_1[3]" identifier [ number_literal ]) - (pointer_expression "*(long *)(param_1[5] + 0x18)" * (cast_expression "(long *)(param_1[5] + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x18)" ( (binary_expression "param_1[5] + 0x18" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))))) ;) (expression_statement "local_58 = (undefined8 *)0x0;" (assignment_expression "local_58 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = (undefined8 *)0x0;" (assignment_expression "local_50 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = (long *)param_1[0xe];" (assignment_expression "local_60 = (long *)param_1[0xe]" identifier = (cast_expression "(long *)param_1[0xe]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" if (parenthesized_expression "(local_60 == (undefined8 *)param_1[0xf])" ( (binary_expression "local_60 == (undefined8 *)param_1[0xf]" identifier == (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) )) (compound_statement "{\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }" { (expression_statement "local_60 = (long *)param_1[0xb];" (assignment_expression "local_60 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (param_1 + 9 == local_60) {\n      return;\n    }" if (parenthesized_expression "(param_1 + 9 == local_60)" ( (binary_expression "param_1 + 9 == local_60" (binary_expression "param_1 + 9" identifier + number_literal) == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    uVar3 = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" else (compound_statement "{\n    uVar3 = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);" do (compound_statement "{\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    }" { comment (expression_statement "uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);" (assignment_expression "uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" identifier = (call_expression "FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" identifier (argument_list "(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" ( (pointer_expression "*local_60" * identifier) , identifier , identifier , identifier , identifier , (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) , (subscript_expression "param_1[7]" identifier [ number_literal ]) , (pointer_expression "&local_58" & identifier) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined8 *)param_1[0xf] != local_60)" ( (binary_expression "(undefined8 *)param_1[0xf] != local_60" (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ])) != identifier) )) ;) (expression_statement "local_60 = (long *)param_1[0xb];" (assignment_expression "local_60 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (if_statement "if (local_60 == param_1 + 9) goto LAB_002c4abf;" if (parenthesized_expression "(local_60 == param_1 + 9)" ( (binary_expression "local_60 == param_1 + 9" identifier == (binary_expression "param_1 + 9" identifier + number_literal)) )) (goto_statement "goto LAB_002c4abf;" goto statement_identifier ;)) }))) (do_statement "do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);" do (compound_statement "{\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  }" { (expression_statement "local_78 = param_1 + 9;" (assignment_expression "local_78 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);" (assignment_expression "uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" identifier = (call_expression "FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" identifier (argument_list "(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" ( (subscript_expression "local_60[4]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier , (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) , (subscript_expression "param_1[7]" identifier [ number_literal ]) )))) ;) (expression_statement "local_60 = (long *)thunk_FUN_002f1310(local_60);" (assignment_expression "local_60 = (long *)thunk_FUN_002f1310(local_60)" identifier = (cast_expression "(long *)thunk_FUN_002f1310(local_60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002f1310(local_60)" identifier (argument_list "(local_60)" ( identifier ))))) ;) }) while (parenthesized_expression "(local_60 != local_78)" ( (binary_expression "local_60 != local_78" identifier != identifier) )) ;) (labeled_statement "LAB_002c4abf:\n  puVar5 = local_50;" statement_identifier : (expression_statement "puVar5 = local_50;" (assignment_expression "puVar5 = local_50" identifier = identifier) ;)) (if_statement "if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }" if (parenthesized_expression "(local_58 != local_50)" ( (binary_expression "local_58 != local_50" identifier != identifier) )) (compound_statement "{\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }" { (expression_statement "local_60 = local_58;" (assignment_expression "local_60 = local_58" identifier = identifier) ;) (do_statement "do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);" do (compound_statement "{\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    }" { (expression_statement "uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);" (assignment_expression "uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" identifier = (call_expression "FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" identifier (argument_list "(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" ( (pointer_expression "*local_60" * identifier) , identifier , identifier , identifier , identifier , (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) , (subscript_expression "local_60[1]" identifier [ number_literal ]) , (pointer_expression "*(undefined1 *)(local_60 + 2)" * (cast_expression "(undefined1 *)(local_60 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 2)" ( (binary_expression "local_60 + 2" identifier + number_literal) )))) , (subscript_expression "param_1[7]" identifier [ number_literal ]) )))) ;) (expression_statement "local_60 = local_60 + 3;" (assignment_expression "local_60 = local_60 + 3" identifier = (binary_expression "local_60 + 3" identifier + number_literal)) ;) (expression_statement "puVar5 = local_58;" (assignment_expression "puVar5 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(local_50 != local_60)" ( (binary_expression "local_50 != local_60" identifier != identifier) )) ;) })) (if_statement "if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }" if (parenthesized_expression "(puVar5 != (undefined8 *)0x0)" ( (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_002eff50();\n  }" { (expression_statement "FUN_002eff50();" (call_expression "FUN_002eff50()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original name: do_sized_write<32, true>\n   DWARF original prototype: void do_sized_write<32,_true>(Eh_frame * this, uchar * oview) */\n\nvoid __thiscall gold::Eh_frame::do_sized_write<32,_true>(Eh_frame *this,uchar *oview)\n\n{\n  byte bVar1;\n  uint64_t address;\n  _func_int_varargs *p_Var2;\n  Output_section *pOVar3;\n  uint addralign;\n  section_offset_type offset;\n  pointer pPVar4;\n  long output_offset;\n  _Rb_tree_header *local_78;\n  Post_fdes *local_68;\n  _Rb_tree_node_base *local_60;\n  Post_fdes post_fdes;\n  \n  bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }\n  address = (this->super_Output_section_data).super_Output_data.address_;\n  p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];\n  if (p_Var2 == Output_section_data::do_addralign) {\n    addralign = (uint)(this->super_Output_section_data).addralign_;\n  }\n  else {\n    addralign = (*p_Var2)();\n    bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }\n  pOVar3 = (this->super_Output_section_data).output_section_;\n  if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) goto LAB_002c4b65;\n  output_offset =\n       (this->super_Output_section_data).super_Output_data.offset_ -\n       (pOVar3->super_Output_data).offset_;\n  post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_start =\n       (pointer)0x0;\n  post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_finish =\n       (pointer)0x0;\n  local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;\n  post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0;\n  if (local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>.\n      _M_impl._M_finish) {\n    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    offset = 0;\n    if (&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (_Rb_tree_header *)local_60) {\n      return;\n    }\n  }\n  else {\n    offset = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);\n    } while ((_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n             local_60);\n    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    if ((_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n    goto LAB_002c4abf;\n  }\n  do {\n    local_78 = &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n    local_68 = &post_fdes;\n    offset = Cie::write<32,_true>\n                       (*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68);\n    local_60 = (_Rb_tree_node_base *)std::_Rb_tree_increment(local_60);\n  } while ((_Rb_tree_header *)local_60 != local_78);\nLAB_002c4abf:\n  pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n           _M_finish;\n  if (post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_start\n      != post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n         _M_finish) {\n    local_60 = (_Rb_tree_node_base *)\n               post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    do {\n      offset = Fde::write<32,_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18);\n      pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    } while ((_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n             _M_finish != local_60);\n  }\n  if (pPVar4 != (pointer)0x0) {\n    operator_delete(pPVar4);\n  }\n  return;\n}\n\n" comment (declaration "void __thiscall gold::Eh_frame::do_sized_write<32,_true>(Eh_frame *this,uchar *oview)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Eh_frame::" identifier : : identifier : :) identifier (ERROR "<32" < number_literal) , (ERROR "_true>(Eh_frame" identifier > ( identifier) (pointer_declarator "*this" * identifier) , (ERROR "uchar *oview)\n\n{\n  byte" identifier (pointer_declarator "*oview" * identifier) ) { identifier) identifier ;) (declaration "uint64_t address;" primitive_type identifier ;) (declaration "_func_int_varargs *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "Output_section *pOVar3;" type_identifier (pointer_declarator "*pOVar3" * identifier) ;) (declaration "uint addralign;" type_identifier identifier ;) (declaration "section_offset_type offset;" type_identifier identifier ;) (declaration "pointer pPVar4;" type_identifier identifier ;) (declaration "long output_offset;" (sized_type_specifier "long" long) identifier ;) (declaration "_Rb_tree_header *local_78;" type_identifier (pointer_declarator "*local_78" * identifier) ;) (declaration "Post_fdes *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "_Rb_tree_node_base *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "Post_fdes post_fdes;" type_identifier identifier ;) (expression_statement "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;" (assignment_expression "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.field_0x20" (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)) ;) (if_statement "if ((bVar1 & 1) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xc5,"address");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xc5,"address");" (call_expression "do_gold_unreachable("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "address = (this->super_Output_section_data).super_Output_data.address_;" (assignment_expression "address = (this->super_Output_section_data).super_Output_data.address_" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.address_" (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 "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];" (assignment_expression "p_Var2 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" identifier = (subscript_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data[3]" (field_expression "(this->super_Output_section_data).super_Output_data._vptr_Output_data" (field_expression "(this->super_Output_section_data).super_Output_data" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ number_literal ])) ;) (if_statement "if (p_Var2 == Output_section_data::do_addralign) {\n    addralign = (uint)(this->super_Output_section_data).addralign_;\n  }\n  else {\n    addralign = (*p_Var2)();\n    bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  }" if (parenthesized_expression "(p_Var2 == Output_section_data::do_addralign)" ( (binary_expression "p_Var2 == Output_section_data" identifier == identifier) (ERROR "::do_addralign" : : identifier) )) (compound_statement "{\n    addralign = (uint)(this->super_Output_section_data).addralign_;\n  }" { (expression_statement "addralign = (uint)(this->super_Output_section_data).addralign_;" (assignment_expression "addralign = (uint)(this->super_Output_section_data).addralign_" identifier = (field_expression "(uint)(this->super_Output_section_data).addralign_" (call_expression "(uint)(this->super_Output_section_data)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) ))) . field_identifier)) ;) }) (else_clause "else {\n    addralign = (*p_Var2)();\n    bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  }" else (compound_statement "{\n    addralign = (*p_Var2)();\n    bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;\n  }" { (expression_statement "addralign = (*p_Var2)();" (assignment_expression "addralign = (*p_Var2)()" identifier = (call_expression "(*p_Var2)()" (parenthesized_expression "(*p_Var2)" ( (pointer_expression "*p_Var2" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20;" (assignment_expression "bVar1 = (this->super_Output_section_data).super_Output_data.field_0x20" identifier = (field_expression "(this->super_Output_section_data).super_Output_data.field_0x20" (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)) ;) }))) (if_statement "if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");\n  }" { (labeled_statement "LAB_002c4b65:\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/output.h",0xe3,"offset");" statement_identifier : comment (expression_statement "do_gold_unreachable("../../gold/output.h",0xe3,"offset");" (call_expression "do_gold_unreachable("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (expression_statement "pOVar3 = (this->super_Output_section_data).output_section_;" (assignment_expression "pOVar3 = (this->super_Output_section_data).output_section_" identifier = (field_expression "(this->super_Output_section_data).output_section_" (parenthesized_expression "(this->super_Output_section_data)" ( (field_expression "this->super_Output_section_data" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) goto LAB_002c4b65;" if (parenthesized_expression "(((pOVar3->super_Output_data).field_0x20 & 4) == 0)" ( (binary_expression "((pOVar3->super_Output_data).field_0x20 & 4) == 0" (parenthesized_expression "((pOVar3->super_Output_data).field_0x20 & 4)" ( (binary_expression "(pOVar3->super_Output_data).field_0x20 & 4" (field_expression "(pOVar3->super_Output_data).field_0x20" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_002c4b65;" goto statement_identifier ;)) (expression_statement "output_offset =\n       (this->super_Output_section_data).super_Output_data.offset_ -\n       (pOVar3->super_Output_data).offset_;" (assignment_expression "output_offset =\n       (this->super_Output_section_data).super_Output_data.offset_ -\n       (pOVar3->super_Output_data).offset_" identifier = (binary_expression "(this->super_Output_section_data).super_Output_data.offset_ -\n       (pOVar3->super_Output_data).offset_" (field_expression "(this->super_Output_section_data).super_Output_data.offset_" (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) - (field_expression "(pOVar3->super_Output_data).offset_" (parenthesized_expression "(pOVar3->super_Output_data)" ( (field_expression "pOVar3->super_Output_data" identifier -> field_identifier) )) . field_identifier))) ;) (ERROR "post_fdes.super__Vector_base<gold::Post_fde," (binary_expression "post_fdes.super__Vector_base<gold" (field_expression "post_fdes.super__Vector_base" identifier . field_identifier) < identifier) : : identifier ,) (labeled_statement "_std::allocator<gold::Post_fde>_>._M_impl._M_start =\n       (pointer)0x0;" statement_identifier (ERROR "::allocator<gold:" : : (binary_expression "allocator<gold" identifier < identifier) :) : (expression_statement "Post_fde>_>._M_impl._M_start =\n       (pointer)0x0;" (assignment_expression "Post_fde>_>._M_impl._M_start =\n       (pointer)0x0" (field_expression "Post_fde>_>._M_impl._M_start" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;)) (ERROR "post_fdes.super__Vector_base<gold::Post_fde," (binary_expression "post_fdes.super__Vector_base<gold" (field_expression "post_fdes.super__Vector_base" identifier . field_identifier) < identifier) : : identifier ,) (labeled_statement "_std::allocator<gold::Post_fde>_>._M_impl._M_finish =\n       (pointer)0x0;" statement_identifier (ERROR "::allocator<gold:" : : (binary_expression "allocator<gold" identifier < identifier) :) : (expression_statement "Post_fde>_>._M_impl._M_finish =\n       (pointer)0x0;" (assignment_expression "Post_fde>_>._M_impl._M_finish =\n       (pointer)0x0" (field_expression "Post_fde>_>._M_impl._M_finish" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;)) (expression_statement "local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start;" (field_expression "local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_start" (field_expression "local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl" (binary_expression "local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_" (binary_expression "local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold" (binary_expression "local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std" (assignment_expression "local_60 = (_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold" identifier = (binary_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold" (cast_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->unmergeable_cie_offsets_).\n             super__Vector_base" (parenthesized_expression "(this->unmergeable_cie_offsets_)" ( (field_expression "this->unmergeable_cie_offsets_" identifier -> field_identifier) )) . field_identifier)) < identifier)) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (ERROR "post_fdes.super__Vector_base<gold::Post_fde," (binary_expression "post_fdes.super__Vector_base<gold" (field_expression "post_fdes.super__Vector_base" identifier . field_identifier) < identifier) : : identifier ,) (labeled_statement "_std::allocator<gold::Post_fde>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0;" statement_identifier (ERROR "::allocator<gold:" : : (binary_expression "allocator<gold" identifier < identifier) :) : (expression_statement "Post_fde>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0;" (assignment_expression "Post_fde>_>._M_impl.\n  _M_end_of_storage = (pointer)0x0" (field_expression "Post_fde>_>._M_impl.\n  _M_end_of_storage" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;)) (if_statement "if (local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>.\n      _M_impl._M_finish) {\n    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    offset = 0;\n    if (&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (_Rb_tree_header *)local_60) {\n      return;\n    }\n  }\n  else {\n    offset = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);\n    } while ((_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n             local_60);\n    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    if ((_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n    goto LAB_002c4abf;\n  }" if (parenthesized_expression "(local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>.\n      _M_impl._M_finish)" ( (field_expression "local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>.\n      _M_impl._M_finish" (field_expression "local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>.\n      _M_impl" (binary_expression "local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_" (binary_expression "local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std::allocator<gold" (binary_expression "local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold::Cie*,_std" (binary_expression "local_60 ==\n      (_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold" identifier == (binary_expression "(_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base<gold" (cast_expression "(_Rb_tree_node_base *)\n      (this->unmergeable_cie_offsets_).super__Vector_base" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->unmergeable_cie_offsets_).super__Vector_base" (parenthesized_expression "(this->unmergeable_cie_offsets_)" ( (field_expression "this->unmergeable_cie_offsets_" identifier -> field_identifier) )) . field_identifier)) < identifier)) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    offset = 0;\n    if (&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (_Rb_tree_header *)local_60) {\n      return;\n    }\n  }" { (expression_statement "local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;" (assignment_expression "local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" identifier = (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_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) . field_identifier) . field_identifier)) ;) (expression_statement "offset = 0;" (assignment_expression "offset = 0" identifier = number_literal) ;) (if_statement "if (&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (_Rb_tree_header *)local_60) {\n      return;\n    }" if (parenthesized_expression "(&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (_Rb_tree_header *)local_60)" ( (binary_expression "&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (_Rb_tree_header *)local_60" (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)) == (cast_expression "(_Rb_tree_header *)local_60" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    offset = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);\n    } while ((_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n             local_60);\n    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    if ((_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n    goto LAB_002c4abf;\n  }" else (compound_statement "{\n    offset = 0;\n    do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);\n    } while ((_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n             local_60);\n    local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;\n    if ((_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n    goto LAB_002c4abf;\n  }" { (expression_statement "offset = 0;" (assignment_expression "offset = 0" identifier = number_literal) ;) (do_statement "do {\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);\n    } while ((_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n             local_60);" do (compound_statement "{\n                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */\n      offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);\n    }" { comment (expression_statement "offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes);" (comma_expression "offset = Cie::write<32,_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes)" (binary_expression "offset = Cie::write<32" (assignment_expression "offset = Cie" identifier = identifier) (ERROR "::write" : : identifier) < number_literal) , (binary_expression "_true>\n                         (*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes)" identifier > (parenthesized_expression "(*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes)" ( (comma_expression "*(Cie **)local_60,oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes" (pointer_expression "*(Cie **)local_60" * (cast_expression "(Cie **)local_60" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , (comma_expression "oview,output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes" identifier , (comma_expression "output_offset,offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes" identifier , (comma_expression "offset,address,addralign,\n                          this->eh_frame_hdr_,&post_fdes" identifier , (comma_expression "address,addralign,\n                          this->eh_frame_hdr_,&post_fdes" identifier , (comma_expression "addralign,\n                          this->eh_frame_hdr_,&post_fdes" identifier , (comma_expression "this->eh_frame_hdr_,&post_fdes" (field_expression "this->eh_frame_hdr_" identifier -> field_identifier) , (pointer_expression "&post_fdes" & identifier)))))))) )))) ;) (expression_statement "local_60 = (_Rb_tree_node_base *)((long)local_60 + 8);" (assignment_expression "local_60 = (_Rb_tree_node_base *)((long)local_60 + 8)" identifier = (cast_expression "(_Rb_tree_node_base *)((long)local_60 + 8)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_60 + 8)" ( (binary_expression "(long)local_60 + 8" (cast_expression "(long)local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "((_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n             local_60)" ( (binary_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish !=\n             local_60" (field_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl._M_finish" (field_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_>._M_impl" (binary_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold::Cie*>_" (binary_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std::allocator<gold" (binary_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold::Cie*,_std" (binary_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base<gold" (cast_expression "(_Rb_tree_node_base *)\n             (this->unmergeable_cie_offsets_).\n             super__Vector_base" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(this->unmergeable_cie_offsets_).\n             super__Vector_base" (parenthesized_expression "(this->unmergeable_cie_offsets_)" ( (field_expression "this->unmergeable_cie_offsets_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Cie" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Cie" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) (expression_statement "local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;" (assignment_expression "local_60 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" identifier = (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left" (field_expression "(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_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) . field_identifier) . field_identifier)) ;) (if_statement "if ((_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)\n    goto LAB_002c4abf;" if (parenthesized_expression "((_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)" ( (binary_expression "(_Rb_tree_header *)local_60 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" (cast_expression "(_Rb_tree_header *)local_60" ( (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))) )) (goto_statement "goto LAB_002c4abf;" goto statement_identifier ;)) }))) (do_statement "do {\n    local_78 = &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n    local_68 = &post_fdes;\n    offset = Cie::write<32,_true>\n                       (*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68);\n    local_60 = (_Rb_tree_node_base *)std::_Rb_tree_increment(local_60);\n  } while ((_Rb_tree_header *)local_60 != local_78);" do (compound_statement "{\n    local_78 = &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;\n    local_68 = &post_fdes;\n    offset = Cie::write<32,_true>\n                       (*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68);\n    local_60 = (_Rb_tree_node_base *)std::_Rb_tree_increment(local_60);\n  }" { (expression_statement "local_78 = &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;" (assignment_expression "local_78 = &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header" 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))) ;) (expression_statement "local_68 = &post_fdes;" (assignment_expression "local_68 = &post_fdes" identifier = (pointer_expression "&post_fdes" & identifier)) ;) (expression_statement "offset = Cie::write<32,_true>\n                       (*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68);" (comma_expression "offset = Cie::write<32,_true>\n                       (*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68)" (binary_expression "offset = Cie::write<32" (assignment_expression "offset = Cie" identifier = identifier) (ERROR "::write" : : identifier) < number_literal) , (binary_expression "_true>\n                       (*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68)" identifier > (parenthesized_expression "(*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68)" ( (comma_expression "*(Cie **)(local_60 + 1),oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68" (pointer_expression "*(Cie **)(local_60 + 1)" * (cast_expression "(Cie **)(local_60 + 1)" ( (type_descriptor "Cie **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_60 + 1)" ( (binary_expression "local_60 + 1" identifier + number_literal) )))) , (comma_expression "oview,output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68" identifier , (comma_expression "output_offset,offset,address,addralign,\n                        this->eh_frame_hdr_,local_68" identifier , (comma_expression "offset,address,addralign,\n                        this->eh_frame_hdr_,local_68" identifier , (comma_expression "address,addralign,\n                        this->eh_frame_hdr_,local_68" identifier , (comma_expression "addralign,\n                        this->eh_frame_hdr_,local_68" identifier , (comma_expression "this->eh_frame_hdr_,local_68" (field_expression "this->eh_frame_hdr_" identifier -> field_identifier) , identifier))))))) )))) ;) (ERROR "local_60 = (_Rb_tree_node_base *)std::" (assignment_expression "local_60 = (_Rb_tree_node_base *)std" identifier = (cast_expression "(_Rb_tree_node_base *)std" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "_Rb_tree_increment(local_60);" (call_expression "_Rb_tree_increment(local_60)" identifier (argument_list "(local_60)" ( identifier ))) ;) }) while (parenthesized_expression "((_Rb_tree_header *)local_60 != local_78)" ( (binary_expression "(_Rb_tree_header *)local_60 != local_78" (cast_expression "(_Rb_tree_header *)local_60" ( (type_descriptor "_Rb_tree_header *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != identifier) )) ;) (labeled_statement "LAB_002c4abf:\n  pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n           _M_finish;" statement_identifier : (ERROR "pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::" (comma_expression "pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std" (assignment_expression "pPVar4 = post_fdes.super__Vector_base<gold" identifier = (binary_expression "post_fdes.super__Vector_base<gold" (field_expression "post_fdes.super__Vector_base" identifier . field_identifier) < identifier)) (ERROR "::Post_fde" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Post_fde>_>._M_impl.\n           _M_finish;" (field_expression "Post_fde>_>._M_impl.\n           _M_finish" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;)) (if_statement "if (post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_start\n      != post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n         _M_finish) {\n    local_60 = (_Rb_tree_node_base *)\n               post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    do {\n      offset = Fde::write<32,_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18);\n      pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    } while ((_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n             _M_finish != local_60);\n  }" if (parenthesized_expression "(post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_start\n      != post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n         _M_finish)" ( (ERROR "post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl._M_start\n      != post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::" (comma_expression "post_fdes.super__Vector_base<gold::Post_fde,_std" (binary_expression "post_fdes.super__Vector_base<gold" (field_expression "post_fdes.super__Vector_base" identifier . field_identifier) < identifier) (ERROR "::Post_fde" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Post_fde>_>._M_impl._M_start\n      != post_fdes.super__Vector_base<gold" (field_expression "Post_fde>_>._M_impl._M_start" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) != (binary_expression "post_fdes.super__Vector_base<gold" (field_expression "post_fdes.super__Vector_base" identifier . field_identifier) < identifier)) : : (comma_expression "Post_fde,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (field_expression "Post_fde>_>._M_impl.\n         _M_finish" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    local_60 = (_Rb_tree_node_base *)\n               post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    do {\n      offset = Fde::write<32,_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18);\n      pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    } while ((_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n             _M_finish != local_60);\n  }" { (ERROR "local_60 = (_Rb_tree_node_base *)\n               post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::" (comma_expression "local_60 = (_Rb_tree_node_base *)\n               post_fdes.super__Vector_base<gold::Post_fde,_std" (assignment_expression "local_60 = (_Rb_tree_node_base *)\n               post_fdes.super__Vector_base<gold" identifier = (binary_expression "(_Rb_tree_node_base *)\n               post_fdes.super__Vector_base<gold" (cast_expression "(_Rb_tree_node_base *)\n               post_fdes.super__Vector_base" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "post_fdes.super__Vector_base" identifier . field_identifier)) < identifier)) (ERROR "::Post_fde" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Post_fde>_>._M_impl\n               ._M_start;" (field_expression "Post_fde>_>._M_impl\n               ._M_start" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (do_statement "do {\n      offset = Fde::write<32,_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18);\n      pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    } while ((_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n             _M_finish != local_60);" do (compound_statement "{\n      offset = Fde::write<32,_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_);\n      local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18);\n      pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl\n               ._M_start;\n    }" { (expression_statement "offset = Fde::write<32,_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_);" (comma_expression "offset = Fde::write<32,_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_)" (binary_expression "offset = Fde::write<32" (assignment_expression "offset = Fde" identifier = identifier) (ERROR "::write" : : identifier) < number_literal) , (binary_expression "_true>\n                         (*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_)" identifier > (parenthesized_expression "(*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_)" ( (comma_expression "*(Fde **)&local_60->_M_color,oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" (pointer_expression "*(Fde **)&local_60->_M_color" * (cast_expression "(Fde **)&local_60->_M_color" ( (type_descriptor "Fde **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&local_60->_M_color" & (field_expression "local_60->_M_color" identifier -> field_identifier)))) , (comma_expression "oview,output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" identifier , (comma_expression "output_offset,offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" identifier , (comma_expression "offset,address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" identifier , (comma_expression "address,addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" identifier , (comma_expression "addralign,\n                          (section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" identifier , (comma_expression "(section_offset_type)local_60->_M_parent,*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" (cast_expression "(section_offset_type)local_60->_M_parent" ( (type_descriptor "section_offset_type" type_identifier) ) (field_expression "local_60->_M_parent" identifier -> field_identifier)) , (comma_expression "*(uchar *)&local_60->_M_left,\n                          this->eh_frame_hdr_" (pointer_expression "*(uchar *)&local_60->_M_left" * (cast_expression "(uchar *)&local_60->_M_left" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_60->_M_left" & (field_expression "local_60->_M_left" identifier -> field_identifier)))) , (field_expression "this->eh_frame_hdr_" identifier -> field_identifier))))))))) )))) ;) (expression_statement "local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18);" (assignment_expression "local_60 = (_Rb_tree_node_base *)((long)local_60 + 0x18)" identifier = (cast_expression "(_Rb_tree_node_base *)((long)local_60 + 0x18)" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_60 + 0x18)" ( (binary_expression "(long)local_60 + 0x18" (cast_expression "(long)local_60" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (ERROR "pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::" (comma_expression "pPVar4 = post_fdes.super__Vector_base<gold::Post_fde,_std" (assignment_expression "pPVar4 = post_fdes.super__Vector_base<gold" identifier = (binary_expression "post_fdes.super__Vector_base<gold" (field_expression "post_fdes.super__Vector_base" identifier . field_identifier) < identifier)) (ERROR "::Post_fde" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Post_fde>_>._M_impl\n               ._M_start;" (field_expression "Post_fde>_>._M_impl\n               ._M_start" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) }) while (parenthesized_expression "((_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::Post_fde>_>._M_impl.\n             _M_finish != local_60)" ( (ERROR "(_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold::Post_fde,_std::allocator<gold::" (comma_expression "(_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold::Post_fde,_std" (binary_expression "(_Rb_tree_node_base *)\n             post_fdes.super__Vector_base<gold" (cast_expression "(_Rb_tree_node_base *)\n             post_fdes.super__Vector_base" ( (type_descriptor "_Rb_tree_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "post_fdes.super__Vector_base" identifier . field_identifier)) < identifier) (ERROR "::Post_fde" : : identifier) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Post_fde>_>._M_impl.\n             _M_finish != local_60" (field_expression "Post_fde>_>._M_impl.\n             _M_finish" (field_expression "Post_fde>_>._M_impl" (binary_expression "Post_fde>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (if_statement "if (pPVar4 != (pointer)0x0) {\n    operator_delete(pPVar4);\n  }" if (parenthesized_expression "(pPVar4 != (pointer)0x0)" ( (binary_expression "pPVar4 != (pointer)0x0" identifier != (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) )) (compound_statement "{\n    operator_delete(pPVar4);\n  }" { (expression_statement "operator_delete(pPVar4);" (call_expression "operator_delete(pPVar4)" identifier (argument_list "(pPVar4)" ( identifier ))) ;) })) (return_statement "return;" return ;) (ERROR "}" }))
(translation_unit "void FUN_002c4990(long *param_1,undefined8 param_2)\n\n{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}\n\n" (function_definition "void FUN_002c4990(long *param_1,undefined8 param_2)\n\n{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_002c4990(long *param_1,undefined8 param_2)" identifier (parameter_list "(long *param_1,undefined8 param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *local_78;" (sized_type_specifier "long" long) (pointer_declarator "*local_78" * identifier) ;) (declaration "long *local_60;" (sized_type_specifier "long" long) (pointer_declarator "*local_60" * identifier) ;) (declaration "undefined8 *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "undefined8 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" identifier = (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (if_statement "if ((bVar1 & 1) == 0) {\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }" if (parenthesized_expression "((bVar1 & 1) == 0)" ( (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }" { (expression_statement "FUN_0018dcf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0018dcf0("../../gold/output.h",0xc5,"address")" identifier (argument_list "("../../gold/output.h",0xc5,"address")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""address"" " string_content ") ))) ;) })) (expression_statement "lVar2 = param_1[1];" (assignment_expression "lVar2 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" if (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00170dc0)" ( (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00170dc0" (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) )))) == identifier) )) (compound_statement "{\n    uVar4 = param_1[6];\n  }" { (expression_statement "uVar4 = param_1[6];" (assignment_expression "uVar4 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" else (compound_statement "{\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" { (expression_statement "uVar4 = (**(code **)(*param_1 + 0x18))();" (assignment_expression "uVar4 = (**(code **)(*param_1 + 0x18))()" identifier = (call_expression "(**(code **)(*param_1 + 0x18))()" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" ( (pointer_expression "**(code **)(*param_1 + 0x18)" * (pointer_expression "*(code **)(*param_1 + 0x18)" * (cast_expression "(code **)(*param_1 + 0x18)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 0x18)" ( (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (argument_list "()" ( )))) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" identifier = (pointer_expression "*(byte *)(param_1 + 4)" * (cast_expression "(byte *)(param_1 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) }))) (if_statement "if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }" if (parenthesized_expression "((bVar1 & 4) == 0)" ( (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }" { (labeled_statement "LAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");" statement_identifier : (expression_statement "FUN_0018dcf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0018dcf0("../../gold/output.h",0xe3,"offset")" identifier (argument_list "("../../gold/output.h",0xe3,"offset")" ( (string_literal ""../../gold/output.h"" " string_content ") , number_literal , (string_literal ""offset"" " string_content ") ))) ;)) })) (if_statement "if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;" if (parenthesized_expression "((*(byte *)(param_1[5] + 0x20) & 4) == 0)" ( (binary_expression "(*(byte *)(param_1[5] + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1[5] + 0x20) & 4)" ( (binary_expression "*(byte *)(param_1[5] + 0x20) & 4" (pointer_expression "*(byte *)(param_1[5] + 0x20)" * (cast_expression "(byte *)(param_1[5] + 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x20)" ( (binary_expression "param_1[5] + 0x20" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_002c4b65;" goto statement_identifier ;)) (expression_statement "lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);" (assignment_expression "lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18)" identifier = (binary_expression "param_1[3] - *(long *)(param_1[5] + 0x18)" (subscript_expression "param_1[3]" identifier [ number_literal ]) - (pointer_expression "*(long *)(param_1[5] + 0x18)" * (cast_expression "(long *)(param_1[5] + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[5] + 0x18)" ( (binary_expression "param_1[5] + 0x18" (subscript_expression "param_1[5]" identifier [ number_literal ]) + number_literal) )))))) ;) (expression_statement "local_58 = (undefined8 *)0x0;" (assignment_expression "local_58 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = (undefined8 *)0x0;" (assignment_expression "local_50 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = (long *)param_1[0xe];" (assignment_expression "local_60 = (long *)param_1[0xe]" identifier = (cast_expression "(long *)param_1[0xe]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xe]" identifier [ number_literal ]))) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" if (parenthesized_expression "(local_60 == (undefined8 *)param_1[0xf])" ( (binary_expression "local_60 == (undefined8 *)param_1[0xf]" identifier == (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ]))) )) (compound_statement "{\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }" { (expression_statement "local_60 = (long *)param_1[0xb];" (assignment_expression "local_60 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if (param_1 + 9 == local_60) {\n      return;\n    }" if (parenthesized_expression "(param_1 + 9 == local_60)" ( (binary_expression "param_1 + 9 == local_60" (binary_expression "param_1 + 9" identifier + number_literal) == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" else (compound_statement "{\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);" do (compound_statement "{\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    }" { (expression_statement "uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);" (assignment_expression "uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" identifier = (call_expression "FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" identifier (argument_list "(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" ( (pointer_expression "*local_60" * identifier) , identifier , identifier , identifier , identifier , (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) , (subscript_expression "param_1[7]" identifier [ number_literal ]) , (pointer_expression "&local_58" & identifier) )))) ;) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" identifier = (binary_expression "local_60 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((undefined8 *)param_1[0xf] != local_60)" ( (binary_expression "(undefined8 *)param_1[0xf] != local_60" (cast_expression "(undefined8 *)param_1[0xf]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xf]" identifier [ number_literal ])) != identifier) )) ;) (expression_statement "local_60 = (long *)param_1[0xb];" (assignment_expression "local_60 = (long *)param_1[0xb]" identifier = (cast_expression "(long *)param_1[0xb]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0xb]" identifier [ number_literal ]))) ;) (if_statement "if (local_60 == param_1 + 9) goto LAB_002c4abf;" if (parenthesized_expression "(local_60 == param_1 + 9)" ( (binary_expression "local_60 == param_1 + 9" identifier == (binary_expression "param_1 + 9" identifier + number_literal)) )) (goto_statement "goto LAB_002c4abf;" goto statement_identifier ;)) }))) (do_statement "do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);" do (compound_statement "{\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  }" { (expression_statement "local_78 = param_1 + 9;" (assignment_expression "local_78 = param_1 + 9" identifier = (binary_expression "param_1 + 9" identifier + number_literal)) ;) (expression_statement "uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);" (assignment_expression "uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" identifier = (call_expression "FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" identifier (argument_list "(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" ( (subscript_expression "local_60[4]" identifier [ number_literal ]) , identifier , identifier , identifier , identifier , (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) , (subscript_expression "param_1[7]" identifier [ number_literal ]) )))) ;) (expression_statement "local_60 = (long *)thunk_FUN_002f1310(local_60);" (assignment_expression "local_60 = (long *)thunk_FUN_002f1310(local_60)" identifier = (cast_expression "(long *)thunk_FUN_002f1310(local_60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "thunk_FUN_002f1310(local_60)" identifier (argument_list "(local_60)" ( identifier ))))) ;) }) while (parenthesized_expression "(local_60 != local_78)" ( (binary_expression "local_60 != local_78" identifier != identifier) )) ;) (labeled_statement "LAB_002c4abf:\n  puVar5 = local_50;" statement_identifier : (expression_statement "puVar5 = local_50;" (assignment_expression "puVar5 = local_50" identifier = identifier) ;)) (if_statement "if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }" if (parenthesized_expression "(local_58 != local_50)" ( (binary_expression "local_58 != local_50" identifier != identifier) )) (compound_statement "{\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }" { (expression_statement "local_60 = local_58;" (assignment_expression "local_60 = local_58" identifier = identifier) ;) (do_statement "do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);" do (compound_statement "{\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    }" { (expression_statement "uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);" (assignment_expression "uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" identifier = (call_expression "FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" identifier (argument_list "(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" ( (pointer_expression "*local_60" * identifier) , identifier , identifier , identifier , identifier , (binary_expression "uVar4 & 0xffffffff" identifier & number_literal) , (subscript_expression "local_60[1]" identifier [ number_literal ]) , (pointer_expression "*(undefined1 *)(local_60 + 2)" * (cast_expression "(undefined1 *)(local_60 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 2)" ( (binary_expression "local_60 + 2" identifier + number_literal) )))) , (subscript_expression "param_1[7]" identifier [ number_literal ]) )))) ;) (expression_statement "local_60 = local_60 + 3;" (assignment_expression "local_60 = local_60 + 3" identifier = (binary_expression "local_60 + 3" identifier + number_literal)) ;) (expression_statement "puVar5 = local_58;" (assignment_expression "puVar5 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(local_50 != local_60)" ( (binary_expression "local_50 != local_60" identifier != identifier) )) ;) })) (if_statement "if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }" if (parenthesized_expression "(puVar5 != (undefined8 *)0x0)" ( (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_002eff50();\n  }" { (expression_statement "FUN_002eff50();" (call_expression "FUN_002eff50()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (subscript_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 * IDENT) + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (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 *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (compound_statement { (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , (subscript_expression IDENT [ LIT ]) , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) }))) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT & LIT) , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (subscript_expression IDENT [ LIT ]) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_002c4990(long *param_1,undefined8 param_2)\n\n{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_002c4990(long *param_1,undefined8 param_2)" (identifier "FUN_002c4990") (parameter_list "(long *param_1,undefined8 param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  byte bVar1;\n  long lVar2;\n  undefined8 uVar3;\n  ulong uVar4;\n  undefined8 *puVar5;\n  long lVar6;\n  long *local_78;\n  long *local_60;\n  undefined8 *local_58;\n  undefined8 *local_50;\n  undefined8 local_48;\n  \n  bVar1 = *(byte *)(param_1 + 4);\n  if ((bVar1 & 1) == 0) {\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }\n  lVar2 = param_1[1];\n  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }\n  if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }\n  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;\n  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);\n  local_58 = (undefined8 *)0x0;\n  local_50 = (undefined8 *)0x0;\n  local_60 = (long *)param_1[0xe];\n  local_48 = 0;\n  if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }\n  do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);\nLAB_002c4abf:\n  puVar5 = local_50;\n  if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }\n  if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long *local_78;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_78" (* "*") (identifier "local_78")) (; ";")) (declaration "long *local_60;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "undefined8 *local_58;" (type_identifier "undefined8") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "undefined8 *local_50;" (type_identifier "undefined8") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((bVar1 & 1) == 0) {\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }" (if "if") (parenthesized_expression "((bVar1 & 1) == 0)" (( "(") (binary_expression "(bVar1 & 1) == 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0018dcf0("../../gold/output.h",0xc5,"address");\n  }" ({ "{") (expression_statement "FUN_0018dcf0("../../gold/output.h",0xc5,"address");" (call_expression "FUN_0018dcf0("../../gold/output.h",0xc5,"address")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/output.h",0xc5,"address")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xc5") (, ",") (string_literal ""address"" (" """) (string_content "address") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar2 = param_1[1];" (assignment_expression "lVar2 = param_1[1]" (identifier "lVar2") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {\n    uVar4 = param_1[6];\n  }\n  else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" (if "if") (parenthesized_expression "(*(code **)(*param_1 + 0x18) == FUN_00170dc0)" (( "(") (binary_expression "*(code **)(*param_1 + 0x18) == FUN_00170dc0" (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")")))) (== "==") (identifier "FUN_00170dc0")) () ")")) (compound_statement "{\n    uVar4 = param_1[6];\n  }" ({ "{") (expression_statement "uVar4 = param_1[6];" (assignment_expression "uVar4 = param_1[6]" (identifier "uVar4") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" (else "else") (compound_statement "{\n    uVar4 = (**(code **)(*param_1 + 0x18))();\n    bVar1 = *(byte *)(param_1 + 4);\n  }" ({ "{") (expression_statement "uVar4 = (**(code **)(*param_1 + 0x18))();" (assignment_expression "uVar4 = (**(code **)(*param_1 + 0x18))()" (identifier "uVar4") (= "=") (call_expression "(**(code **)(*param_1 + 0x18))()" (parenthesized_expression "(**(code **)(*param_1 + 0x18))" (( "(") (pointer_expression "**(code **)(*param_1 + 0x18)" (* "*") (pointer_expression "*(code **)(*param_1 + 0x18)" (* "*") (cast_expression "(code **)(*param_1 + 0x18)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 0x18)" (( "(") (binary_expression "*param_1 + 0x18" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x18")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar1 = *(byte *)(param_1 + 4);" (assignment_expression "bVar1 = *(byte *)(param_1 + 4)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 4)" (* "*") (cast_expression "(byte *)(param_1 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((bVar1 & 4) == 0) {\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }" (if "if") (parenthesized_expression "((bVar1 & 4) == 0)" (( "(") (binary_expression "(bVar1 & 4) == 0" (parenthesized_expression "(bVar1 & 4)" (( "(") (binary_expression "bVar1 & 4" (identifier "bVar1") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");\n  }" ({ "{") (labeled_statement "LAB_002c4b65:\n                    \n    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");" (statement_identifier "LAB_002c4b65") (: ":") (expression_statement "FUN_0018dcf0("../../gold/output.h",0xe3,"offset");" (call_expression "FUN_0018dcf0("../../gold/output.h",0xe3,"offset")" (identifier "FUN_0018dcf0") (argument_list "("../../gold/output.h",0xe3,"offset")" (( "(") (string_literal ""../../gold/output.h"" (" """) (string_content "../../gold/output.h") (" """)) (, ",") (number_literal "0xe3") (, ",") (string_literal ""offset"" (" """) (string_content "offset") (" """)) () ")"))) (; ";"))) (} "}"))) (if_statement "if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;" (if "if") (parenthesized_expression "((*(byte *)(param_1[5] + 0x20) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(param_1[5] + 0x20) & 4) == 0" (parenthesized_expression "(*(byte *)(param_1[5] + 0x20) & 4)" (( "(") (binary_expression "*(byte *)(param_1[5] + 0x20) & 4" (pointer_expression "*(byte *)(param_1[5] + 0x20)" (* "*") (cast_expression "(byte *)(param_1[5] + 0x20)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + 0x20)" (( "(") (binary_expression "param_1[5] + 0x20" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x20")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002c4b65;" (goto "goto") (statement_identifier "LAB_002c4b65") (; ";"))) (expression_statement "lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);" (assignment_expression "lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18)" (identifier "lVar6") (= "=") (binary_expression "param_1[3] - *(long *)(param_1[5] + 0x18)" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (- "-") (pointer_expression "*(long *)(param_1[5] + 0x18)" (* "*") (cast_expression "(long *)(param_1[5] + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[5] + 0x18)" (( "(") (binary_expression "param_1[5] + 0x18" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x18")) () ")")))))) (; ";")) (expression_statement "local_58 = (undefined8 *)0x0;" (assignment_expression "local_58 = (undefined8 *)0x0" (identifier "local_58") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_50 = (undefined8 *)0x0;" (assignment_expression "local_50 = (undefined8 *)0x0" (identifier "local_50") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_60 = (long *)param_1[0xe];" (assignment_expression "local_60 = (long *)param_1[0xe]" (identifier "local_60") (= "=") (cast_expression "(long *)param_1[0xe]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_60 == (undefined8 *)param_1[0xf]) {\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }\n  else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" (if "if") (parenthesized_expression "(local_60 == (undefined8 *)param_1[0xf])" (( "(") (binary_expression "local_60 == (undefined8 *)param_1[0xf]" (identifier "local_60") (== "==") (cast_expression "(undefined8 *)param_1[0xf]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]")))) () ")")) (compound_statement "{\n    local_60 = (long *)param_1[0xb];\n    uVar3 = 0;\n    if (param_1 + 9 == local_60) {\n      return;\n    }\n  }" ({ "{") (expression_statement "local_60 = (long *)param_1[0xb];" (assignment_expression "local_60 = (long *)param_1[0xb]" (identifier "local_60") (= "=") (cast_expression "(long *)param_1[0xb]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 + 9 == local_60) {\n      return;\n    }" (if "if") (parenthesized_expression "(param_1 + 9 == local_60)" (( "(") (binary_expression "param_1 + 9 == local_60" (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9")) (== "==") (identifier "local_60")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" (else "else") (compound_statement "{\n    uVar3 = 0;\n    do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);\n    local_60 = (long *)param_1[0xb];\n    if (local_60 == param_1 + 9) goto LAB_002c4abf;\n  }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    } while ((undefined8 *)param_1[0xf] != local_60);" (do "do") (compound_statement "{\n                    \n      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);\n      local_60 = local_60 + 1;\n    }" ({ "{") (expression_statement "uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58);" (assignment_expression "uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" (identifier "uVar3") (= "=") (call_expression "FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" (identifier "FUN_002c47e0") (argument_list "(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],\n                           &local_58)" (( "(") (pointer_expression "*local_60" (* "*") (identifier "local_60")) (, ",") (identifier "param_2") (, ",") (identifier "lVar6") (, ",") (identifier "uVar3") (, ",") (identifier "lVar2") (, ",") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) (, ",") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (, ",") (pointer_expression "&local_58" (& "&") (identifier "local_58")) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 1;" (assignment_expression "local_60 = local_60 + 1" (identifier "local_60") (= "=") (binary_expression "local_60 + 1" (identifier "local_60") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined8 *)param_1[0xf] != local_60)" (( "(") (binary_expression "(undefined8 *)param_1[0xf] != local_60" (cast_expression "(undefined8 *)param_1[0xf]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (!= "!=") (identifier "local_60")) () ")")) (; ";")) (expression_statement "local_60 = (long *)param_1[0xb];" (assignment_expression "local_60 = (long *)param_1[0xb]" (identifier "local_60") (= "=") (cast_expression "(long *)param_1[0xb]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")))) (; ";")) (if_statement "if (local_60 == param_1 + 9) goto LAB_002c4abf;" (if "if") (parenthesized_expression "(local_60 == param_1 + 9)" (( "(") (binary_expression "local_60 == param_1 + 9" (identifier "local_60") (== "==") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9"))) () ")")) (goto_statement "goto LAB_002c4abf;" (goto "goto") (statement_identifier "LAB_002c4abf") (; ";"))) (} "}")))) (do_statement "do {\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  } while (local_60 != local_78);" (do "do") (compound_statement "{\n    local_78 = param_1 + 9;\n    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);\n    local_60 = (long *)thunk_FUN_002f1310(local_60);\n  }" ({ "{") (expression_statement "local_78 = param_1 + 9;" (assignment_expression "local_78 = param_1 + 9" (identifier "local_78") (= "=") (binary_expression "param_1 + 9" (identifier "param_1") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);" (assignment_expression "uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" (identifier "uVar3") (= "=") (call_expression "FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" (identifier "FUN_002c47e0") (argument_list "(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7])" (( "(") (subscript_expression "local_60[4]" (identifier "local_60") ([ "[") (number_literal "4") (] "]")) (, ",") (identifier "param_2") (, ",") (identifier "lVar6") (, ",") (identifier "uVar3") (, ",") (identifier "lVar2") (, ",") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) (, ",") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) () ")")))) (; ";")) (expression_statement "local_60 = (long *)thunk_FUN_002f1310(local_60);" (assignment_expression "local_60 = (long *)thunk_FUN_002f1310(local_60)" (identifier "local_60") (= "=") (cast_expression "(long *)thunk_FUN_002f1310(local_60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "thunk_FUN_002f1310(local_60)" (identifier "thunk_FUN_002f1310") (argument_list "(local_60)" (( "(") (identifier "local_60") () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_60 != local_78)" (( "(") (binary_expression "local_60 != local_78" (identifier "local_60") (!= "!=") (identifier "local_78")) () ")")) (; ";")) (labeled_statement "LAB_002c4abf:\n  puVar5 = local_50;" (statement_identifier "LAB_002c4abf") (: ":") (expression_statement "puVar5 = local_50;" (assignment_expression "puVar5 = local_50" (identifier "puVar5") (= "=") (identifier "local_50")) (; ";"))) (if_statement "if (local_58 != local_50) {\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }" (if "if") (parenthesized_expression "(local_58 != local_50)" (( "(") (binary_expression "local_58 != local_50" (identifier "local_58") (!= "!=") (identifier "local_50")) () ")")) (compound_statement "{\n    local_60 = local_58;\n    do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);\n  }" ({ "{") (expression_statement "local_60 = local_58;" (assignment_expression "local_60 = local_58" (identifier "local_60") (= "=") (identifier "local_58")) (; ";")) (do_statement "do {\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    } while (local_50 != local_60);" (do "do") (compound_statement "{\n      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);\n      local_60 = local_60 + 3;\n      puVar5 = local_58;\n    }" ({ "{") (expression_statement "uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7]);" (assignment_expression "uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" (identifier "uVar3") (= "=") (call_expression "FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" (identifier "FUN_002c21a0") (argument_list "(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],\n                           *(undefined1 *)(local_60 + 2),param_1[7])" (( "(") (pointer_expression "*local_60" (* "*") (identifier "local_60")) (, ",") (identifier "param_2") (, ",") (identifier "lVar6") (, ",") (identifier "uVar3") (, ",") (identifier "lVar2") (, ",") (binary_expression "uVar4 & 0xffffffff" (identifier "uVar4") (& "&") (number_literal "0xffffffff")) (, ",") (subscript_expression "local_60[1]" (identifier "local_60") ([ "[") (number_literal "1") (] "]")) (, ",") (pointer_expression "*(undefined1 *)(local_60 + 2)" (* "*") (cast_expression "(undefined1 *)(local_60 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_60 + 2)" (( "(") (binary_expression "local_60 + 2" (identifier "local_60") (+ "+") (number_literal "2")) () ")")))) (, ",") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) () ")")))) (; ";")) (expression_statement "local_60 = local_60 + 3;" (assignment_expression "local_60 = local_60 + 3" (identifier "local_60") (= "=") (binary_expression "local_60 + 3" (identifier "local_60") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar5 = local_58;" (assignment_expression "puVar5 = local_58" (identifier "puVar5") (= "=") (identifier "local_58")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_50 != local_60)" (( "(") (binary_expression "local_50 != local_60" (identifier "local_50") (!= "!=") (identifier "local_60")) () ")")) (; ";")) (} "}"))) (if_statement "if (puVar5 != (undefined8 *)0x0) {\n    FUN_002eff50();\n  }" (if "if") (parenthesized_expression "(puVar5 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar5 != (undefined8 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_002eff50();\n  }" ({ "{") (expression_statement "FUN_002eff50();" (call_expression "FUN_002eff50()" (identifier "FUN_002eff50") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original name: do_sized_write<32, true>
   DWARF original prototype: void do_sized_write<32,_true>(Eh_frame * this, uchar * oview) */

void __thiscall var_7::Eh_frame::do_sized_write<32,var_10>(Eh_frame *this,type_11 *oview)

{
  byte var_1;
  uint64_t address;
  type_1 *var_3;
  type_2 *pOVar3;
  type_3 addralign;
  type_4 offset;
  type_5 var_13;
  long output_offset;
  type_6 *var_12;
  type_7 *local_68;
  type_8 *var_9;
  type_7 post_fdes;
  
  var_1 = (this->super_Output_section_data).super_Output_data.field_0x20;
  if ((var_1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/output.h",0xc5,"address");
  }
  address = (this->super_Output_section_data).super_Output_data.address_;
  var_3 = (this->super_Output_section_data).super_Output_data._vptr_Output_data[3];
  if (var_3 == var_4::do_addralign) {
    addralign = (type_3)(this->super_Output_section_data).addralign_;
  }
  else {
    addralign = (*var_3)();
    var_1 = (this->super_Output_section_data).super_Output_data.field_0x20;
  }
  if ((var_1 & 4) == 0) {
LAB_002c4b65:
                    /* WARNING: Subroutine does not return */
    var_2("../../gold/output.h",0xe3,"offset");
  }
  pOVar3 = (this->super_Output_section_data).output_section_;
  if (((pOVar3->super_Output_data).field_0x20 & 4) == 0) goto LAB_002c4b65;
  output_offset =
       (this->super_Output_section_data).super_Output_data.offset_ -
       (pOVar3->super_Output_data).offset_;
  post_fdes.super__Vector_base<var_7::var_5,_std::allocator<var_7::var_5>var_6>._M_impl._M_start =
       (type_5)0x0;
  post_fdes.super__Vector_base<var_7::var_5,_std::allocator<var_7::var_5>var_6>._M_impl._M_finish =
       (type_5)0x0;
  var_9 = (type_8 *)
             (this->unmergeable_cie_offsets_).
             super__Vector_base<var_7::type_9*,var_8::allocator<var_7::type_9*>var_6>._M_impl._M_start;
  post_fdes.super__Vector_base<var_7::var_5,_std::allocator<var_7::var_5>var_6>._M_impl.
  _M_end_of_storage = (type_5)0x0;
  if (var_9 ==
      (type_8 *)
      (this->unmergeable_cie_offsets_).super__Vector_base<var_7::type_9*,var_8::allocator<var_7::type_9*>var_6>.
      _M_impl._M_finish) {
    var_9 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
    offset = 0;
    if (&(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header == (type_6 *)var_9) {
      return;
    }
  }
  else {
    offset = 0;
    do {
                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */
      offset = type_9::write<32,var_10>
                         (*(type_9 **)var_9,oview,output_offset,offset,address,addralign,
                          this->eh_frame_hdr_,&post_fdes);
      var_9 = (type_8 *)((long)var_9 + 8);
    } while ((type_8 *)
             (this->unmergeable_cie_offsets_).
             super__Vector_base<var_7::type_9*,var_8::allocator<var_7::type_9*>var_6>._M_impl._M_finish !=
             var_9);
    var_9 = (this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header._M_header._M_left;
    if ((type_6 *)var_9 == &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header)
    goto LAB_002c4abf;
  }
  do {
    var_12 = &(this->cie_offsets_)._M_t._M_impl.super__Rb_tree_header;
    local_68 = &post_fdes;
    offset = type_9::write<32,var_10>
                       (*(type_9 **)(var_9 + 1),oview,output_offset,offset,address,addralign,
                        this->eh_frame_hdr_,local_68);
    var_9 = (type_8 *)std::var_11(var_9);
  } while ((type_6 *)var_9 != var_12);
LAB_002c4abf:
  var_13 = post_fdes.super__Vector_base<var_7::var_5,var_8::allocator<var_7::var_5>var_6>._M_impl.
           _M_finish;
  if (post_fdes.super__Vector_base<var_7::var_5,var_8::allocator<var_7::var_5>var_6>._M_impl._M_start
      != post_fdes.super__Vector_base<var_7::var_5,var_8::allocator<var_7::var_5>var_6>._M_impl.
         _M_finish) {
    var_9 = (type_8 *)
               post_fdes.super__Vector_base<var_7::var_5,var_8::allocator<var_7::var_5>var_6>._M_impl
               ._M_start;
    do {
      offset = type_10::write<32,var_10>
                         (*(type_10 **)&var_9->_M_color,oview,output_offset,offset,address,addralign,
                          (type_4)var_9->_M_parent,*(type_11 *)&var_9->_M_left,
                          this->eh_frame_hdr_);
      var_9 = (type_8 *)((long)var_9 + 0x18);
      var_13 = post_fdes.super__Vector_base<var_7::var_5,var_8::allocator<var_7::var_5>var_6>._M_impl
               ._M_start;
    } while ((type_8 *)
             post_fdes.super__Vector_base<var_7::var_5,var_8::allocator<var_7::var_5>var_6>._M_impl.
             _M_finish != var_9);
  }
  if (var_13 != (type_5)0x0) {
    var_14(var_13);
  }
  return;
}


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

void MASKED(long *param_1,undefined8 param_2)

{
  byte bVar1;
  long lVar2;
  undefined8 uVar3;
  ulong uVar4;
  undefined8 *puVar5;
  long lVar6;
  long *local_78;
  long *local_60;
  undefined8 *local_58;
  undefined8 *local_50;
  undefined8 local_48;
  
  bVar1 = *(byte *)(param_1 + 4);
  if ((bVar1 & 1) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/output.h",0xc5,"address");
  }
  lVar2 = param_1[1];
  if (*(code **)(*param_1 + 0x18) == FUN_00170dc0) {
    uVar4 = param_1[6];
  }
  else {
    uVar4 = (**(code **)(*param_1 + 0x18))();
    bVar1 = *(byte *)(param_1 + 4);
  }
  if ((bVar1 & 4) == 0) {
LAB_002c4b65:
                    /* WARNING: Subroutine does not return */
    FUN_0018dcf0("../../gold/output.h",0xe3,"offset");
  }
  if ((*(byte *)(param_1[5] + 0x20) & 4) == 0) goto LAB_002c4b65;
  lVar6 = param_1[3] - *(long *)(param_1[5] + 0x18);
  local_58 = (undefined8 *)0x0;
  local_50 = (undefined8 *)0x0;
  local_60 = (long *)param_1[0xe];
  local_48 = 0;
  if (local_60 == (undefined8 *)param_1[0xf]) {
    local_60 = (long *)param_1[0xb];
    uVar3 = 0;
    if (param_1 + 9 == local_60) {
      return;
    }
  }
  else {
    uVar3 = 0;
    do {
                    /* try { // try from 002c4a49 to 002c4af9 has its CatchHandler @ 002c4b95 */
      uVar3 = FUN_002c47e0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7],
                           &local_58);
      local_60 = local_60 + 1;
    } while ((undefined8 *)param_1[0xf] != local_60);
    local_60 = (long *)param_1[0xb];
    if (local_60 == param_1 + 9) goto LAB_002c4abf;
  }
  do {
    local_78 = param_1 + 9;
    uVar3 = FUN_002c47e0(local_60[4],param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,param_1[7]);
    local_60 = (long *)thunk_FUN_002f1310(local_60);
  } while (local_60 != local_78);
LAB_002c4abf:
  puVar5 = local_50;
  if (local_58 != local_50) {
    local_60 = local_58;
    do {
      uVar3 = FUN_002c21a0(*local_60,param_2,lVar6,uVar3,lVar2,uVar4 & 0xffffffff,local_60[1],
                           *(undefined1 *)(local_60 + 2),param_1[7]);
      local_60 = local_60 + 3;
      puVar5 = local_58;
    } while (local_50 != local_60);
  }
  if (puVar5 != (undefined8 *)0x0) {
    FUN_002eff50();
  }
  return;
}

