
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void run(Layout_task_runner * this, Workqueue * workqueue, Task * task)
    */

void __thiscall
gold::Layout_task_runner::run(Layout_task_runner *this,Workqueue *workqueue,Task *task)

{
  Layout *this_00;
  char *name;
  bool bVar1;
  Object_format OVar2;
  char *__file;
  Output_file *this_01;
  int __oflag;
  
  Symbol_table::detect_odr_violations(this->symtab_,task,(this->options_->output_).value);
  this_00 = this->layout_;
  __file = (char *)Layout::finalize(this_00,this->input_objects_,this->symtab_,this->target_,task);
  if (this->mapfile_ != (Mapfile *)0x0) {
    Mapfile::print_discarded_sections(this->mapfile_,this->input_objects_);
    Layout::print_to_mapfile(this_00,this->mapfile_);
  }
  if (this_00->incremental_base_ == (Incremental_binary *)0x0) {
    if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
    }
    name = (parameters->options_->output_).value;
    this_01 = (Output_file *)operator_new(0x28);
                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */
    Output_file::Output_file(this_01,name);
    OVar2 = General_options::oformat_enum(this->options_);
    if (OVar2 != OBJECT_FORMAT_ELF) {
      this_01->is_temporary_ = true;
    }
    Output_file::open(this_01,__file,__oflag);
  }
  else {
    this_01 = this_00->incremental_base_->output_;
    bVar1 = Parameters::incremental_update(parameters);
    if (bVar1) {
      (*this_00->incremental_base_->_vptr_Incremental_binary[8])
                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);
    }
    Output_file::resize(this_01,(off_t)__file);
  }
  queue_final_tasks(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01);
  return;
}



void FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)

{
  long lVar1;
  undefined8 uVar2;
  char cVar3;
  int iVar4;
  undefined8 uVar5;
  long lVar6;
  
  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,
               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));
  lVar1 = *(long *)(param_1 + 0x28);
  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),
                       *(undefined8 *)(param_1 + 0x20),param_3);
  if (*(long *)(param_1 + 0x30) != 0) {
    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));
    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));
  }
  if (*(long *)(lVar1 + 0x460) == 0) {
    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/parameters.h",0x5c,"options");
    }
    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);
    lVar6 = FUN_002d9490(0x28);
                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */
    FUN_001f8680(lVar6,uVar2);
    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));
    if (iVar4 != 0) {
      *(undefined1 *)(lVar6 + 0x22) = 1;
    }
    FUN_001f8920(lVar6,uVar5);
  }
  else {
    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);
    cVar3 = FUN_002379c0();
    if (cVar3 != '\0') {
      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))
                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),
                 *(undefined8 *)(param_1 + 0x28),lVar6);
    }
    FUN_001f8db0(lVar6,uVar5);
  }
  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),
               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);
  return;
}


PUSH R15
PUSH R14
PUSH R13
MOV R13,RSI
PUSH R12
MOV R12,RDX
PUSH RBP
MOV RSI,R12
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOV RAX,qword ptr [RDI + 0x8]
MOV RDI,qword ptr [RDI + 0x18]
MOV RDX,qword ptr [RAX + 0x4058]
CALL 0x00273eb0
MOV RBP,qword ptr [RBX + 0x28]
MOV RCX,qword ptr [RBX + 0x20]
MOV R8,R12
MOV RDX,qword ptr [RBX + 0x18]
MOV RSI,qword ptr [RBX + 0x10]
MOV RDI,RBP
CALL 0x001b0040
MOV RDI,qword ptr [RBX + 0x30]
MOV R14,RAX
TEST RDI,RDI
JZ 0x001b0e3a
MOV RSI,qword ptr [RBX + 0x10]
CALL 0x001bc580
MOV RSI,qword ptr [RBX + 0x30]
MOV RDI,RBP
CALL 0x001a7840
MOV RAX,qword ptr [RBP + 0x460]
MOV RDI,qword ptr [0x0043e6b0]
TEST RAX,RAX
JZ 0x001b0eb0
MOV R12,qword ptr [RAX + 0x50]
CALL 0x002379c0
TEST AL,AL
JNZ 0x001b0e90
MOV RSI,R14
MOV RDI,R12
CALL 0x001f8db0
MOV RDX,qword ptr [RBX + 0x18]
MOV RSI,qword ptr [RBX + 0x10]
MOV R9,R12
MOV R8,R13
MOV RDI,qword ptr [RBX + 0x8]
ADD RSP,0x8
MOV RCX,RBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
JMP 0x0017d490
MOV RDI,qword ptr [RBP + 0x460]
MOV RDX,qword ptr [RBX + 0x28]
MOV RCX,R12
MOV RSI,qword ptr [RBX + 0x18]
MOV RAX,qword ptr [RDI]
CALL qword ptr [RAX + 0x40]
JMP 0x001b0e5a
MOV RAX,qword ptr [RDI + 0x10]
TEST RAX,RAX
JZ 0x001b0efb
MOV R15,qword ptr [RAX + 0x4058]
MOV EDI,0x28
CALL 0x002d9490
MOV RDI,RAX
MOV RSI,R15
MOV R12,RAX
CALL 0x001f8680
MOV RDI,qword ptr [RBX + 0x8]
CALL 0x001e5f20
TEST EAX,EAX
JZ 0x001b0eeb
MOV byte ptr [R12 + 0x22],0x1
MOV RSI,R14
MOV RDI,R12
CALL 0x001f8920
JMP 0x001b0e65
LEA RDX,[0x3778a8]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
(translation_unit "void FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}\n\n" (function_definition "void FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}" primitive_type (function_declarator "FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3)" ( (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) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (expression_statement "FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));" (call_expression "FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_1 + 8) + 0x4058)" * (cast_expression "(undefined8 *)(*(long *)(param_1 + 8) + 0x4058)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x4058)" ( (binary_expression "*(long *)(param_1 + 8) + 0x4058" (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 "lVar1 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);" (assignment_expression "uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" identifier = (call_expression "FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" identifier (argument_list "(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x30) != 0)" ( (binary_expression "*(long *)(param_1 + 0x30) != 0" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }" { (expression_statement "FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));" (call_expression "FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10))" identifier (argument_list "(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10))" ( (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));" (call_expression "FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30))" identifier (argument_list "(lVar1,*(undefined8 *)(param_1 + 0x30))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) })) (if_statement "if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" if (parenthesized_expression "(*(long *)(lVar1 + 0x460) == 0)" ( (binary_expression "*(long *)(lVar1 + 0x460) == 0" (pointer_expression "*(long *)(lVar1 + 0x460)" * (cast_expression "(long *)(lVar1 + 0x460)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);" (assignment_expression "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_002d9490(0x28);" (assignment_expression "lVar6 = FUN_002d9490(0x28)" identifier = (call_expression "FUN_002d9490(0x28)" identifier (argument_list "(0x28)" ( number_literal )))) ;) comment (expression_statement "FUN_001f8680(lVar6,uVar2);" (call_expression "FUN_001f8680(lVar6,uVar2)" identifier (argument_list "(lVar6,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));" (assignment_expression "iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8))" identifier = (call_expression "FUN_001e5f20(*(undefined8 *)(param_1 + 8))" identifier (argument_list "(*(undefined8 *)(param_1 + 8))" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }" { (expression_statement "*(undefined1 *)(lVar6 + 0x22) = 1;" (assignment_expression "*(undefined1 *)(lVar6 + 0x22) = 1" (pointer_expression "*(undefined1 *)(lVar6 + 0x22)" * (cast_expression "(undefined1 *)(lVar6 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x22)" ( (binary_expression "lVar6 + 0x22" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_001f8920(lVar6,uVar5);" (call_expression "FUN_001f8920(lVar6,uVar5)" identifier (argument_list "(lVar6,uVar5)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" else (compound_statement "{\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" { (expression_statement "lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);" (assignment_expression "lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50)" identifier = (pointer_expression "*(long *)(*(long *)(lVar1 + 0x460) + 0x50)" * (cast_expression "(long *)(*(long *)(lVar1 + 0x460) + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x460) + 0x50)" ( (binary_expression "*(long *)(lVar1 + 0x460) + 0x50" (pointer_expression "*(long *)(lVar1 + 0x460)" * (cast_expression "(long *)(lVar1 + 0x460)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "cVar3 = FUN_002379c0();" (assignment_expression "cVar3 = FUN_002379c0()" identifier = (call_expression "FUN_002379c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }" { (expression_statement "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);" (call_expression "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6)" (parenthesized_expression "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))" ( (pointer_expression "**(code **)(**(long **)(lVar1 + 0x460) + 0x40)" * (pointer_expression "*(code **)(**(long **)(lVar1 + 0x460) + 0x40)" * (cast_expression "(code **)(**(long **)(lVar1 + 0x460) + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(lVar1 + 0x460) + 0x40)" ( (binary_expression "**(long **)(lVar1 + 0x460) + 0x40" (pointer_expression "**(long **)(lVar1 + 0x460)" * (pointer_expression "*(long **)(lVar1 + 0x460)" * (cast_expression "(long **)(lVar1 + 0x460)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6)" ( (pointer_expression "*(long **)(lVar1 + 0x460)" * (cast_expression "(long **)(lVar1 + 0x460)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , identifier ))) ;) })) (expression_statement "FUN_001f8db0(lVar6,uVar5);" (call_expression "FUN_001f8db0(lVar6,uVar5)" identifier (argument_list "(lVar6,uVar5)" ( identifier , identifier ))) ;) }))) (expression_statement "FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);" (call_expression "FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void run(Layout_task_runner * this, Workqueue * workqueue, Task * task)\n    */\n\nvoid __thiscall\ngold::Layout_task_runner::run(Layout_task_runner *this,Workqueue *workqueue,Task *task)\n\n{\n  Layout *this_00;\n  char *name;\n  bool bVar1;\n  Object_format OVar2;\n  char *__file;\n  Output_file *this_01;\n  int __oflag;\n  \n  Symbol_table::detect_odr_violations(this->symtab_,task,(this->options_->output_).value);\n  this_00 = this->layout_;\n  __file = (char *)Layout::finalize(this_00,this->input_objects_,this->symtab_,this->target_,task);\n  if (this->mapfile_ != (Mapfile *)0x0) {\n    Mapfile::print_discarded_sections(this->mapfile_,this->input_objects_);\n    Layout::print_to_mapfile(this_00,this->mapfile_);\n  }\n  if (this_00->incremental_base_ == (Incremental_binary *)0x0) {\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    name = (parameters->options_->output_).value;\n    this_01 = (Output_file *)operator_new(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    Output_file::Output_file(this_01,name);\n    OVar2 = General_options::oformat_enum(this->options_);\n    if (OVar2 != OBJECT_FORMAT_ELF) {\n      this_01->is_temporary_ = true;\n    }\n    Output_file::open(this_01,__file,__oflag);\n  }\n  else {\n    this_01 = this_00->incremental_base_->output_;\n    bVar1 = Parameters::incremental_update(parameters);\n    if (bVar1) {\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }\n    Output_file::resize(this_01,(off_t)__file);\n  }\n  queue_final_tasks(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall\ngold::Layout_task_runner::run(Layout_task_runner *this,Workqueue *workqueue,Task *task)\n\n{\n  Layout *this_00;\n  char *name;\n  bool bVar1;\n  Object_format OVar2;\n  char *__file;\n  Output_file *this_01;\n  int __oflag;\n  \n  Symbol_table::detect_odr_violations(this->symtab_,task,(this->options_->output_).value);\n  this_00 = this->layout_;\n  __file = (char *)Layout::finalize(this_00,this->input_objects_,this->symtab_,this->target_,task);\n  if (this->mapfile_ != (Mapfile *)0x0) {\n    Mapfile::print_discarded_sections(this->mapfile_,this->input_objects_);\n    Layout::print_to_mapfile(this_00,this->mapfile_);\n  }\n  if (this_00->incremental_base_ == (Incremental_binary *)0x0) {\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    name = (parameters->options_->output_).value;\n    this_01 = (Output_file *)operator_new(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    Output_file::Output_file(this_01,name);\n    OVar2 = General_options::oformat_enum(this->options_);\n    if (OVar2 != OBJECT_FORMAT_ELF) {\n      this_01->is_temporary_ = true;\n    }\n    Output_file::open(this_01,__file,__oflag);\n  }\n  else {\n    this_01 = this_00->incremental_base_->output_;\n    bVar1 = Parameters::incremental_update(parameters);\n    if (bVar1) {\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }\n    Output_file::resize(this_01,(off_t)__file);\n  }\n  queue_final_tasks(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout_task_runner::" identifier : : identifier : :) (function_declarator "run(Layout_task_runner *this,Workqueue *workqueue,Task *task)" identifier (parameter_list "(Layout_task_runner *this,Workqueue *workqueue,Task *task)" ( (parameter_declaration "Layout_task_runner *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Workqueue *workqueue" type_identifier (pointer_declarator "*workqueue" * identifier)) , (parameter_declaration "Task *task" type_identifier (pointer_declarator "*task" * identifier)) ))) (compound_statement "{\n  Layout *this_00;\n  char *name;\n  bool bVar1;\n  Object_format OVar2;\n  char *__file;\n  Output_file *this_01;\n  int __oflag;\n  \n  Symbol_table::detect_odr_violations(this->symtab_,task,(this->options_->output_).value);\n  this_00 = this->layout_;\n  __file = (char *)Layout::finalize(this_00,this->input_objects_,this->symtab_,this->target_,task);\n  if (this->mapfile_ != (Mapfile *)0x0) {\n    Mapfile::print_discarded_sections(this->mapfile_,this->input_objects_);\n    Layout::print_to_mapfile(this_00,this->mapfile_);\n  }\n  if (this_00->incremental_base_ == (Incremental_binary *)0x0) {\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    name = (parameters->options_->output_).value;\n    this_01 = (Output_file *)operator_new(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    Output_file::Output_file(this_01,name);\n    OVar2 = General_options::oformat_enum(this->options_);\n    if (OVar2 != OBJECT_FORMAT_ELF) {\n      this_01->is_temporary_ = true;\n    }\n    Output_file::open(this_01,__file,__oflag);\n  }\n  else {\n    this_01 = this_00->incremental_base_->output_;\n    bVar1 = Parameters::incremental_update(parameters);\n    if (bVar1) {\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }\n    Output_file::resize(this_01,(off_t)__file);\n  }\n  queue_final_tasks(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01);\n  return;\n}" { (declaration "Layout *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "char *name;" primitive_type (pointer_declarator "*name" * identifier) ;) (declaration "bool bVar1;" primitive_type identifier ;) (declaration "Object_format OVar2;" type_identifier identifier ;) (declaration "char *__file;" primitive_type (pointer_declarator "*__file" * identifier) ;) (declaration "Output_file *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "int __oflag;" primitive_type identifier ;) (labeled_statement "Symbol_table::detect_odr_violations(this->symtab_,task,(this->options_->output_).value);" statement_identifier : (ERROR ":" :) (expression_statement "detect_odr_violations(this->symtab_,task,(this->options_->output_).value);" (call_expression "detect_odr_violations(this->symtab_,task,(this->options_->output_).value)" identifier (argument_list "(this->symtab_,task,(this->options_->output_).value)" ( (field_expression "this->symtab_" identifier -> field_identifier) , identifier , (field_expression "(this->options_->output_).value" (parenthesized_expression "(this->options_->output_)" ( (field_expression "this->options_->output_" (field_expression "this->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) ))) ;)) (expression_statement "this_00 = this->layout_;" (assignment_expression "this_00 = this->layout_" identifier = (field_expression "this->layout_" identifier -> field_identifier)) ;) (ERROR "__file = (char *)Layout::" (assignment_expression "__file = (char *)Layout" identifier = (cast_expression "(char *)Layout" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) : :) (expression_statement "finalize(this_00,this->input_objects_,this->symtab_,this->target_,task);" (call_expression "finalize(this_00,this->input_objects_,this->symtab_,this->target_,task)" identifier (argument_list "(this_00,this->input_objects_,this->symtab_,this->target_,task)" ( identifier , (field_expression "this->input_objects_" identifier -> field_identifier) , (field_expression "this->symtab_" identifier -> field_identifier) , (field_expression "this->target_" identifier -> field_identifier) , identifier ))) ;) (if_statement "if (this->mapfile_ != (Mapfile *)0x0) {\n    Mapfile::print_discarded_sections(this->mapfile_,this->input_objects_);\n    Layout::print_to_mapfile(this_00,this->mapfile_);\n  }" if (parenthesized_expression "(this->mapfile_ != (Mapfile *)0x0)" ( (binary_expression "this->mapfile_ != (Mapfile *)0x0" (field_expression "this->mapfile_" identifier -> field_identifier) != (cast_expression "(Mapfile *)0x0" ( (type_descriptor "Mapfile *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Mapfile::print_discarded_sections(this->mapfile_,this->input_objects_);\n    Layout::print_to_mapfile(this_00,this->mapfile_);\n  }" { (labeled_statement "Mapfile::print_discarded_sections(this->mapfile_,this->input_objects_);" statement_identifier : (ERROR ":" :) (expression_statement "print_discarded_sections(this->mapfile_,this->input_objects_);" (call_expression "print_discarded_sections(this->mapfile_,this->input_objects_)" identifier (argument_list "(this->mapfile_,this->input_objects_)" ( (field_expression "this->mapfile_" identifier -> field_identifier) , (field_expression "this->input_objects_" identifier -> field_identifier) ))) ;)) (labeled_statement "Layout::print_to_mapfile(this_00,this->mapfile_);" statement_identifier : (ERROR ":" :) (expression_statement "print_to_mapfile(this_00,this->mapfile_);" (call_expression "print_to_mapfile(this_00,this->mapfile_)" identifier (argument_list "(this_00,this->mapfile_)" ( identifier , (field_expression "this->mapfile_" identifier -> field_identifier) ))) ;)) })) (if_statement "if (this_00->incremental_base_ == (Incremental_binary *)0x0) {\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    name = (parameters->options_->output_).value;\n    this_01 = (Output_file *)operator_new(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    Output_file::Output_file(this_01,name);\n    OVar2 = General_options::oformat_enum(this->options_);\n    if (OVar2 != OBJECT_FORMAT_ELF) {\n      this_01->is_temporary_ = true;\n    }\n    Output_file::open(this_01,__file,__oflag);\n  }\n  else {\n    this_01 = this_00->incremental_base_->output_;\n    bVar1 = Parameters::incremental_update(parameters);\n    if (bVar1) {\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }\n    Output_file::resize(this_01,(off_t)__file);\n  }" if (parenthesized_expression "(this_00->incremental_base_ == (Incremental_binary *)0x0)" ( (binary_expression "this_00->incremental_base_ == (Incremental_binary *)0x0" (field_expression "this_00->incremental_base_" identifier -> field_identifier) == (cast_expression "(Incremental_binary *)0x0" ( (type_descriptor "Incremental_binary *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }\n    name = (parameters->options_->output_).value;\n    this_01 = (Output_file *)operator_new(0x28);\n                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */\n    Output_file::Output_file(this_01,name);\n    OVar2 = General_options::oformat_enum(this->options_);\n    if (OVar2 != OBJECT_FORMAT_ELF) {\n      this_01->is_temporary_ = true;\n    }\n    Output_file::open(this_01,__file,__oflag);\n  }" { (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n      do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n    }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "name = (parameters->options_->output_).value;" (assignment_expression "name = (parameters->options_->output_).value" identifier = (field_expression "(parameters->options_->output_).value" (parenthesized_expression "(parameters->options_->output_)" ( (field_expression "parameters->options_->output_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ;) (expression_statement "this_01 = (Output_file *)operator_new(0x28);" (assignment_expression "this_01 = (Output_file *)operator_new(0x28)" identifier = (cast_expression "(Output_file *)operator_new(0x28)" ( (type_descriptor "Output_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x28)" identifier (argument_list "(0x28)" ( number_literal ))))) ;) comment (labeled_statement "Output_file::Output_file(this_01,name);" statement_identifier : (ERROR ":" :) (expression_statement "Output_file(this_01,name);" (call_expression "Output_file(this_01,name)" identifier (argument_list "(this_01,name)" ( identifier , identifier ))) ;)) (ERROR "OVar2 = General_options::" (assignment_expression "OVar2 = General_options" identifier = identifier) : :) (expression_statement "oformat_enum(this->options_);" (call_expression "oformat_enum(this->options_)" identifier (argument_list "(this->options_)" ( (field_expression "this->options_" identifier -> field_identifier) ))) ;) (if_statement "if (OVar2 != OBJECT_FORMAT_ELF) {\n      this_01->is_temporary_ = true;\n    }" if (parenthesized_expression "(OVar2 != OBJECT_FORMAT_ELF)" ( (binary_expression "OVar2 != OBJECT_FORMAT_ELF" identifier != identifier) )) (compound_statement "{\n      this_01->is_temporary_ = true;\n    }" { (expression_statement "this_01->is_temporary_ = true;" (assignment_expression "this_01->is_temporary_ = true" (field_expression "this_01->is_temporary_" identifier -> field_identifier) = true) ;) })) (labeled_statement "Output_file::open(this_01,__file,__oflag);" statement_identifier : (ERROR ":" :) (expression_statement "open(this_01,__file,__oflag);" (call_expression "open(this_01,__file,__oflag)" identifier (argument_list "(this_01,__file,__oflag)" ( identifier , identifier , identifier ))) ;)) }) (else_clause "else {\n    this_01 = this_00->incremental_base_->output_;\n    bVar1 = Parameters::incremental_update(parameters);\n    if (bVar1) {\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }\n    Output_file::resize(this_01,(off_t)__file);\n  }" else (compound_statement "{\n    this_01 = this_00->incremental_base_->output_;\n    bVar1 = Parameters::incremental_update(parameters);\n    if (bVar1) {\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }\n    Output_file::resize(this_01,(off_t)__file);\n  }" { (expression_statement "this_01 = this_00->incremental_base_->output_;" (assignment_expression "this_01 = this_00->incremental_base_->output_" identifier = (field_expression "this_00->incremental_base_->output_" (field_expression "this_00->incremental_base_" identifier -> field_identifier) -> field_identifier)) ;) (ERROR "bVar1 = Parameters::" (assignment_expression "bVar1 = Parameters" identifier = identifier) : :) (expression_statement "incremental_update(parameters);" (call_expression "incremental_update(parameters)" identifier (argument_list "(parameters)" ( identifier ))) ;) (if_statement "if (bVar1) {\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n      (*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);\n    }" { (expression_statement "(*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);" (call_expression "(*this_00->incremental_base_->_vptr_Incremental_binary[8])\n                (this_00->incremental_base_,this->symtab_,this->layout_,this_01)" (parenthesized_expression "(*this_00->incremental_base_->_vptr_Incremental_binary[8])" ( (pointer_expression "*this_00->incremental_base_->_vptr_Incremental_binary[8]" * (subscript_expression "this_00->incremental_base_->_vptr_Incremental_binary[8]" (field_expression "this_00->incremental_base_->_vptr_Incremental_binary" (field_expression "this_00->incremental_base_" identifier -> field_identifier) -> field_identifier) [ number_literal ])) )) (argument_list "(this_00->incremental_base_,this->symtab_,this->layout_,this_01)" ( (field_expression "this_00->incremental_base_" identifier -> field_identifier) , (field_expression "this->symtab_" identifier -> field_identifier) , (field_expression "this->layout_" identifier -> field_identifier) , identifier ))) ;) })) (labeled_statement "Output_file::resize(this_01,(off_t)__file);" statement_identifier : (ERROR ":" :) (expression_statement "resize(this_01,(off_t)__file);" (call_expression "resize(this_01,(off_t)__file)" identifier (argument_list "(this_01,(off_t)__file)" ( identifier , (cast_expression "(off_t)__file" ( (type_descriptor "off_t" type_identifier) ) identifier) ))) ;)) }))) (expression_statement "queue_final_tasks(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01);" (call_expression "queue_final_tasks(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01)" identifier (argument_list "(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01)" ( (field_expression "this->options_" identifier -> field_identifier) , (field_expression "this->input_objects_" identifier -> field_identifier) , (field_expression "this->symtab_" identifier -> field_identifier) , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}\n\n" (function_definition "void FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}" primitive_type (function_declarator "FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)" identifier (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3)" ( (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) ))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (expression_statement "FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));" (call_expression "FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058))" identifier (argument_list "(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058))" ( (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_1 + 8) + 0x4058)" * (cast_expression "(undefined8 *)(*(long *)(param_1 + 8) + 0x4058)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_1 + 8) + 0x4058)" ( (binary_expression "*(long *)(param_1 + 8) + 0x4058" (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 "lVar1 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x28)" identifier = (pointer_expression "*(long *)(param_1 + 0x28)" * (cast_expression "(long *)(param_1 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);" (assignment_expression "uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" identifier = (call_expression "FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" identifier (argument_list "(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x20)" * (cast_expression "(undefined8 *)(param_1 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) )))) , identifier )))) ;) (if_statement "if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }" if (parenthesized_expression "(*(long *)(param_1 + 0x30) != 0)" ( (binary_expression "*(long *)(param_1 + 0x30) != 0" (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }" { (expression_statement "FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));" (call_expression "FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10))" identifier (argument_list "(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10))" ( (pointer_expression "*(long *)(param_1 + 0x30)" * (cast_expression "(long *)(param_1 + 0x30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));" (call_expression "FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30))" identifier (argument_list "(lVar1,*(undefined8 *)(param_1 + 0x30))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x30)" * (cast_expression "(undefined8 *)(param_1 + 0x30)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) })) (if_statement "if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" if (parenthesized_expression "(*(long *)(lVar1 + 0x460) == 0)" ( (binary_expression "*(long *)(lVar1 + 0x460) == 0" (pointer_expression "*(long *)(lVar1 + 0x460)" * (cast_expression "(long *)(lVar1 + 0x460)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }" { (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);" (assignment_expression "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" identifier = (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" * (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar6 = FUN_002d9490(0x28);" (assignment_expression "lVar6 = FUN_002d9490(0x28)" identifier = (call_expression "FUN_002d9490(0x28)" identifier (argument_list "(0x28)" ( number_literal )))) ;) (expression_statement "FUN_001f8680(lVar6,uVar2);" (call_expression "FUN_001f8680(lVar6,uVar2)" identifier (argument_list "(lVar6,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));" (assignment_expression "iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8))" identifier = (call_expression "FUN_001e5f20(*(undefined8 *)(param_1 + 8))" identifier (argument_list "(*(undefined8 *)(param_1 + 8))" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (if_statement "if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }" { (expression_statement "*(undefined1 *)(lVar6 + 0x22) = 1;" (assignment_expression "*(undefined1 *)(lVar6 + 0x22) = 1" (pointer_expression "*(undefined1 *)(lVar6 + 0x22)" * (cast_expression "(undefined1 *)(lVar6 + 0x22)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x22)" ( (binary_expression "lVar6 + 0x22" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "FUN_001f8920(lVar6,uVar5);" (call_expression "FUN_001f8920(lVar6,uVar5)" identifier (argument_list "(lVar6,uVar5)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" else (compound_statement "{\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" { (expression_statement "lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);" (assignment_expression "lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50)" identifier = (pointer_expression "*(long *)(*(long *)(lVar1 + 0x460) + 0x50)" * (cast_expression "(long *)(*(long *)(lVar1 + 0x460) + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar1 + 0x460) + 0x50)" ( (binary_expression "*(long *)(lVar1 + 0x460) + 0x50" (pointer_expression "*(long *)(lVar1 + 0x460)" * (cast_expression "(long *)(lVar1 + 0x460)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "cVar3 = FUN_002379c0();" (assignment_expression "cVar3 = FUN_002379c0()" identifier = (call_expression "FUN_002379c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }" { (expression_statement "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);" (call_expression "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6)" (parenthesized_expression "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))" ( (pointer_expression "**(code **)(**(long **)(lVar1 + 0x460) + 0x40)" * (pointer_expression "*(code **)(**(long **)(lVar1 + 0x460) + 0x40)" * (cast_expression "(code **)(**(long **)(lVar1 + 0x460) + 0x40)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(lVar1 + 0x460) + 0x40)" ( (binary_expression "**(long **)(lVar1 + 0x460) + 0x40" (pointer_expression "**(long **)(lVar1 + 0x460)" * (pointer_expression "*(long **)(lVar1 + 0x460)" * (cast_expression "(long **)(lVar1 + 0x460)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6)" ( (pointer_expression "*(long **)(lVar1 + 0x460)" * (cast_expression "(long **)(lVar1 + 0x460)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar1 + 0x460)" ( (binary_expression "lVar1 + 0x460" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x28)" * (cast_expression "(undefined8 *)(param_1 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , identifier ))) ;) })) (expression_statement "FUN_001f8db0(lVar6,uVar5);" (call_expression "FUN_001f8db0(lVar6,uVar5)" identifier (argument_list "(lVar6,uVar5)" ( identifier , identifier ))) ;) }))) (expression_statement "FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);" (call_expression "FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x10)" * (cast_expression "(undefined8 *)(param_1 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_1 + 0x18)" * (cast_expression "(undefined8 *)(param_1 + 0x18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , 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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , 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 ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) })) (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 { (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 * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (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) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (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) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)\n\n{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001b0dd0(long param_1,undefined8 param_2,undefined8 param_3)" (identifier "FUN_001b0dd0") (parameter_list "(long param_1,undefined8 param_2,undefined8 param_3)" (( "(") (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")) () ")"))) (compound_statement "{\n  long lVar1;\n  undefined8 uVar2;\n  char cVar3;\n  int iVar4;\n  undefined8 uVar5;\n  long lVar6;\n  \n  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));\n  lVar1 = *(long *)(param_1 + 0x28);\n  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);\n  if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }\n  if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }\n  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (expression_statement "FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));" (call_expression "FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058))" (identifier "FUN_00273eb0") (argument_list "(*(undefined8 *)(param_1 + 0x18),param_3,\n               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "param_3") (, ",") (pointer_expression "*(undefined8 *)(*(long *)(param_1 + 8) + 0x4058)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_1 + 8) + 0x4058)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_1 + 8) + 0x4058)" (( "(") (binary_expression "*(long *)(param_1 + 8) + 0x4058" (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 "0x4058")) () ")")))) () ")"))) (; ";")) (expression_statement "lVar1 = *(long *)(param_1 + 0x28);" (assignment_expression "lVar1 = *(long *)(param_1 + 0x28)" (identifier "lVar1") (= "=") (pointer_expression "*(long *)(param_1 + 0x28)" (* "*") (cast_expression "(long *)(param_1 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3);" (assignment_expression "uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" (identifier "uVar5") (= "=") (call_expression "FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" (identifier "FUN_001b0040") (argument_list "(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),\n                       *(undefined8 *)(param_1 + 0x20),param_3)" (( "(") (identifier "lVar1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x20)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")")))) (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x30) != 0) {\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x30) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x30) != 0" (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));\n    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));\n  }" ({ "{") (expression_statement "FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));" (call_expression "FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10))" (identifier "FUN_001bc580") (argument_list "(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10))" (( "(") (pointer_expression "*(long *)(param_1 + 0x30)" (* "*") (cast_expression "(long *)(param_1 + 0x30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));" (call_expression "FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30))" (identifier "FUN_001a7840") (argument_list "(lVar1,*(undefined8 *)(param_1 + 0x30))" (( "(") (identifier "lVar1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) () ")"))) (; ";")) (} "}"))) (if_statement "if (*(long *)(lVar1 + 0x460) == 0) {\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }\n  else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" (if "if") (parenthesized_expression "(*(long *)(lVar1 + 0x460) == 0)" (( "(") (binary_expression "*(long *)(lVar1 + 0x460) == 0" (pointer_expression "*(long *)(lVar1 + 0x460)" (* "*") (cast_expression "(long *)(lVar1 + 0x460)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x460)" (( "(") (binary_expression "lVar1 + 0x460" (identifier "lVar1") (+ "+") (number_literal "0x460")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }\n    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);\n    lVar6 = FUN_002d9490(0x28);\n                    \n    FUN_001f8680(lVar6,uVar2);\n    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));\n    if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }\n    FUN_001f8920(lVar6,uVar5);\n  }" ({ "{") (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n      FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n    }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);" (assignment_expression "uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" (* "*") (cast_expression "(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x4058")) () ")"))))) (; ";")) (expression_statement "lVar6 = FUN_002d9490(0x28);" (assignment_expression "lVar6 = FUN_002d9490(0x28)" (identifier "lVar6") (= "=") (call_expression "FUN_002d9490(0x28)" (identifier "FUN_002d9490") (argument_list "(0x28)" (( "(") (number_literal "0x28") () ")")))) (; ";")) (expression_statement "FUN_001f8680(lVar6,uVar2);" (call_expression "FUN_001f8680(lVar6,uVar2)" (identifier "FUN_001f8680") (argument_list "(lVar6,uVar2)" (( "(") (identifier "lVar6") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));" (assignment_expression "iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8))" (identifier "iVar4") (= "=") (call_expression "FUN_001e5f20(*(undefined8 *)(param_1 + 8))" (identifier "FUN_001e5f20") (argument_list "(*(undefined8 *)(param_1 + 8))" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(undefined1 *)(lVar6 + 0x22) = 1;\n    }" ({ "{") (expression_statement "*(undefined1 *)(lVar6 + 0x22) = 1;" (assignment_expression "*(undefined1 *)(lVar6 + 0x22) = 1" (pointer_expression "*(undefined1 *)(lVar6 + 0x22)" (* "*") (cast_expression "(undefined1 *)(lVar6 + 0x22)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x22)" (( "(") (binary_expression "lVar6 + 0x22" (identifier "lVar6") (+ "+") (number_literal "0x22")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "FUN_001f8920(lVar6,uVar5);" (call_expression "FUN_001f8920(lVar6,uVar5)" (identifier "FUN_001f8920") (argument_list "(lVar6,uVar5)" (( "(") (identifier "lVar6") (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" (else "else") (compound_statement "{\n    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);\n    cVar3 = FUN_002379c0();\n    if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }\n    FUN_001f8db0(lVar6,uVar5);\n  }" ({ "{") (expression_statement "lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);" (assignment_expression "lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(*(long *)(lVar1 + 0x460) + 0x50)" (* "*") (cast_expression "(long *)(*(long *)(lVar1 + 0x460) + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar1 + 0x460) + 0x50)" (( "(") (binary_expression "*(long *)(lVar1 + 0x460) + 0x50" (pointer_expression "*(long *)(lVar1 + 0x460)" (* "*") (cast_expression "(long *)(lVar1 + 0x460)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar1 + 0x460)" (( "(") (binary_expression "lVar1 + 0x460" (identifier "lVar1") (+ "+") (number_literal "0x460")) () ")")))) (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "cVar3 = FUN_002379c0();" (assignment_expression "cVar3 = FUN_002379c0()" (identifier "cVar3") (= "=") (call_expression "FUN_002379c0()" (identifier "FUN_002379c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar3 != '\0') {\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);\n    }" ({ "{") (expression_statement "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6);" (call_expression "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))\n                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6)" (parenthesized_expression "(**(code **)(**(long **)(lVar1 + 0x460) + 0x40))" (( "(") (pointer_expression "**(code **)(**(long **)(lVar1 + 0x460) + 0x40)" (* "*") (pointer_expression "*(code **)(**(long **)(lVar1 + 0x460) + 0x40)" (* "*") (cast_expression "(code **)(**(long **)(lVar1 + 0x460) + 0x40)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(lVar1 + 0x460) + 0x40)" (( "(") (binary_expression "**(long **)(lVar1 + 0x460) + 0x40" (pointer_expression "**(long **)(lVar1 + 0x460)" (* "*") (pointer_expression "*(long **)(lVar1 + 0x460)" (* "*") (cast_expression "(long **)(lVar1 + 0x460)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x460)" (( "(") (binary_expression "lVar1 + 0x460" (identifier "lVar1") (+ "+") (number_literal "0x460")) () ")"))))) (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (argument_list "(*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),\n                 *(undefined8 *)(param_1 + 0x28),lVar6)" (( "(") (pointer_expression "*(long **)(lVar1 + 0x460)" (* "*") (cast_expression "(long **)(lVar1 + 0x460)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar1 + 0x460)" (( "(") (binary_expression "lVar1 + 0x460" (identifier "lVar1") (+ "+") (number_literal "0x460")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (identifier "lVar6") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_001f8db0(lVar6,uVar5);" (call_expression "FUN_001f8db0(lVar6,uVar5)" (identifier "FUN_001f8db0") (argument_list "(lVar6,uVar5)" (( "(") (identifier "lVar6") (, ",") (identifier "uVar5") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);" (call_expression "FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6)" (identifier "FUN_0017d490") (argument_list "(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),\n               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x18)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (identifier "lVar1") (, ",") (identifier "param_2") (, ",") (identifier "lVar6") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void run(Layout_task_runner * this, Workqueue * workqueue, Task * task)
    */

void __thiscall
gold::type_1::function_1(type_1 *this,type_2 *workqueue,type_3 *task)

{
  type_4 *this_00;
  char *name;
  bool bVar1;
  type_5 var_8;
  char *__file;
  type_6 *this_01;
  int __oflag;
  
  Symbol_table::var_1(this->symtab_,task,(this->options_->output_).value);
  this_00 = this->layout_;
  __file = (char *)type_4::var_2(this_00,this->input_objects_,this->symtab_,this->target_,task);
  if (this->mapfile_ != (type_7 *)0x0) {
    Mapfile::var_3(this->mapfile_,this->input_objects_);
    Layout::var_4(this_00,this->mapfile_);
  }
  if (this_00->incremental_base_ == (type_8 *)0x0) {
    if (parameters->options_ == (type_9 *)0x0) {
                    /* WARNING: Subroutine does not return */
      var_5("../../gold/parameters.h",0x5c,"options");
    }
    name = (parameters->options_->output_).value;
    this_01 = (type_6 *)var_6(0x28);
                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */
    Output_file::type_6(this_01,name);
    var_8 = type_9::var_7(this->options_);
    if (var_8 != var_9) {
      this_01->is_temporary_ = true;
    }
    Output_file::var_10(this_01,__file,__oflag);
  }
  else {
    this_01 = this_00->incremental_base_->output_;
    bVar1 = Parameters::var_11(parameters);
    if (bVar1) {
      (*this_00->incremental_base_->_vptr_Incremental_binary[8])
                (this_00->incremental_base_,this->symtab_,this->layout_,this_01);
    }
    Output_file::var_12(this_01,(type_10)__file);
  }
  var_13(this->options_,this->input_objects_,this->symtab_,this_00,workqueue,this_01);
  return;
}


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

void MASKED(long param_1,undefined8 param_2,undefined8 param_3)

{
  long lVar1;
  undefined8 uVar2;
  char cVar3;
  int iVar4;
  undefined8 uVar5;
  long lVar6;
  
  FUN_00273eb0(*(undefined8 *)(param_1 + 0x18),param_3,
               *(undefined8 *)(*(long *)(param_1 + 8) + 0x4058));
  lVar1 = *(long *)(param_1 + 0x28);
  uVar5 = FUN_001b0040(lVar1,*(undefined8 *)(param_1 + 0x10),*(undefined8 *)(param_1 + 0x18),
                       *(undefined8 *)(param_1 + 0x20),param_3);
  if (*(long *)(param_1 + 0x30) != 0) {
    FUN_001bc580(*(long *)(param_1 + 0x30),*(undefined8 *)(param_1 + 0x10));
    FUN_001a7840(lVar1,*(undefined8 *)(param_1 + 0x30));
  }
  if (*(long *)(lVar1 + 0x460) == 0) {
    if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
      FUN_0017c650("../../gold/parameters.h",0x5c,"options");
    }
    uVar2 = *(undefined8 *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x4058);
    lVar6 = FUN_002d9490(0x28);
                    /* try { // try from 001b0ed3 to 001b0ed7 has its CatchHandler @ 001b0f13 */
    FUN_001f8680(lVar6,uVar2);
    iVar4 = FUN_001e5f20(*(undefined8 *)(param_1 + 8));
    if (iVar4 != 0) {
      *(undefined1 *)(lVar6 + 0x22) = 1;
    }
    FUN_001f8920(lVar6,uVar5);
  }
  else {
    lVar6 = *(long *)(*(long *)(lVar1 + 0x460) + 0x50);
    cVar3 = FUN_002379c0();
    if (cVar3 != '\0') {
      (**(code **)(**(long **)(lVar1 + 0x460) + 0x40))
                (*(long **)(lVar1 + 0x460),*(undefined8 *)(param_1 + 0x18),
                 *(undefined8 *)(param_1 + 0x28),lVar6);
    }
    FUN_001f8db0(lVar6,uVar5);
  }
  FUN_0017d490(*(undefined8 *)(param_1 + 8),*(undefined8 *)(param_1 + 0x10),
               *(undefined8 *)(param_1 + 0x18),lVar1,param_2,lVar6);
  return;
}

