
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: layout_eh_frame<64, false>
   DWARF original prototype: Output_section * layout_eh_frame<64,_false>(Layout * this,
   Sized_relobj_file<64,_false> * object, uchar * symbols, off_t symbols_size, uchar * symbol_names,
   off_t symbol_names_size, uint shndx, Shdr<64,_false> * shdr, uint reloc_shndx, uint reloc_type,
   off_t * off) */

Output_section * __thiscall
gold::Layout::layout_eh_frame<64,_false>
          (Layout *this,Sized_relobj_file<64,_false> *object,uchar *symbols,off_t symbols_size,
          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,
          uint reloc_shndx,uint reloc_type,off_t *off)

{
  Elf_Word EVar1;
  Elf_Xword EVar2;
  uint uVar3;
  bool bVar4;
  Eh_frame_section_disposition EVar5;
  Output_section_order OVar6;
  Output_section *this_00;
  off_t oVar7;
  
  if (parameters->target_ == (Target *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x69,"target");
  }
  EVar1 = shdr->p_->sh_type;
  if ((*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1) && (EVar1 != 1)) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/layout.cc",0x5a4,"layout_eh_frame");
  }
  if ((shdr->p_->sh_flags & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/layout.cc",0x5a5,"layout_eh_frame");
  }
  this_00 = make_eh_frame_section(this,(Relobj *)object);
  if (this_00 != (Output_section *)0x0) {
    if (this->eh_frame_section_ != this_00) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");
    }
    EVar2 = this_00->flags_;
    bVar4 = Parameters::incremental(parameters);
    uVar3 = (uint)EVar2;
    if (!bVar4) {
      EVar5 = Eh_frame::add_ehframe_input_section<64,_false>
                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,
                         symbol_names_size,shndx,reloc_shndx,reloc_type);
      if (EVar5 == EH_OPTIMIZABLE_SECTION) {
        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);
        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {
          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;
          this_00->order_ = ORDER_RELRO;
        }
        *off = -1;
        return this_00;
      }
      if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {
        Output_section::add_output_section_data
                  (this_00,&this->eh_frame_data_->super_Output_section_data);
        this->added_eh_frame_data_ = true;
      }
    }
    oVar7 = Output_section::add_input_section<64,_false>
                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,
                       (this->script_options_->script_sections_).saw_sections_clause_);
    *off = oVar7;
    EVar2 = this_00->flags_;
    this->have_added_input_section_ = true;
    if (((uVar3 ^ (uint)EVar2) & 5) != 0) {
      OVar6 = default_section_order(this,this_00,false);
      this_00->order_ = OVar6;
    }
  }
  return this_00;
}



long FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,
                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  long lVar5;
  undefined8 uVar6;
  
  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x69,"target");
  }
  iVar3 = *(int *)(*param_8 + 4);
  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))
  {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");
  }
  if ((*(byte *)(*param_8 + 8) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");
  }
  lVar5 = FUN_001ad510(param_1,param_2);
  if (lVar5 != 0) {
    if (*(long *)(param_1 + 0x308) != lVar5) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");
    }
    uVar6 = *(undefined8 *)(lVar5 + 0x70);
    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);
    uVar1 = (uint)uVar6;
    if (cVar2 == '\0') {
      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,
                           param_7,param_9,param_10);
      if (iVar3 == 2) {
        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));
        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {
          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;
          *(undefined4 *)(lVar5 + 0x78) = 0x13;
        }
        *param_11 = 0xffffffffffffffff;
        return lVar5;
      }
      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {
        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));
        *(undefined1 *)(param_1 + 0x318) = 1;
      }
    }
    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,
                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));
    *param_11 = uVar6;
    uVar6 = *(undefined8 *)(lVar5 + 0x70);
    *(undefined1 *)(param_1 + 0x368) = 1;
    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {
      uVar4 = FUN_001a5050(param_1,lVar5,0);
      *(undefined4 *)(lVar5 + 0x78) = uVar4;
    }
  }
  return lVar5;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
MOV RAX,qword ptr [0x0043e6b0]
MOV qword ptr [RSP],RDX
MOV RAX,qword ptr [RAX + 0x18]
MOV qword ptr [RSP + 0x8],RCX
TEST RAX,RAX
JZ 0x001b73e9
MOV RBX,qword ptr [RSP + 0x58]
MOV RAX,qword ptr [RAX + 0x8]
MOV R13,RDI
MOV RBP,RSI
MOV R14,R8
MOV R15,R9
MOV RDX,qword ptr [RBX]
MOV ECX,dword ptr [RDX + 0x4]
CMP dword ptr [RAX + 0x7c],ECX
JZ 0x001b7244
CMP ECX,0x1
JNZ 0x001b7377
TEST byte ptr [RDX + 0x8],0x2
JZ 0x001b73d1
MOV RSI,RBP
MOV RDI,R13
CALL 0x001ad510
MOV R12,RAX
TEST RAX,RAX
JZ 0x001b72d4
CMP qword ptr [R13 + 0x308],RAX
JNZ 0x001b7401
MOV RDI,qword ptr [0x0043e6b0]
MOV RBX,qword ptr [RAX + 0x70]
CALL 0x002379a0
TEST AL,AL
JZ 0x001b72f0
MOV RAX,qword ptr [R13 + 0x8]
MOV RDX,RBP
MOV RSI,R13
MOV RDI,R12
LEA R8,[0x3762fd]
MOVZX EAX,byte ptr [RAX + 0x148]
PUSH RAX
MOV EAX,dword ptr [RSP + 0x68]
PUSH RAX
MOV R9,qword ptr [RSP + 0x68]
MOV ECX,dword ptr [RSP + 0x60]
CALL 0x00227910
MOV RSI,qword ptr [RSP + 0x80]
MOV qword ptr [RSI],RAX
XOR RBX,qword ptr [R12 + 0x70]
AND EBX,0x5
MOV byte ptr [R13 + 0x368],0x1
POP RAX
POP RDX
JNZ 0x001b7360
ADD RSP,0x18
MOV RAX,R12
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
SUB RSP,0x8
MOV R9,R15
MOV R8,R14
MOV RSI,RBP
MOV EAX,dword ptr [RSP + 0x70]
MOV RDI,qword ptr [R13 + 0x310]
PUSH RAX
MOV EAX,dword ptr [RSP + 0x70]
PUSH RAX
MOV EAX,dword ptr [RSP + 0x68]
PUSH RAX
MOV RCX,qword ptr [RSP + 0x28]
MOV RDX,qword ptr [RSP + 0x20]
CALL 0x002aea50
ADD RSP,0x20
CMP EAX,0x2
JZ 0x001b7390
CMP EAX,0x3
JNZ 0x001b7282
CMP byte ptr [R13 + 0x318],0x0
JNZ 0x001b7282
MOV RSI,qword ptr [R13 + 0x310]
MOV RDI,R12
CALL 0x001f9c60
MOV byte ptr [R13 + 0x318],0x1
JMP 0x001b7282
XOR EDX,EDX
MOV RSI,R12
MOV RDI,R13
CALL 0x001a5050
MOV dword ptr [R12 + 0x78],EAX
JMP 0x001b72d4
LEA RDX,[0x3770b0]
MOV ESI,0x5a4
LEA RDI,[0x37612f]
CALL 0x0017c650
MOV RAX,qword ptr [RSP + 0x58]
MOV RDI,R12
MOV RAX,qword ptr [RAX]
MOV RSI,qword ptr [RAX + 0x8]
CALL 0x001f5d70
XOR RBX,qword ptr [R12 + 0x70]
AND EBX,0x5
JZ 0x001b73c0
OR byte ptr [R12 + 0xc9],0x20
MOV dword ptr [R12 + 0x78],0x13
MOV RAX,qword ptr [RSP + 0x70]
MOV qword ptr [RAX],-0x1
JMP 0x001b72d4
LEA RDX,[0x3770b0]
MOV ESI,0x5a5
LEA RDI,[0x37612f]
CALL 0x0017c650
LEA RDX,[0x37784b]
MOV ESI,0x69
LEA RDI,[0x3726d0]
CALL 0x0017c650
LEA RDX,[0x3770b0]
MOV ESI,0x5ab
LEA RDI,[0x37612f]
CALL 0x0017c650
(translation_unit "long FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)\n\n{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}\n\n" (function_definition "long FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)\n\n{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "long *param_8" (sized_type_specifier "long" long) (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "undefined8 *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "iVar3 = *(int *)(*param_8 + 4);" (assignment_expression "iVar3 = *(int *)(*param_8 + 4)" identifier = (pointer_expression "*(int *)(*param_8 + 4)" * (cast_expression "(int *)(*param_8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_8 + 4)" ( (binary_expression "*param_8 + 4" (pointer_expression "*param_8" * identifier) + number_literal) ))))) ;) (if_statement "if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" if (parenthesized_expression "((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))" ( (binary_expression "(*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1)" (parenthesized_expression "(*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3)" ( (binary_expression "*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3" (pointer_expression "*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" * (cast_expression "(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) != identifier) )) && (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5a4,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" if (parenthesized_expression "((*(byte *)(*param_8 + 8) & 2) == 0)" ( (binary_expression "(*(byte *)(*param_8 + 8) & 2) == 0" (parenthesized_expression "(*(byte *)(*param_8 + 8) & 2)" ( (binary_expression "*(byte *)(*param_8 + 8) & 2" (pointer_expression "*(byte *)(*param_8 + 8)" * (cast_expression "(byte *)(*param_8 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_8 + 8)" ( (binary_expression "*param_8 + 8" (pointer_expression "*param_8" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5a5,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (expression_statement "lVar5 = FUN_001ad510(param_1,param_2);" (assignment_expression "lVar5 = FUN_001ad510(param_1,param_2)" identifier = (call_expression "FUN_001ad510(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }" { (if_statement "if (*(long *)(param_1 + 0x308) != lVar5) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x308) != lVar5)" ( (binary_expression "*(long *)(param_1 + 0x308) != lVar5" (pointer_expression "*(long *)(param_1 + 0x308)" * (cast_expression "(long *)(param_1 + 0x308)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x308)" ( (binary_expression "param_1 + 0x308" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5ab,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (expression_statement "uVar6 = *(undefined8 *)(lVar5 + 0x70);" (assignment_expression "uVar6 = *(undefined8 *)(lVar5 + 0x70)" identifier = (pointer_expression "*(undefined8 *)(lVar5 + 0x70)" * (cast_expression "(undefined8 *)(lVar5 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);" (assignment_expression "cVar2 = FUN_002379a0(PTR_DAT_0043e6b0)" identifier = (call_expression "FUN_002379a0(PTR_DAT_0043e6b0)" identifier (argument_list "(PTR_DAT_0043e6b0)" ( identifier )))) ;) (expression_statement "uVar1 = (uint)uVar6;" (assignment_expression "uVar1 = (uint)uVar6" identifier = (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }" { (expression_statement "iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);" (assignment_expression "iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" identifier = (call_expression "FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x310)" * (cast_expression "(undefined8 *)(param_1 + 0x310)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }" if (parenthesized_expression "(iVar3 == 2)" ( (binary_expression "iVar3 == 2" identifier == number_literal) )) (compound_statement "{\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }" { (expression_statement "FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));" (call_expression "FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8))" identifier (argument_list "(lVar5,*(undefined8 *)(*param_8 + 8))" ( identifier , (pointer_expression "*(undefined8 *)(*param_8 + 8)" * (cast_expression "(undefined8 *)(*param_8 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_8 + 8)" ( (binary_expression "*param_8 + 8" (pointer_expression "*param_8" * identifier) + number_literal) )))) ))) ;) (if_statement "if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }" if (parenthesized_expression "(((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0)" ( (binary_expression "((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0" (parenthesized_expression "((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5)" ( (binary_expression "(uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5" (parenthesized_expression "(uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70))" ( (binary_expression "uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)" identifier ^ (binary_expression "(uint)*(undefined8 *)(lVar5 + 0x70)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(undefined8 *)(lVar5 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) ))))) )) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }" { (expression_statement "*(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;" (assignment_expression "*(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20" (pointer_expression "*(byte *)(lVar5 + 0xc9)" * (cast_expression "(byte *)(lVar5 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc9)" ( (binary_expression "lVar5 + 0xc9" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar5 + 0xc9) | 0x20" (pointer_expression "*(byte *)(lVar5 + 0xc9)" * (cast_expression "(byte *)(lVar5 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc9)" ( (binary_expression "lVar5 + 0xc9" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)(lVar5 + 0x78) = 0x13;" (assignment_expression "*(undefined4 *)(lVar5 + 0x78) = 0x13" (pointer_expression "*(undefined4 *)(lVar5 + 0x78)" * (cast_expression "(undefined4 *)(lVar5 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x78)" ( (binary_expression "lVar5 + 0x78" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "*param_11 = 0xffffffffffffffff;" (assignment_expression "*param_11 = 0xffffffffffffffff" (pointer_expression "*param_11" * identifier) = number_literal) ;) (return_statement "return lVar5;" return identifier ;) })) (if_statement "if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }" if (parenthesized_expression "((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0'))" ( (binary_expression "(iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')" (parenthesized_expression "(iVar3 == 3)" ( (binary_expression "iVar3 == 3" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x318) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x318) == '\0'" (pointer_expression "*(char *)(param_1 + 0x318)" * (cast_expression "(char *)(param_1 + 0x318)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x318)" ( (binary_expression "param_1 + 0x318" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }" { (expression_statement "FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));" (call_expression "FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310))" identifier (argument_list "(lVar5,*(undefined8 *)(param_1 + 0x310))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x310)" * (cast_expression "(undefined8 *)(param_1 + 0x310)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x318) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x318) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x318)" * (cast_expression "(undefined1 *)(param_1 + 0x318)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x318)" ( (binary_expression "param_1 + 0x318" identifier + number_literal) )))) = number_literal) ;) })) })) (expression_statement "uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));" (assignment_expression "uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" identifier = (call_expression "FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" identifier (argument_list "(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" ( identifier , identifier , identifier , identifier , (string_literal "".eh_frame"" " string_content ") , identifier , identifier , (pointer_expression "*(undefined1 *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(undefined1 *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "*param_11 = uVar6;" (assignment_expression "*param_11 = uVar6" (pointer_expression "*param_11" * identifier) = identifier) ;) (expression_statement "uVar6 = *(undefined8 *)(lVar5 + 0x70);" (assignment_expression "uVar6 = *(undefined8 *)(lVar5 + 0x70)" identifier = (pointer_expression "*(undefined8 *)(lVar5 + 0x70)" * (cast_expression "(undefined8 *)(lVar5 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x368) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x368) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x368)" * (cast_expression "(undefined1 *)(param_1 + 0x368)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x368)" ( (binary_expression "param_1 + 0x368" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }" if (parenthesized_expression "(((uVar1 ^ (uint)uVar6) & 5) != 0)" ( (binary_expression "((uVar1 ^ (uint)uVar6) & 5) != 0" (parenthesized_expression "((uVar1 ^ (uint)uVar6) & 5)" ( (binary_expression "(uVar1 ^ (uint)uVar6) & 5" (parenthesized_expression "(uVar1 ^ (uint)uVar6)" ( (binary_expression "uVar1 ^ (uint)uVar6" identifier ^ (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }" { (expression_statement "uVar4 = FUN_001a5050(param_1,lVar5,0);" (assignment_expression "uVar4 = FUN_001a5050(param_1,lVar5,0)" identifier = (call_expression "FUN_001a5050(param_1,lVar5,0)" identifier (argument_list "(param_1,lVar5,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(lVar5 + 0x78) = uVar4;" (assignment_expression "*(undefined4 *)(lVar5 + 0x78) = uVar4" (pointer_expression "*(undefined4 *)(lVar5 + 0x78)" * (cast_expression "(undefined4 *)(lVar5 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x78)" ( (binary_expression "lVar5 + 0x78" identifier + number_literal) )))) = identifier) ;) })) })) (return_statement "return lVar5;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original name: layout_eh_frame<64, false>\n   DWARF original prototype: Output_section * layout_eh_frame<64,_false>(Layout * this,\n   Sized_relobj_file<64,_false> * object, uchar * symbols, off_t symbols_size, uchar * symbol_names,\n   off_t symbol_names_size, uint shndx, Shdr<64,_false> * shdr, uint reloc_shndx, uint reloc_type,\n   off_t * off) */\n\nOutput_section * __thiscall\ngold::Layout::layout_eh_frame<64,_false>\n          (Layout *this,Sized_relobj_file<64,_false> *object,uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off)\n\n{\n  Elf_Word EVar1;\n  Elf_Xword EVar2;\n  uint uVar3;\n  bool bVar4;\n  Eh_frame_section_disposition EVar5;\n  Output_section_order OVar6;\n  Output_section *this_00;\n  off_t oVar7;\n  \n  if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  EVar1 = shdr->p_->sh_type;\n  if ((*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1) && (EVar1 != 1)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((shdr->p_->sh_flags & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  this_00 = make_eh_frame_section(this,(Relobj *)object);\n  if (this_00 != (Output_section *)0x0) {\n    if (this->eh_frame_section_ != this_00) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    EVar2 = this_00->flags_;\n    bVar4 = Parameters::incremental(parameters);\n    uVar3 = (uint)EVar2;\n    if (!bVar4) {\n      EVar5 = Eh_frame::add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type);\n      if (EVar5 == EH_OPTIMIZABLE_SECTION) {\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }\n      if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }\n    }\n    oVar7 = Output_section::add_input_section<64,_false>\n                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_);\n    *off = oVar7;\n    EVar2 = this_00->flags_;\n    this->have_added_input_section_ = true;\n    if (((uVar3 ^ (uint)EVar2) & 5) != 0) {\n      OVar6 = default_section_order(this,this_00,false);\n      this_00->order_ = OVar6;\n    }\n  }\n  return this_00;\n}\n\n" comment comment (ERROR "Output_section * __thiscall\ngold::Layout::layout_eh_frame<64,_false>\n          (Layout *this,Sized_relobj_file<64,_false> *object,uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off)" (binary_expression "Output_section * __thiscall\ngold::Layout::layout_eh_frame<64,_false>\n          (Layout *this,Sized_relobj_file<64,_false> *object,uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off)" (binary_expression "Output_section * __thiscall\ngold::Layout::layout_eh_frame<64" (binary_expression "Output_section * __thiscall" identifier * identifier) (ERROR "gold::Layout::layout_eh_frame" identifier : : identifier : : identifier) < number_literal) (ERROR ",_false" , identifier) > (parenthesized_expression "(Layout *this,Sized_relobj_file<64,_false> *object,uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off)" ( (comma_expression "Layout *this,Sized_relobj_file<64,_false> *object,uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off" (binary_expression "Layout *this" identifier * identifier) , (comma_expression "Sized_relobj_file<64,_false> *object,uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off" (binary_expression "Sized_relobj_file<64" identifier < number_literal) , (comma_expression "_false> *object,uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off" (binary_expression "_false> *object" identifier > (pointer_expression "*object" * identifier)) , (comma_expression "uchar *symbols,off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint reloc_shndx,uint reloc_type,off_t *off" (binary_expression "uchar *symbols" identifier * identifier) , (ERROR "off_t symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint" identifier (comma_expression "symbols_size,\n          uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint" identifier , (comma_expression "uchar *symbol_names,off_t symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint" (binary_expression "uchar *symbol_names" identifier * identifier) , (ERROR "off_t" identifier) (comma_expression "symbol_names_size,uint shndx,Shdr<64,_false> *shdr,\n          uint" identifier , (ERROR "uint" identifier) (comma_expression "shndx,Shdr<64,_false> *shdr,\n          uint" identifier , (comma_expression "Shdr<64,_false> *shdr,\n          uint" (binary_expression "Shdr<64" identifier < number_literal) , (comma_expression "_false> *shdr,\n          uint" (binary_expression "_false> *shdr" identifier > (pointer_expression "*shdr" * identifier)) , identifier))))))) (comma_expression "reloc_shndx,uint reloc_type,off_t *off" identifier , (ERROR "uint" identifier) (comma_expression "reloc_type,off_t *off" identifier , (binary_expression "off_t *off" identifier * identifier))))))) )))) (compound_statement "{\n  Elf_Word EVar1;\n  Elf_Xword EVar2;\n  uint uVar3;\n  bool bVar4;\n  Eh_frame_section_disposition EVar5;\n  Output_section_order OVar6;\n  Output_section *this_00;\n  off_t oVar7;\n  \n  if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }\n  EVar1 = shdr->p_->sh_type;\n  if ((*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1) && (EVar1 != 1)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((shdr->p_->sh_flags & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  this_00 = make_eh_frame_section(this,(Relobj *)object);\n  if (this_00 != (Output_section *)0x0) {\n    if (this->eh_frame_section_ != this_00) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    EVar2 = this_00->flags_;\n    bVar4 = Parameters::incremental(parameters);\n    uVar3 = (uint)EVar2;\n    if (!bVar4) {\n      EVar5 = Eh_frame::add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type);\n      if (EVar5 == EH_OPTIMIZABLE_SECTION) {\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }\n      if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }\n    }\n    oVar7 = Output_section::add_input_section<64,_false>\n                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_);\n    *off = oVar7;\n    EVar2 = this_00->flags_;\n    this->have_added_input_section_ = true;\n    if (((uVar3 ^ (uint)EVar2) & 5) != 0) {\n      OVar6 = default_section_order(this,this_00,false);\n      this_00->order_ = OVar6;\n    }\n  }\n  return this_00;\n}" { (declaration "Elf_Word EVar1;" type_identifier identifier ;) (declaration "Elf_Xword EVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "Eh_frame_section_disposition EVar5;" type_identifier identifier ;) (declaration "Output_section_order OVar6;" type_identifier identifier ;) (declaration "Output_section *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "off_t oVar7;" type_identifier identifier ;) (if_statement "if (parameters->target_ == (Target *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(parameters->target_ == (Target *)0x0)" ( (binary_expression "parameters->target_ == (Target *)0x0" (field_expression "parameters->target_" identifier -> field_identifier) == (cast_expression "(Target *)0x0" ( (type_descriptor "Target *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x69,"target");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x69,"target");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "EVar1 = shdr->p_->sh_type;" (assignment_expression "EVar1 = shdr->p_->sh_type" identifier = (field_expression "shdr->p_->sh_type" (field_expression "shdr->p_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if ((*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1) && (EVar1 != 1)) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" if (parenthesized_expression "((*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1) && (EVar1 != 1))" ( (binary_expression "(*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1) && (EVar1 != 1)" (parenthesized_expression "(*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1)" ( (binary_expression "*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c) != EVar1" (pointer_expression "*(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c)" * (cast_expression "(Elf_Word *)(*(long *)(parameters->target_ + 8) + 0x7c)" ( (type_descriptor "Elf_Word *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(parameters->target_ + 8) + 0x7c)" ( (binary_expression "*(long *)(parameters->target_ + 8) + 0x7c" (pointer_expression "*(long *)(parameters->target_ + 8)" * (cast_expression "(long *)(parameters->target_ + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(parameters->target_ + 8)" ( (binary_expression "parameters->target_ + 8" (field_expression "parameters->target_" identifier -> field_identifier) + number_literal) )))) + number_literal) )))) != identifier) )) && (parenthesized_expression "(EVar1 != 1)" ( (binary_expression "EVar1 != 1" identifier != number_literal) ))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x5a4,"layout_eh_frame");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x5a4,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5a4,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (if_statement "if ((shdr->p_->sh_flags & 2) == 0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" if (parenthesized_expression "((shdr->p_->sh_flags & 2) == 0)" ( (binary_expression "(shdr->p_->sh_flags & 2) == 0" (parenthesized_expression "(shdr->p_->sh_flags & 2)" ( (binary_expression "shdr->p_->sh_flags & 2" (field_expression "shdr->p_->sh_flags" (field_expression "shdr->p_" identifier -> field_identifier) -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x5a5,"layout_eh_frame");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x5a5,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5a5,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (expression_statement "this_00 = make_eh_frame_section(this,(Relobj *)object);" (assignment_expression "this_00 = make_eh_frame_section(this,(Relobj *)object)" identifier = (call_expression "make_eh_frame_section(this,(Relobj *)object)" identifier (argument_list "(this,(Relobj *)object)" ( identifier , (cast_expression "(Relobj *)object" ( (type_descriptor "Relobj *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (this_00 != (Output_section *)0x0) {\n    if (this->eh_frame_section_ != this_00) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    EVar2 = this_00->flags_;\n    bVar4 = Parameters::incremental(parameters);\n    uVar3 = (uint)EVar2;\n    if (!bVar4) {\n      EVar5 = Eh_frame::add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type);\n      if (EVar5 == EH_OPTIMIZABLE_SECTION) {\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }\n      if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }\n    }\n    oVar7 = Output_section::add_input_section<64,_false>\n                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_);\n    *off = oVar7;\n    EVar2 = this_00->flags_;\n    this->have_added_input_section_ = true;\n    if (((uVar3 ^ (uint)EVar2) & 5) != 0) {\n      OVar6 = default_section_order(this,this_00,false);\n      this_00->order_ = OVar6;\n    }\n  }" if (parenthesized_expression "(this_00 != (Output_section *)0x0)" ( (binary_expression "this_00 != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (this->eh_frame_section_ != this_00) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    EVar2 = this_00->flags_;\n    bVar4 = Parameters::incremental(parameters);\n    uVar3 = (uint)EVar2;\n    if (!bVar4) {\n      EVar5 = Eh_frame::add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type);\n      if (EVar5 == EH_OPTIMIZABLE_SECTION) {\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }\n      if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }\n    }\n    oVar7 = Output_section::add_input_section<64,_false>\n                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_);\n    *off = oVar7;\n    EVar2 = this_00->flags_;\n    this->have_added_input_section_ = true;\n    if (((uVar3 ^ (uint)EVar2) & 5) != 0) {\n      OVar6 = default_section_order(this,this_00,false);\n      this_00->order_ = OVar6;\n    }\n  }" { (if_statement "if (this->eh_frame_section_ != this_00) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" if (parenthesized_expression "(this->eh_frame_section_ != this_00)" ( (binary_expression "this->eh_frame_section_ != this_00" (field_expression "this->eh_frame_section_" identifier -> field_identifier) != identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame");" (call_expression "do_gold_unreachable("../../gold/layout.cc",0x5ab,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5ab,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (expression_statement "EVar2 = this_00->flags_;" (assignment_expression "EVar2 = this_00->flags_" identifier = (field_expression "this_00->flags_" identifier -> field_identifier)) ;) (ERROR "bVar4 = Parameters::" (assignment_expression "bVar4 = Parameters" identifier = identifier) : :) (expression_statement "incremental(parameters);" (call_expression "incremental(parameters)" identifier (argument_list "(parameters)" ( identifier ))) ;) (expression_statement "uVar3 = (uint)EVar2;" (assignment_expression "uVar3 = (uint)EVar2" identifier = (cast_expression "(uint)EVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (!bVar4) {\n      EVar5 = Eh_frame::add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type);\n      if (EVar5 == EH_OPTIMIZABLE_SECTION) {\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }\n      if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }\n    }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\n      EVar5 = Eh_frame::add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type);\n      if (EVar5 == EH_OPTIMIZABLE_SECTION) {\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }\n      if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }\n    }" { (ERROR "EVar5 = Eh_frame::" (assignment_expression "EVar5 = Eh_frame" identifier = identifier) : :) (expression_statement "add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type);" (comma_expression "add_ehframe_input_section<64,_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type)" (binary_expression "add_ehframe_input_section<64" identifier < number_literal) , (binary_expression "_false>\n                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type)" identifier > (parenthesized_expression "(this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type)" ( (comma_expression "this->eh_frame_data_,object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type" (field_expression "this->eh_frame_data_" identifier -> field_identifier) , (comma_expression "object,symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type" identifier , (comma_expression "symbols,symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type" identifier , (comma_expression "symbols_size,symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type" identifier , (comma_expression "symbol_names,\n                         symbol_names_size,shndx,reloc_shndx,reloc_type" identifier , (comma_expression "symbol_names_size,shndx,reloc_shndx,reloc_type" identifier , (comma_expression "shndx,reloc_shndx,reloc_type" identifier , (comma_expression "reloc_shndx,reloc_type" identifier , identifier)))))))) )))) ;) (if_statement "if (EVar5 == EH_OPTIMIZABLE_SECTION) {\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }" if (parenthesized_expression "(EVar5 == EH_OPTIMIZABLE_SECTION)" ( (binary_expression "EVar5 == EH_OPTIMIZABLE_SECTION" identifier == identifier) )) (compound_statement "{\n        Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);\n        if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }\n        *off = -1;\n        return this_00;\n      }" { (labeled_statement "Output_section::update_flags_for_input_section(this_00,shdr->p_->sh_flags);" statement_identifier : (ERROR ":" :) (expression_statement "update_flags_for_input_section(this_00,shdr->p_->sh_flags);" (call_expression "update_flags_for_input_section(this_00,shdr->p_->sh_flags)" identifier (argument_list "(this_00,shdr->p_->sh_flags)" ( identifier , (field_expression "shdr->p_->sh_flags" (field_expression "shdr->p_" identifier -> field_identifier) -> field_identifier) ))) ;)) (if_statement "if (((uVar3 ^ (uint)this_00->flags_) & 5) != 0) {\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }" if (parenthesized_expression "(((uVar3 ^ (uint)this_00->flags_) & 5) != 0)" ( (binary_expression "((uVar3 ^ (uint)this_00->flags_) & 5) != 0" (parenthesized_expression "((uVar3 ^ (uint)this_00->flags_) & 5)" ( (binary_expression "(uVar3 ^ (uint)this_00->flags_) & 5" (parenthesized_expression "(uVar3 ^ (uint)this_00->flags_)" ( (binary_expression "uVar3 ^ (uint)this_00->flags_" identifier ^ (cast_expression "(uint)this_00->flags_" ( (type_descriptor "uint" type_identifier) ) (field_expression "this_00->flags_" identifier -> field_identifier))) )) & number_literal) )) != number_literal) )) (compound_statement "{\n          this_00->field_0xc9 = this_00->field_0xc9 | 0x20;\n          this_00->order_ = ORDER_RELRO;\n        }" { (expression_statement "this_00->field_0xc9 = this_00->field_0xc9 | 0x20;" (assignment_expression "this_00->field_0xc9 = this_00->field_0xc9 | 0x20" (field_expression "this_00->field_0xc9" identifier -> field_identifier) = (binary_expression "this_00->field_0xc9 | 0x20" (field_expression "this_00->field_0xc9" identifier -> field_identifier) | number_literal)) ;) (expression_statement "this_00->order_ = ORDER_RELRO;" (assignment_expression "this_00->order_ = ORDER_RELRO" (field_expression "this_00->order_" identifier -> field_identifier) = identifier) ;) })) (expression_statement "*off = -1;" (assignment_expression "*off = -1" (pointer_expression "*off" * identifier) = number_literal) ;) (return_statement "return this_00;" return identifier ;) })) (if_statement "if ((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)) {\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }" if (parenthesized_expression "((EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false))" ( (binary_expression "(EVar5 == EH_END_MARKER_SECTION) && (this->added_eh_frame_data_ == false)" (parenthesized_expression "(EVar5 == EH_END_MARKER_SECTION)" ( (binary_expression "EVar5 == EH_END_MARKER_SECTION" identifier == identifier) )) && (parenthesized_expression "(this->added_eh_frame_data_ == false)" ( (binary_expression "this->added_eh_frame_data_ == false" (field_expression "this->added_eh_frame_data_" identifier -> field_identifier) == false) ))) )) (compound_statement "{\n        Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);\n        this->added_eh_frame_data_ = true;\n      }" { (labeled_statement "Output_section::add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);" statement_identifier : (ERROR ":" :) (expression_statement "add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data);" (call_expression "add_output_section_data\n                  (this_00,&this->eh_frame_data_->super_Output_section_data)" identifier (argument_list "(this_00,&this->eh_frame_data_->super_Output_section_data)" ( identifier , (pointer_expression "&this->eh_frame_data_->super_Output_section_data" & (field_expression "this->eh_frame_data_->super_Output_section_data" (field_expression "this->eh_frame_data_" identifier -> field_identifier) -> field_identifier)) ))) ;)) (expression_statement "this->added_eh_frame_data_ = true;" (assignment_expression "this->added_eh_frame_data_ = true" (field_expression "this->added_eh_frame_data_" identifier -> field_identifier) = true) ;) })) })) (expression_statement "oVar7 = Output_section::add_input_section<64,_false>\n                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_);" (comma_expression "oVar7 = Output_section::add_input_section<64,_false>\n                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_)" (binary_expression "oVar7 = Output_section::add_input_section<64" (assignment_expression "oVar7 = Output_section" identifier = identifier) (ERROR "::add_input_section" : : identifier) < number_literal) , (binary_expression "_false>\n                      (this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_)" identifier > (parenthesized_expression "(this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_)" ( (comma_expression "this_00,this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_" identifier , (comma_expression "this,object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_" identifier , (comma_expression "object,shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_" identifier , (comma_expression "shndx,".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_" identifier , (comma_expression "".eh_frame",shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_" (string_literal "".eh_frame"" " string_content ") , (comma_expression "shdr,reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_" identifier , (comma_expression "reloc_shndx,\n                       (this->script_options_->script_sections_).saw_sections_clause_" identifier , (field_expression "(this->script_options_->script_sections_).saw_sections_clause_" (parenthesized_expression "(this->script_options_->script_sections_)" ( (field_expression "this->script_options_->script_sections_" (field_expression "this->script_options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)))))))) )))) ;) (expression_statement "*off = oVar7;" (assignment_expression "*off = oVar7" (pointer_expression "*off" * identifier) = identifier) ;) (expression_statement "EVar2 = this_00->flags_;" (assignment_expression "EVar2 = this_00->flags_" identifier = (field_expression "this_00->flags_" identifier -> field_identifier)) ;) (expression_statement "this->have_added_input_section_ = true;" (assignment_expression "this->have_added_input_section_ = true" (field_expression "this->have_added_input_section_" identifier -> field_identifier) = true) ;) (if_statement "if (((uVar3 ^ (uint)EVar2) & 5) != 0) {\n      OVar6 = default_section_order(this,this_00,false);\n      this_00->order_ = OVar6;\n    }" if (parenthesized_expression "(((uVar3 ^ (uint)EVar2) & 5) != 0)" ( (binary_expression "((uVar3 ^ (uint)EVar2) & 5) != 0" (parenthesized_expression "((uVar3 ^ (uint)EVar2) & 5)" ( (binary_expression "(uVar3 ^ (uint)EVar2) & 5" (parenthesized_expression "(uVar3 ^ (uint)EVar2)" ( (binary_expression "uVar3 ^ (uint)EVar2" identifier ^ (cast_expression "(uint)EVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      OVar6 = default_section_order(this,this_00,false);\n      this_00->order_ = OVar6;\n    }" { (expression_statement "OVar6 = default_section_order(this,this_00,false);" (assignment_expression "OVar6 = default_section_order(this,this_00,false)" identifier = (call_expression "default_section_order(this,this_00,false)" identifier (argument_list "(this,this_00,false)" ( identifier , identifier , false )))) ;) (expression_statement "this_00->order_ = OVar6;" (assignment_expression "this_00->order_ = OVar6" (field_expression "this_00->order_" identifier -> field_identifier) = identifier) ;) })) })) (return_statement "return this_00;" return identifier ;) }))
(translation_unit "long FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)\n\n{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}\n\n" (function_definition "long FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)\n\n{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) , (parameter_declaration "undefined8 param_3" type_identifier identifier) , (parameter_declaration "undefined8 param_4" type_identifier identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) , (parameter_declaration "undefined8 param_6" type_identifier identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) , (parameter_declaration "long *param_8" (sized_type_specifier "long" long) (pointer_declarator "*param_8" * identifier)) , (parameter_declaration "undefined4 param_9" type_identifier identifier) , (parameter_declaration "undefined4 param_10" type_identifier identifier) , (parameter_declaration "undefined8 *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target")" identifier (argument_list "("../../gold/parameters.h",0x69,"target")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""target"" " string_content ") ))) ;) })) (expression_statement "iVar3 = *(int *)(*param_8 + 4);" (assignment_expression "iVar3 = *(int *)(*param_8 + 4)" identifier = (pointer_expression "*(int *)(*param_8 + 4)" * (cast_expression "(int *)(*param_8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_8 + 4)" ( (binary_expression "*param_8 + 4" (pointer_expression "*param_8" * identifier) + number_literal) ))))) ;) (if_statement "if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" if (parenthesized_expression "((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))" ( (binary_expression "(*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1)" (parenthesized_expression "(*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3)" ( (binary_expression "*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3" (pointer_expression "*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" * (cast_expression "(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" ( (binary_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" * (cast_expression "(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x18" identifier + number_literal) )))) + number_literal) )))) + number_literal) )))) != identifier) )) && (parenthesized_expression "(iVar3 != 1)" ( (binary_expression "iVar3 != 1" identifier != number_literal) ))) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" { (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5a4,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (if_statement "if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" if (parenthesized_expression "((*(byte *)(*param_8 + 8) & 2) == 0)" ( (binary_expression "(*(byte *)(*param_8 + 8) & 2) == 0" (parenthesized_expression "(*(byte *)(*param_8 + 8) & 2)" ( (binary_expression "*(byte *)(*param_8 + 8) & 2" (pointer_expression "*(byte *)(*param_8 + 8)" * (cast_expression "(byte *)(*param_8 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_8 + 8)" ( (binary_expression "*param_8 + 8" (pointer_expression "*param_8" * identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" { (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5a5,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (expression_statement "lVar5 = FUN_001ad510(param_1,param_2);" (assignment_expression "lVar5 = FUN_001ad510(param_1,param_2)" identifier = (call_expression "FUN_001ad510(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( identifier , identifier )))) ;) (if_statement "if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }" if (parenthesized_expression "(lVar5 != 0)" ( (binary_expression "lVar5 != 0" identifier != number_literal) )) (compound_statement "{\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }" { (if_statement "if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x308) != lVar5)" ( (binary_expression "*(long *)(param_1 + 0x308) != lVar5" (pointer_expression "*(long *)(param_1 + 0x308)" * (cast_expression "(long *)(param_1 + 0x308)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x308)" ( (binary_expression "param_1 + 0x308" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" { (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame")" identifier (argument_list "("../../gold/layout.cc",0x5ab,"layout_eh_frame")" ( (string_literal ""../../gold/layout.cc"" " string_content ") , number_literal , (string_literal ""layout_eh_frame"" " string_content ") ))) ;) })) (expression_statement "uVar6 = *(undefined8 *)(lVar5 + 0x70);" (assignment_expression "uVar6 = *(undefined8 *)(lVar5 + 0x70)" identifier = (pointer_expression "*(undefined8 *)(lVar5 + 0x70)" * (cast_expression "(undefined8 *)(lVar5 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);" (assignment_expression "cVar2 = FUN_002379a0(PTR_DAT_0043e6b0)" identifier = (call_expression "FUN_002379a0(PTR_DAT_0043e6b0)" identifier (argument_list "(PTR_DAT_0043e6b0)" ( identifier )))) ;) (expression_statement "uVar1 = (uint)uVar6;" (assignment_expression "uVar1 = (uint)uVar6" identifier = (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }" { (expression_statement "iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);" (assignment_expression "iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" identifier = (call_expression "FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" identifier (argument_list "(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" ( (pointer_expression "*(undefined8 *)(param_1 + 0x310)" * (cast_expression "(undefined8 *)(param_1 + 0x310)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }" if (parenthesized_expression "(iVar3 == 2)" ( (binary_expression "iVar3 == 2" identifier == number_literal) )) (compound_statement "{\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }" { (expression_statement "FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));" (call_expression "FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8))" identifier (argument_list "(lVar5,*(undefined8 *)(*param_8 + 8))" ( identifier , (pointer_expression "*(undefined8 *)(*param_8 + 8)" * (cast_expression "(undefined8 *)(*param_8 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_8 + 8)" ( (binary_expression "*param_8 + 8" (pointer_expression "*param_8" * identifier) + number_literal) )))) ))) ;) (if_statement "if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }" if (parenthesized_expression "(((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0)" ( (binary_expression "((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0" (parenthesized_expression "((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5)" ( (binary_expression "(uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5" (parenthesized_expression "(uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70))" ( (binary_expression "uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)" identifier ^ (binary_expression "(uint)*(undefined8 *)(lVar5 + 0x70)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(undefined8 *)(lVar5 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) ))))) )) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }" { (expression_statement "*(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;" (assignment_expression "*(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20" (pointer_expression "*(byte *)(lVar5 + 0xc9)" * (cast_expression "(byte *)(lVar5 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc9)" ( (binary_expression "lVar5 + 0xc9" identifier + number_literal) )))) = (binary_expression "*(byte *)(lVar5 + 0xc9) | 0x20" (pointer_expression "*(byte *)(lVar5 + 0xc9)" * (cast_expression "(byte *)(lVar5 + 0xc9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0xc9)" ( (binary_expression "lVar5 + 0xc9" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "*(undefined4 *)(lVar5 + 0x78) = 0x13;" (assignment_expression "*(undefined4 *)(lVar5 + 0x78) = 0x13" (pointer_expression "*(undefined4 *)(lVar5 + 0x78)" * (cast_expression "(undefined4 *)(lVar5 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x78)" ( (binary_expression "lVar5 + 0x78" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "*param_11 = 0xffffffffffffffff;" (assignment_expression "*param_11 = 0xffffffffffffffff" (pointer_expression "*param_11" * identifier) = number_literal) ;) (return_statement "return lVar5;" return identifier ;) })) (if_statement "if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }" if (parenthesized_expression "((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0'))" ( (binary_expression "(iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')" (parenthesized_expression "(iVar3 == 3)" ( (binary_expression "iVar3 == 3" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x318) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x318) == '\0'" (pointer_expression "*(char *)(param_1 + 0x318)" * (cast_expression "(char *)(param_1 + 0x318)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x318)" ( (binary_expression "param_1 + 0x318" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }" { (expression_statement "FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));" (call_expression "FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310))" identifier (argument_list "(lVar5,*(undefined8 *)(param_1 + 0x310))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x310)" * (cast_expression "(undefined8 *)(param_1 + 0x310)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x310)" ( (binary_expression "param_1 + 0x310" identifier + number_literal) )))) ))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x318) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x318) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x318)" * (cast_expression "(undefined1 *)(param_1 + 0x318)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x318)" ( (binary_expression "param_1 + 0x318" identifier + number_literal) )))) = number_literal) ;) })) })) (expression_statement "uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));" (assignment_expression "uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" identifier = (call_expression "FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" identifier (argument_list "(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" ( identifier , identifier , identifier , identifier , (string_literal "".eh_frame"" " string_content ") , identifier , identifier , (pointer_expression "*(undefined1 *)(*(long *)(param_1 + 8) + 0x148)" * (cast_expression "(undefined1 *)(*(long *)(param_1 + 8) + 0x148)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" ( (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + number_literal) )))) )))) ;) (expression_statement "*param_11 = uVar6;" (assignment_expression "*param_11 = uVar6" (pointer_expression "*param_11" * identifier) = identifier) ;) (expression_statement "uVar6 = *(undefined8 *)(lVar5 + 0x70);" (assignment_expression "uVar6 = *(undefined8 *)(lVar5 + 0x70)" identifier = (pointer_expression "*(undefined8 *)(lVar5 + 0x70)" * (cast_expression "(undefined8 *)(lVar5 + 0x70)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x70)" ( (binary_expression "lVar5 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x368) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x368) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x368)" * (cast_expression "(undefined1 *)(param_1 + 0x368)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x368)" ( (binary_expression "param_1 + 0x368" identifier + number_literal) )))) = number_literal) ;) (if_statement "if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }" if (parenthesized_expression "(((uVar1 ^ (uint)uVar6) & 5) != 0)" ( (binary_expression "((uVar1 ^ (uint)uVar6) & 5) != 0" (parenthesized_expression "((uVar1 ^ (uint)uVar6) & 5)" ( (binary_expression "(uVar1 ^ (uint)uVar6) & 5" (parenthesized_expression "(uVar1 ^ (uint)uVar6)" ( (binary_expression "uVar1 ^ (uint)uVar6" identifier ^ (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }" { (expression_statement "uVar4 = FUN_001a5050(param_1,lVar5,0);" (assignment_expression "uVar4 = FUN_001a5050(param_1,lVar5,0)" identifier = (call_expression "FUN_001a5050(param_1,lVar5,0)" identifier (argument_list "(param_1,lVar5,0)" ( identifier , identifier , number_literal )))) ;) (expression_statement "*(undefined4 *)(lVar5 + 0x78) = uVar4;" (assignment_expression "*(undefined4 *)(lVar5 + 0x78) = uVar4" (pointer_expression "*(undefined4 *)(lVar5 + 0x78)" * (cast_expression "(undefined4 *)(lVar5 + 0x78)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x78)" ( (binary_expression "lVar5 + 0x78" identifier + number_literal) )))) = identifier) ;) })) })) (return_statement "return lVar5;" return identifier ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) )))) != IDENT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (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 (pointer_expression * IDENT) + LIT) )))) & 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 = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (string_literal " string_content ") , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) (return_statement return IDENT ;) })))
(function_definition "long FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)\n\n{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_001b71f0(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)" (identifier "FUN_001b71f0") (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,\n                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,\n                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) (, ",") (parameter_declaration "undefined8 param_3" (type_identifier "undefined8") (identifier "param_3")) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) (, ",") (parameter_declaration "undefined8 param_6" (type_identifier "undefined8") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) (, ",") (parameter_declaration "long *param_8" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_8" (* "*") (identifier "param_8"))) (, ",") (parameter_declaration "undefined4 param_9" (type_identifier "undefined4") (identifier "param_9")) (, ",") (parameter_declaration "undefined4 param_10" (type_identifier "undefined4") (identifier "param_10")) (, ",") (parameter_declaration "undefined8 *param_11" (type_identifier "undefined8") (pointer_declarator "*param_11" (* "*") (identifier "param_11"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  int iVar3;\n  undefined4 uVar4;\n  long lVar5;\n  undefined8 uVar6;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }\n  iVar3 = *(int *)(*param_8 + 4);\n  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }\n  if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }\n  lVar5 = FUN_001ad510(param_1,param_2);\n  if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }\n  return lVar5;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x18" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x69,"target");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x69,"target");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x69,"target")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x69,"target")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x69") (, ",") (string_literal ""target"" (" """) (string_content "target") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(*param_8 + 4);" (assignment_expression "iVar3 = *(int *)(*param_8 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(*param_8 + 4)" (* "*") (cast_expression "(int *)(*param_8 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_8 + 4)" (( "(") (binary_expression "*param_8 + 4" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))\n  {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" (if "if") (parenthesized_expression "((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))" (( "(") (binary_expression "(*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1)" (parenthesized_expression "(*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3)" (( "(") (binary_expression "*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3" (pointer_expression "*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" (* "*") (cast_expression "(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c)" (( "(") (binary_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c" (pointer_expression "*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" (* "*") (cast_expression "(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x18)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x18)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x18" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x18")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x7c")) () ")")))) (!= "!=") (identifier "iVar3")) () ")")) (&& "&&") (parenthesized_expression "(iVar3 != 1)" (( "(") (binary_expression "iVar3 != 1" (identifier "iVar3") (!= "!=") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame")" (identifier "FUN_0017c650") (argument_list "("../../gold/layout.cc",0x5a4,"layout_eh_frame")" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x5a4") (, ",") (string_literal ""layout_eh_frame"" (" """) (string_content "layout_eh_frame") (" """)) () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(*param_8 + 8) & 2) == 0) {\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" (if "if") (parenthesized_expression "((*(byte *)(*param_8 + 8) & 2) == 0)" (( "(") (binary_expression "(*(byte *)(*param_8 + 8) & 2) == 0" (parenthesized_expression "(*(byte *)(*param_8 + 8) & 2)" (( "(") (binary_expression "*(byte *)(*param_8 + 8) & 2" (pointer_expression "*(byte *)(*param_8 + 8)" (* "*") (cast_expression "(byte *)(*param_8 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_8 + 8)" (( "(") (binary_expression "*param_8 + 8" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame")" (identifier "FUN_0017c650") (argument_list "("../../gold/layout.cc",0x5a5,"layout_eh_frame")" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x5a5") (, ",") (string_literal ""layout_eh_frame"" (" """) (string_content "layout_eh_frame") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar5 = FUN_001ad510(param_1,param_2);" (assignment_expression "lVar5 = FUN_001ad510(param_1,param_2)" (identifier "lVar5") (= "=") (call_expression "FUN_001ad510(param_1,param_2)" (identifier "FUN_001ad510") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (lVar5 != 0) {\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }" (if "if") (parenthesized_expression "(lVar5 != 0)" (( "(") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);\n    uVar1 = (uint)uVar6;\n    if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }\n    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));\n    *param_11 = uVar6;\n    uVar6 = *(undefined8 *)(lVar5 + 0x70);\n    *(undefined1 *)(param_1 + 0x368) = 1;\n    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }\n  }" ({ "{") (if_statement "if (*(long *)(param_1 + 0x308) != lVar5) {\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x308) != lVar5)" (( "(") (binary_expression "*(long *)(param_1 + 0x308) != lVar5" (pointer_expression "*(long *)(param_1 + 0x308)" (* "*") (cast_expression "(long *)(param_1 + 0x308)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x308)" (( "(") (binary_expression "param_1 + 0x308" (identifier "param_1") (+ "+") (number_literal "0x308")) () ")")))) (!= "!=") (identifier "lVar5")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");" (call_expression "FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame")" (identifier "FUN_0017c650") (argument_list "("../../gold/layout.cc",0x5ab,"layout_eh_frame")" (( "(") (string_literal ""../../gold/layout.cc"" (" """) (string_content "../../gold/layout.cc") (" """)) (, ",") (number_literal "0x5ab") (, ",") (string_literal ""layout_eh_frame"" (" """) (string_content "layout_eh_frame") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar6 = *(undefined8 *)(lVar5 + 0x70);" (assignment_expression "uVar6 = *(undefined8 *)(lVar5 + 0x70)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined8 *)(lVar5 + 0x70)" (* "*") (cast_expression "(undefined8 *)(lVar5 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x70)" (( "(") (binary_expression "lVar5 + 0x70" (identifier "lVar5") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);" (assignment_expression "cVar2 = FUN_002379a0(PTR_DAT_0043e6b0)" (identifier "cVar2") (= "=") (call_expression "FUN_002379a0(PTR_DAT_0043e6b0)" (identifier "FUN_002379a0") (argument_list "(PTR_DAT_0043e6b0)" (( "(") (identifier "PTR_DAT_0043e6b0") () ")")))) (; ";")) (expression_statement "uVar1 = (uint)uVar6;" (assignment_expression "uVar1 = (uint)uVar6" (identifier "uVar1") (= "=") (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6"))) (; ";")) (if_statement "if (cVar2 == '\0') {\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);\n      if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }\n      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }\n    }" ({ "{") (expression_statement "iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10);" (assignment_expression "iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" (identifier "iVar3") (= "=") (call_expression "FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" (identifier "FUN_002aea50") (argument_list "(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,\n                           param_7,param_9,param_10)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x310)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x310)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x310)" (( "(") (binary_expression "param_1 + 0x310" (identifier "param_1") (+ "+") (number_literal "0x310")) () ")")))) (, ",") (identifier "param_2") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "param_5") (, ",") (identifier "param_6") (, ",") (identifier "param_7") (, ",") (identifier "param_9") (, ",") (identifier "param_10") () ")")))) (; ";")) (if_statement "if (iVar3 == 2) {\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }" (if "if") (parenthesized_expression "(iVar3 == 2)" (( "(") (binary_expression "iVar3 == 2" (identifier "iVar3") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));\n        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }\n        *param_11 = 0xffffffffffffffff;\n        return lVar5;\n      }" ({ "{") (expression_statement "FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));" (call_expression "FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8))" (identifier "FUN_001f5d70") (argument_list "(lVar5,*(undefined8 *)(*param_8 + 8))" (( "(") (identifier "lVar5") (, ",") (pointer_expression "*(undefined8 *)(*param_8 + 8)" (* "*") (cast_expression "(undefined8 *)(*param_8 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_8 + 8)" (( "(") (binary_expression "*param_8 + 8" (pointer_expression "*param_8" (* "*") (identifier "param_8")) (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (if_statement "if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }" (if "if") (parenthesized_expression "(((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0)" (( "(") (binary_expression "((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0" (parenthesized_expression "((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5)" (( "(") (binary_expression "(uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5" (parenthesized_expression "(uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70))" (( "(") (binary_expression "uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)" (identifier "uVar1") (^ "^") (binary_expression "(uint)*(undefined8 *)(lVar5 + 0x70)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(undefined8 *)(lVar5 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x70)" (( "(") (binary_expression "lVar5 + 0x70" (identifier "lVar5") (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;\n          *(undefined4 *)(lVar5 + 0x78) = 0x13;\n        }" ({ "{") (expression_statement "*(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;" (assignment_expression "*(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20" (pointer_expression "*(byte *)(lVar5 + 0xc9)" (* "*") (cast_expression "(byte *)(lVar5 + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0xc9)" (( "(") (binary_expression "lVar5 + 0xc9" (identifier "lVar5") (+ "+") (number_literal "0xc9")) () ")")))) (= "=") (binary_expression "*(byte *)(lVar5 + 0xc9) | 0x20" (pointer_expression "*(byte *)(lVar5 + 0xc9)" (* "*") (cast_expression "(byte *)(lVar5 + 0xc9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0xc9)" (( "(") (binary_expression "lVar5 + 0xc9" (identifier "lVar5") (+ "+") (number_literal "0xc9")) () ")")))) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "*(undefined4 *)(lVar5 + 0x78) = 0x13;" (assignment_expression "*(undefined4 *)(lVar5 + 0x78) = 0x13" (pointer_expression "*(undefined4 *)(lVar5 + 0x78)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x78)" (( "(") (binary_expression "lVar5 + 0x78" (identifier "lVar5") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (number_literal "0x13")) (; ";")) (} "}"))) (expression_statement "*param_11 = 0xffffffffffffffff;" (assignment_expression "*param_11 = 0xffffffffffffffff" (pointer_expression "*param_11" (* "*") (identifier "param_11")) (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (return_statement "return lVar5;" (return "return") (identifier "lVar5") (; ";")) (} "}"))) (if_statement "if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }" (if "if") (parenthesized_expression "((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0'))" (( "(") (binary_expression "(iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')" (parenthesized_expression "(iVar3 == 3)" (( "(") (binary_expression "iVar3 == 3" (identifier "iVar3") (== "==") (number_literal "3")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x318) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x318) == '\0'" (pointer_expression "*(char *)(param_1 + 0x318)" (* "*") (cast_expression "(char *)(param_1 + 0x318)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x318)" (( "(") (binary_expression "param_1 + 0x318" (identifier "param_1") (+ "+") (number_literal "0x318")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));\n        *(undefined1 *)(param_1 + 0x318) = 1;\n      }" ({ "{") (expression_statement "FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));" (call_expression "FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310))" (identifier "FUN_001f9c60") (argument_list "(lVar5,*(undefined8 *)(param_1 + 0x310))" (( "(") (identifier "lVar5") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x310)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x310)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x310)" (( "(") (binary_expression "param_1 + 0x310" (identifier "param_1") (+ "+") (number_literal "0x310")) () ")")))) () ")"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x318) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x318) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x318)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x318)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x318)" (( "(") (binary_expression "param_1 + 0x318" (identifier "param_1") (+ "+") (number_literal "0x318")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}"))) (expression_statement "uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));" (assignment_expression "uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" (identifier "uVar6") (= "=") (call_expression "FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" (identifier "FUN_00227910") (argument_list "(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,\n                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148))" (( "(") (identifier "lVar5") (, ",") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "param_7") (, ",") (string_literal "".eh_frame"" (" """) (string_content ".eh_frame") (" """)) (, ",") (identifier "param_8") (, ",") (identifier "param_9") (, ",") (pointer_expression "*(undefined1 *)(*(long *)(param_1 + 8) + 0x148)" (* "*") (cast_expression "(undefined1 *)(*(long *)(param_1 + 8) + 0x148)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 0x148)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x148" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x148")) () ")")))) () ")")))) (; ";")) (expression_statement "*param_11 = uVar6;" (assignment_expression "*param_11 = uVar6" (pointer_expression "*param_11" (* "*") (identifier "param_11")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar6 = *(undefined8 *)(lVar5 + 0x70);" (assignment_expression "uVar6 = *(undefined8 *)(lVar5 + 0x70)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined8 *)(lVar5 + 0x70)" (* "*") (cast_expression "(undefined8 *)(lVar5 + 0x70)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x70)" (( "(") (binary_expression "lVar5 + 0x70" (identifier "lVar5") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x368) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x368) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x368)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x368)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x368)" (( "(") (binary_expression "param_1 + 0x368" (identifier "param_1") (+ "+") (number_literal "0x368")) () ")")))) (= "=") (number_literal "1")) (; ";")) (if_statement "if (((uVar1 ^ (uint)uVar6) & 5) != 0) {\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }" (if "if") (parenthesized_expression "(((uVar1 ^ (uint)uVar6) & 5) != 0)" (( "(") (binary_expression "((uVar1 ^ (uint)uVar6) & 5) != 0" (parenthesized_expression "((uVar1 ^ (uint)uVar6) & 5)" (( "(") (binary_expression "(uVar1 ^ (uint)uVar6) & 5" (parenthesized_expression "(uVar1 ^ (uint)uVar6)" (( "(") (binary_expression "uVar1 ^ (uint)uVar6" (identifier "uVar1") (^ "^") (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6"))) () ")")) (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar4 = FUN_001a5050(param_1,lVar5,0);\n      *(undefined4 *)(lVar5 + 0x78) = uVar4;\n    }" ({ "{") (expression_statement "uVar4 = FUN_001a5050(param_1,lVar5,0);" (assignment_expression "uVar4 = FUN_001a5050(param_1,lVar5,0)" (identifier "uVar4") (= "=") (call_expression "FUN_001a5050(param_1,lVar5,0)" (identifier "FUN_001a5050") (argument_list "(param_1,lVar5,0)" (( "(") (identifier "param_1") (, ",") (identifier "lVar5") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(lVar5 + 0x78) = uVar4;" (assignment_expression "*(undefined4 *)(lVar5 + 0x78) = uVar4" (pointer_expression "*(undefined4 *)(lVar5 + 0x78)" (* "*") (cast_expression "(undefined4 *)(lVar5 + 0x78)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x78)" (( "(") (binary_expression "lVar5 + 0x78" (identifier "lVar5") (+ "+") (number_literal "0x78")) () ")")))) (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (} "}"))) (return_statement "return lVar5;" (return "return") (identifier "lVar5") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original name: layout_eh_frame<64, false>
   DWARF original prototype: Output_section * layout_eh_frame<64,_false>(Layout * this,
   Sized_relobj_file<64,_false> * object, uchar * symbols, off_t symbols_size, uchar * symbol_names,
   off_t symbol_names_size, uint shndx, Shdr<64,_false> * shdr, uint reloc_shndx, uint reloc_type,
   off_t * off) */

type_6 * __thiscall
gold::Layout::layout_eh_frame<64,var_7>
          (Layout *this,Sized_relobj_file<64,var_7> *object,uchar *symbols,type_7 symbols_size,
          uchar *symbol_names,type_7 symbol_names_size,type_3 shndx,Shdr<64,var_7> *shdr,
          type_3 reloc_shndx,type_3 reloc_type,type_7 *off)

{
  type_1 var_2;
  type_2 EVar2;
  type_3 var_11;
  bool bVar4;
  type_4 var_8;
  type_5 OVar6;
  type_6 *var_4;
  type_7 oVar7;
  
  if (parameters->target_ == (type_8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/parameters.h",0x69,"target");
  }
  var_2 = shdr->p_->sh_type;
  if ((*(type_1 *)(*(long *)(parameters->target_ + 8) + 0x7c) != var_2) && (var_2 != 1)) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/layout.cc",0x5a4,"layout_eh_frame");
  }
  if ((shdr->p_->sh_flags & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/layout.cc",0x5a5,"layout_eh_frame");
  }
  var_4 = var_3(this,(type_9 *)object);
  if (var_4 != (type_6 *)0x0) {
    if (this->eh_frame_section_ != var_4) {
                    /* WARNING: Subroutine does not return */
      var_1("../../gold/layout.cc",0x5ab,"layout_eh_frame");
    }
    EVar2 = var_4->flags_;
    bVar4 = Parameters::var_5(parameters);
    var_11 = (type_3)EVar2;
    if (!bVar4) {
      var_8 = Eh_frame::var_6<64,var_7>
                        (this->eh_frame_data_,object,symbols,symbols_size,symbol_names,
                         symbol_names_size,shndx,reloc_shndx,reloc_type);
      if (var_8 == var_9) {
        Output_section::var_10(var_4,shdr->p_->sh_flags);
        if (((var_11 ^ (type_3)var_4->flags_) & 5) != 0) {
          var_4->field_0xc9 = var_4->field_0xc9 | 0x20;
          var_4->order_ = ORDER_RELRO;
        }
        *off = -1;
        return var_4;
      }
      if ((var_8 == var_12) && (this->added_eh_frame_data_ == false)) {
        Output_section::var_13
                  (var_4,&this->eh_frame_data_->super_Output_section_data);
        this->added_eh_frame_data_ = true;
      }
    }
    oVar7 = type_6::add_input_section<64,var_7>
                      (var_4,this,object,shndx,".eh_frame",shdr,reloc_shndx,
                       (this->script_options_->script_sections_).saw_sections_clause_);
    *off = oVar7;
    EVar2 = var_4->flags_;
    this->have_added_input_section_ = true;
    if (((var_11 ^ (type_3)EVar2) & 5) != 0) {
      OVar6 = var_14(this,var_4,false);
      var_4->order_ = OVar6;
    }
  }
  return var_4;
}


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

long MASKED(long param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4,
                 undefined8 param_5,undefined8 param_6,undefined4 param_7,long *param_8,
                 undefined4 param_9,undefined4 param_10,undefined8 *param_11)

{
  uint uVar1;
  char cVar2;
  int iVar3;
  undefined4 uVar4;
  long lVar5;
  undefined8 uVar6;
  
  if (*(long *)(PTR_DAT_0043e6b0 + 0x18) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x69,"target");
  }
  iVar3 = *(int *)(*param_8 + 4);
  if ((*(int *)(*(long *)(*(long *)(PTR_DAT_0043e6b0 + 0x18) + 8) + 0x7c) != iVar3) && (iVar3 != 1))
  {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/layout.cc",0x5a4,"layout_eh_frame");
  }
  if ((*(byte *)(*param_8 + 8) & 2) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/layout.cc",0x5a5,"layout_eh_frame");
  }
  lVar5 = FUN_001ad510(param_1,param_2);
  if (lVar5 != 0) {
    if (*(long *)(param_1 + 0x308) != lVar5) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/layout.cc",0x5ab,"layout_eh_frame");
    }
    uVar6 = *(undefined8 *)(lVar5 + 0x70);
    cVar2 = FUN_002379a0(PTR_DAT_0043e6b0);
    uVar1 = (uint)uVar6;
    if (cVar2 == '\0') {
      iVar3 = FUN_002aea50(*(undefined8 *)(param_1 + 0x310),param_2,param_3,param_4,param_5,param_6,
                           param_7,param_9,param_10);
      if (iVar3 == 2) {
        FUN_001f5d70(lVar5,*(undefined8 *)(*param_8 + 8));
        if (((uVar1 ^ (uint)*(undefined8 *)(lVar5 + 0x70)) & 5) != 0) {
          *(byte *)(lVar5 + 0xc9) = *(byte *)(lVar5 + 0xc9) | 0x20;
          *(undefined4 *)(lVar5 + 0x78) = 0x13;
        }
        *param_11 = 0xffffffffffffffff;
        return lVar5;
      }
      if ((iVar3 == 3) && (*(char *)(param_1 + 0x318) == '\0')) {
        FUN_001f9c60(lVar5,*(undefined8 *)(param_1 + 0x310));
        *(undefined1 *)(param_1 + 0x318) = 1;
      }
    }
    uVar6 = FUN_00227910(lVar5,param_1,param_2,param_7,".eh_frame",param_8,param_9,
                         *(undefined1 *)(*(long *)(param_1 + 8) + 0x148));
    *param_11 = uVar6;
    uVar6 = *(undefined8 *)(lVar5 + 0x70);
    *(undefined1 *)(param_1 + 0x368) = 1;
    if (((uVar1 ^ (uint)uVar6) & 5) != 0) {
      uVar4 = FUN_001a5050(param_1,lVar5,0);
      *(undefined4 *)(lVar5 + 0x78) = uVar4;
    }
  }
  return lVar5;
}

