
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void write_sections_after_input_sections(Layout * this, Output_file *
   of) */

void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *of)

{
  Output_section *pOVar1;
  off_t oVar2;
  pointer ppOVar3;
  
  if (this->any_postprocessing_sections_ != false) {
    oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);
    oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);
    if (this->output_file_size_ < oVar2) {
      Output_file::resize(of,oVar2);
      this->output_file_size_ = oVar2;
    }
  }
  ppOVar3 = (this->section_list_).
            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
            _M_impl._M_start;
  if (ppOVar3 !=
      (this->section_list_).
      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.
      _M_finish) {
    do {
      pOVar1 = *ppOVar3;
      if ((pOVar1->field_0xc8 & 0x10) != 0) {
        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);
      }
      ppOVar3 = ppOVar3 + 1;
    } while ((this->section_list_).
             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.
             _M_impl._M_finish != ppOVar3);
  }
                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);
  return;
}



void FUN_001b9f80(long param_1,undefined8 param_2)

{
  long *plVar1;
  undefined8 uVar2;
  long lVar3;
  long *plVar4;
  
  if (*(char *)(param_1 + 0x36e) != '\0') {
    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);
    lVar3 = FUN_001b8e00(param_1,uVar2,2);
    if (*(long *)(param_1 + 0x360) < lVar3) {
      FUN_0020c7e0(param_2,lVar3);
      *(long *)(param_1 + 0x360) = lVar3;
    }
  }
  plVar4 = *(long **)(param_1 + 0x248);
  if (plVar4 != *(long **)(param_1 + 0x250)) {
    do {
      plVar1 = (long *)*plVar4;
      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {
        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);
      }
      plVar4 = plVar4 + 1;
    } while (*(long **)(param_1 + 0x250) != plVar4);
  }
                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);
  return;
}


PUSH R12
MOV R12,RSI
PUSH RBP
MOV RBP,RDI
PUSH RBX
CMP byte ptr [RDI + 0x36e],0x0
JNZ 0x001b9fe8
MOV RBX,qword ptr [RBP + 0x248]
CMP RBX,qword ptr [RBP + 0x250]
JZ 0x001b9fca
NOP dword ptr [RAX + RAX*0x1]
MOV RDI,qword ptr [RBX]
TEST byte ptr [RDI + 0xc8],0x10
JZ 0x001b9fbd
MOV RAX,qword ptr [RDI]
MOV RSI,R12
CALL qword ptr [RAX + 0x10]
ADD RBX,0x8
CMP qword ptr [RBP + 0x250],RBX
JNZ 0x001b9fa8
MOV RDI,qword ptr [RBP + 0x2a8]
POP RBX
MOV RSI,R12
POP RBP
POP R12
MOV RAX,qword ptr [RDI]
MOV RAX,qword ptr [RAX + 0x10]
JMP RAX
MOV RSI,qword ptr [RDI + 0x360]
MOV EDX,0x1
CALL 0x001b8e00
MOV EDX,0x2
MOV RDI,RBP
MOV RSI,RAX
CALL 0x001b8e00
MOV RBX,RAX
CMP qword ptr [RBP + 0x360],RAX
JGE 0x001b9f93
MOV RSI,RAX
MOV RDI,R12
CALL 0x0020c7e0
MOV qword ptr [RBP + 0x360],RBX
JMP 0x001b9f93
(translation_unit "void FUN_001b9f80(long param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}\n\n" (function_definition "void FUN_001b9f80(long param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}" primitive_type (function_declarator "FUN_001b9f80(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (if_statement "if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x36e) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x36e) != '\0'" (pointer_expression "*(char *)(param_1 + 0x36e)" * (cast_expression "(char *)(param_1 + 0x36e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36e)" ( (binary_expression "param_1 + 0x36e" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }" { (expression_statement "uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);" (assignment_expression "uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1)" identifier = (call_expression "FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1)" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0x360),1)" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x360)" * (cast_expression "(undefined8 *)(param_1 + 0x360)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "lVar3 = FUN_001b8e00(param_1,uVar2,2);" (assignment_expression "lVar3 = FUN_001b8e00(param_1,uVar2,2)" identifier = (call_expression "FUN_001b8e00(param_1,uVar2,2)" identifier (argument_list "(param_1,uVar2,2)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x360) < lVar3)" ( (binary_expression "*(long *)(param_1 + 0x360) < lVar3" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }" { (expression_statement "FUN_0020c7e0(param_2,lVar3);" (call_expression "FUN_0020c7e0(param_2,lVar3)" identifier (argument_list "(param_2,lVar3)" ( identifier , identifier ))) ;) (expression_statement "*(long *)(param_1 + 0x360) = lVar3;" (assignment_expression "*(long *)(param_1 + 0x360) = lVar3" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) = identifier) ;) })) })) (expression_statement "plVar4 = *(long **)(param_1 + 0x248);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x248)" identifier = (pointer_expression "*(long **)(param_1 + 0x248)" * (cast_expression "(long **)(param_1 + 0x248)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) ))))) ;) (if_statement "if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }" if (parenthesized_expression "(plVar4 != *(long **)(param_1 + 0x250))" ( (binary_expression "plVar4 != *(long **)(param_1 + 0x250)" identifier != (pointer_expression "*(long **)(param_1 + 0x250)" * (cast_expression "(long **)(param_1 + 0x250)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }" { (do_statement "do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);" do (compound_statement "{\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    }" { (expression_statement "plVar1 = (long *)*plVar4;" (assignment_expression "plVar1 = (long *)*plVar4" identifier = (cast_expression "(long *)*plVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar4" * identifier))) ;) (if_statement "if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }" if (parenthesized_expression "((*(byte *)(plVar1 + 0x19) & 0x10) != 0)" ( (binary_expression "(*(byte *)(plVar1 + 0x19) & 0x10) != 0" (parenthesized_expression "(*(byte *)(plVar1 + 0x19) & 0x10)" ( (binary_expression "*(byte *)(plVar1 + 0x19) & 0x10" (pointer_expression "*(byte *)(plVar1 + 0x19)" * (cast_expression "(byte *)(plVar1 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1 + 0x19)" ( (binary_expression "plVar1 + 0x19" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }" { (expression_statement "(**(code **)(*plVar1 + 0x10))(plVar1,param_2);" (call_expression "(**(code **)(*plVar1 + 0x10))(plVar1,param_2)" (parenthesized_expression "(**(code **)(*plVar1 + 0x10))" ( (pointer_expression "**(code **)(*plVar1 + 0x10)" * (pointer_expression "*(code **)(*plVar1 + 0x10)" * (cast_expression "(code **)(*plVar1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0x10)" ( (binary_expression "*plVar1 + 0x10" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "plVar4 = plVar4 + 1;" (assignment_expression "plVar4 = plVar4 + 1" identifier = (binary_expression "plVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(long **)(param_1 + 0x250) != plVar4)" ( (binary_expression "*(long **)(param_1 + 0x250) != plVar4" (pointer_expression "*(long **)(param_1 + 0x250)" * (cast_expression "(long **)(param_1 + 0x250)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) != identifier) )) ;) })) comment comment (expression_statement "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);" (call_expression "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" * (cast_expression "(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x2a8) + 0x10)" ( (binary_expression "**(long **)(param_1 + 0x2a8) + 0x10" (pointer_expression "**(long **)(param_1 + 0x2a8)" * (pointer_expression "*(long **)(param_1 + 0x2a8)" * (cast_expression "(long **)(param_1 + 0x2a8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x2a8),param_2)" ( (pointer_expression "*(long **)(param_1 + 0x2a8)" * (cast_expression "(long **)(param_1 + 0x2a8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void write_sections_after_input_sections(Layout * this, Output_file *\n   of) */\n\nvoid __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *of)\n\n{\n  Output_section *pOVar1;\n  off_t oVar2;\n  pointer ppOVar3;\n  \n  if (this->any_postprocessing_sections_ != false) {\n    oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);\n    oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    if (this->output_file_size_ < oVar2) {\n      Output_file::resize(of,oVar2);\n      this->output_file_size_ = oVar2;\n    }\n  }\n  ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;\n  if (ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar3;\n      if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }\n      ppOVar3 = ppOVar3 + 1;\n    } while ((this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3);\n  }\n                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);\n  return;\n}\n\n" comment comment (function_definition "void __thiscall gold::Layout::write_sections_after_input_sections(Layout *this,Output_file *of)\n\n{\n  Output_section *pOVar1;\n  off_t oVar2;\n  pointer ppOVar3;\n  \n  if (this->any_postprocessing_sections_ != false) {\n    oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);\n    oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    if (this->output_file_size_ < oVar2) {\n      Output_file::resize(of,oVar2);\n      this->output_file_size_ = oVar2;\n    }\n  }\n  ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;\n  if (ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar3;\n      if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }\n      ppOVar3 = ppOVar3 + 1;\n    } while ((this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3);\n  }\n                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Layout::" identifier : : identifier : :) (function_declarator "write_sections_after_input_sections(Layout *this,Output_file *of)" identifier (parameter_list "(Layout *this,Output_file *of)" ( (parameter_declaration "Layout *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Output_file *of" type_identifier (pointer_declarator "*of" * identifier)) ))) (compound_statement "{\n  Output_section *pOVar1;\n  off_t oVar2;\n  pointer ppOVar3;\n  \n  if (this->any_postprocessing_sections_ != false) {\n    oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);\n    oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    if (this->output_file_size_ < oVar2) {\n      Output_file::resize(of,oVar2);\n      this->output_file_size_ = oVar2;\n    }\n  }\n  ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;\n  if (ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar3;\n      if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }\n      ppOVar3 = ppOVar3 + 1;\n    } while ((this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3);\n  }\n                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);\n  return;\n}" { (declaration "Output_section *pOVar1;" type_identifier (pointer_declarator "*pOVar1" * identifier) ;) (declaration "off_t oVar2;" type_identifier identifier ;) (declaration "pointer ppOVar3;" type_identifier identifier ;) (if_statement "if (this->any_postprocessing_sections_ != false) {\n    oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);\n    oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    if (this->output_file_size_ < oVar2) {\n      Output_file::resize(of,oVar2);\n      this->output_file_size_ = oVar2;\n    }\n  }" if (parenthesized_expression "(this->any_postprocessing_sections_ != false)" ( (binary_expression "this->any_postprocessing_sections_ != false" (field_expression "this->any_postprocessing_sections_" identifier -> field_identifier) != false) )) (compound_statement "{\n    oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);\n    oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);\n    if (this->output_file_size_ < oVar2) {\n      Output_file::resize(of,oVar2);\n      this->output_file_size_ = oVar2;\n    }\n  }" { (expression_statement "oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);" (assignment_expression "oVar2 = set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS)" identifier = (call_expression "set_section_offsets(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS)" identifier (argument_list "(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS)" ( identifier , (field_expression "this->output_file_size_" identifier -> field_identifier) , identifier )))) ;) (expression_statement "oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);" (assignment_expression "oVar2 = set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS)" identifier = (call_expression "set_section_offsets(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS)" identifier (argument_list "(this,oVar2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS)" ( identifier , identifier , identifier )))) ;) (if_statement "if (this->output_file_size_ < oVar2) {\n      Output_file::resize(of,oVar2);\n      this->output_file_size_ = oVar2;\n    }" if (parenthesized_expression "(this->output_file_size_ < oVar2)" ( (binary_expression "this->output_file_size_ < oVar2" (field_expression "this->output_file_size_" identifier -> field_identifier) < identifier) )) (compound_statement "{\n      Output_file::resize(of,oVar2);\n      this->output_file_size_ = oVar2;\n    }" { (labeled_statement "Output_file::resize(of,oVar2);" statement_identifier : (ERROR ":" :) (expression_statement "resize(of,oVar2);" (call_expression "resize(of,oVar2)" identifier (argument_list "(of,oVar2)" ( identifier , identifier ))) ;)) (expression_statement "this->output_file_size_ = oVar2;" (assignment_expression "this->output_file_size_ = oVar2" (field_expression "this->output_file_size_" identifier -> field_identifier) = identifier) ;) })) })) (expression_statement "ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start;" (field_expression "ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl._M_start" (field_expression "ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n            _M_impl" (binary_expression "ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar3 = (this->section_list_).\n            super__Vector_base<gold::Output_section*,_std" (assignment_expression "ppOVar3 = (this->section_list_).\n            super__Vector_base<gold" identifier = (binary_expression "(this->section_list_).\n            super__Vector_base<gold" (field_expression "(this->section_list_).\n            super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish) {\n    do {\n      pOVar1 = *ppOVar3;\n      if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }\n      ppOVar3 = ppOVar3 + 1;\n    } while ((this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3);\n  }" if (parenthesized_expression "(ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish)" ( (field_expression "ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl.\n      _M_finish" (field_expression "ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>._M_impl" (binary_expression "ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold::Output_section*,_std" (binary_expression "ppOVar3 !=\n      (this->section_list_).\n      super__Vector_base<gold" identifier != (binary_expression "(this->section_list_).\n      super__Vector_base<gold" (field_expression "(this->section_list_).\n      super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n    do {\n      pOVar1 = *ppOVar3;\n      if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }\n      ppOVar3 = ppOVar3 + 1;\n    } while ((this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3);\n  }" { (do_statement "do {\n      pOVar1 = *ppOVar3;\n      if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }\n      ppOVar3 = ppOVar3 + 1;\n    } while ((this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3);" do (compound_statement "{\n      pOVar1 = *ppOVar3;\n      if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }\n      ppOVar3 = ppOVar3 + 1;\n    }" { (expression_statement "pOVar1 = *ppOVar3;" (assignment_expression "pOVar1 = *ppOVar3" identifier = (pointer_expression "*ppOVar3" * identifier)) ;) (if_statement "if ((pOVar1->field_0xc8 & 0x10) != 0) {\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }" if (parenthesized_expression "((pOVar1->field_0xc8 & 0x10) != 0)" ( (binary_expression "(pOVar1->field_0xc8 & 0x10) != 0" (parenthesized_expression "(pOVar1->field_0xc8 & 0x10)" ( (binary_expression "pOVar1->field_0xc8 & 0x10" (field_expression "pOVar1->field_0xc8" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);\n      }" { (expression_statement "(*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);" (call_expression "(*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of)" (parenthesized_expression "(*(pOVar1->super_Output_data)._vptr_Output_data[2])" ( (pointer_expression "*(pOVar1->super_Output_data)._vptr_Output_data[2]" * (subscript_expression "(pOVar1->super_Output_data)._vptr_Output_data[2]" (field_expression "(pOVar1->super_Output_data)._vptr_Output_data" (parenthesized_expression "(pOVar1->super_Output_data)" ( (field_expression "pOVar1->super_Output_data" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(pOVar1,of)" ( identifier , identifier ))) ;) })) (expression_statement "ppOVar3 = ppOVar3 + 1;" (assignment_expression "ppOVar3 = ppOVar3 + 1" identifier = (binary_expression "ppOVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3)" ( (binary_expression "(this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish != ppOVar3" (field_expression "(this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl._M_finish" (field_expression "(this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_>.\n             _M_impl" (binary_expression "(this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold::Output_section*>_" (binary_expression "(this->section_list_).\n             super__Vector_base<gold::Output_section*,_std::allocator<gold" (binary_expression "(this->section_list_).\n             super__Vector_base<gold::Output_section*,_std" (binary_expression "(this->section_list_).\n             super__Vector_base<gold" (field_expression "(this->section_list_).\n             super__Vector_base" (parenthesized_expression "(this->section_list_)" ( (field_expression "this->section_list_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Output_section" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) comment comment (expression_statement "(*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);" (call_expression "(*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of)" (parenthesized_expression "(*(this->section_headers_->super_Output_data)._vptr_Output_data[2])" ( (pointer_expression "*(this->section_headers_->super_Output_data)._vptr_Output_data[2]" * (subscript_expression "(this->section_headers_->super_Output_data)._vptr_Output_data[2]" (field_expression "(this->section_headers_->super_Output_data)._vptr_Output_data" (parenthesized_expression "(this->section_headers_->super_Output_data)" ( (field_expression "this->section_headers_->super_Output_data" (field_expression "this->section_headers_" identifier -> field_identifier) -> field_identifier) )) . field_identifier) [ number_literal ])) )) (argument_list "(this->section_headers_,of)" ( (field_expression "this->section_headers_" identifier -> field_identifier) , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001b9f80(long param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    \n                    \n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}\n\n" (function_definition "void FUN_001b9f80(long param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    \n                    \n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}" primitive_type (function_declarator "FUN_001b9f80(long param_1,undefined8 param_2)" identifier (parameter_list "(long param_1,undefined8 param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    \n                    \n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (if_statement "if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0x36e) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x36e) != '\0'" (pointer_expression "*(char *)(param_1 + 0x36e)" * (cast_expression "(char *)(param_1 + 0x36e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x36e)" ( (binary_expression "param_1 + 0x36e" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }" { (expression_statement "uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);" (assignment_expression "uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1)" identifier = (call_expression "FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1)" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0x360),1)" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x360)" * (cast_expression "(undefined8 *)(param_1 + 0x360)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "lVar3 = FUN_001b8e00(param_1,uVar2,2);" (assignment_expression "lVar3 = FUN_001b8e00(param_1,uVar2,2)" identifier = (call_expression "FUN_001b8e00(param_1,uVar2,2)" identifier (argument_list "(param_1,uVar2,2)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x360) < lVar3)" ( (binary_expression "*(long *)(param_1 + 0x360) < lVar3" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) < identifier) )) (compound_statement "{\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }" { (expression_statement "FUN_0020c7e0(param_2,lVar3);" (call_expression "FUN_0020c7e0(param_2,lVar3)" identifier (argument_list "(param_2,lVar3)" ( identifier , identifier ))) ;) (expression_statement "*(long *)(param_1 + 0x360) = lVar3;" (assignment_expression "*(long *)(param_1 + 0x360) = lVar3" (pointer_expression "*(long *)(param_1 + 0x360)" * (cast_expression "(long *)(param_1 + 0x360)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x360)" ( (binary_expression "param_1 + 0x360" identifier + number_literal) )))) = identifier) ;) })) })) (expression_statement "plVar4 = *(long **)(param_1 + 0x248);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x248)" identifier = (pointer_expression "*(long **)(param_1 + 0x248)" * (cast_expression "(long **)(param_1 + 0x248)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x248)" ( (binary_expression "param_1 + 0x248" identifier + number_literal) ))))) ;) (if_statement "if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }" if (parenthesized_expression "(plVar4 != *(long **)(param_1 + 0x250))" ( (binary_expression "plVar4 != *(long **)(param_1 + 0x250)" identifier != (pointer_expression "*(long **)(param_1 + 0x250)" * (cast_expression "(long **)(param_1 + 0x250)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) ))))) )) (compound_statement "{\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }" { (do_statement "do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);" do (compound_statement "{\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    }" { (expression_statement "plVar1 = (long *)*plVar4;" (assignment_expression "plVar1 = (long *)*plVar4" identifier = (cast_expression "(long *)*plVar4" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar4" * identifier))) ;) (if_statement "if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }" if (parenthesized_expression "((*(byte *)(plVar1 + 0x19) & 0x10) != 0)" ( (binary_expression "(*(byte *)(plVar1 + 0x19) & 0x10) != 0" (parenthesized_expression "(*(byte *)(plVar1 + 0x19) & 0x10)" ( (binary_expression "*(byte *)(plVar1 + 0x19) & 0x10" (pointer_expression "*(byte *)(plVar1 + 0x19)" * (cast_expression "(byte *)(plVar1 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar1 + 0x19)" ( (binary_expression "plVar1 + 0x19" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }" { (expression_statement "(**(code **)(*plVar1 + 0x10))(plVar1,param_2);" (call_expression "(**(code **)(*plVar1 + 0x10))(plVar1,param_2)" (parenthesized_expression "(**(code **)(*plVar1 + 0x10))" ( (pointer_expression "**(code **)(*plVar1 + 0x10)" * (pointer_expression "*(code **)(*plVar1 + 0x10)" * (cast_expression "(code **)(*plVar1 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar1 + 0x10)" ( (binary_expression "*plVar1 + 0x10" (pointer_expression "*plVar1" * identifier) + number_literal) ))))) )) (argument_list "(plVar1,param_2)" ( identifier , identifier ))) ;) })) (expression_statement "plVar4 = plVar4 + 1;" (assignment_expression "plVar4 = plVar4 + 1" identifier = (binary_expression "plVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(long **)(param_1 + 0x250) != plVar4)" ( (binary_expression "*(long **)(param_1 + 0x250) != plVar4" (pointer_expression "*(long **)(param_1 + 0x250)" * (cast_expression "(long **)(param_1 + 0x250)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x250)" ( (binary_expression "param_1 + 0x250" identifier + number_literal) )))) != identifier) )) ;) })) (expression_statement "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);" (call_expression "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))" ( (pointer_expression "**(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" * (pointer_expression "*(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" * (cast_expression "(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(**(long **)(param_1 + 0x2a8) + 0x10)" ( (binary_expression "**(long **)(param_1 + 0x2a8) + 0x10" (pointer_expression "**(long **)(param_1 + 0x2a8)" * (pointer_expression "*(long **)(param_1 + 0x2a8)" * (cast_expression "(long **)(param_1 + 0x2a8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) ))))) + number_literal) ))))) )) (argument_list "(*(long **)(param_1 + 0x2a8),param_2)" ( (pointer_expression "*(long **)(param_1 + 0x2a8)" * (cast_expression "(long **)(param_1 + 0x2a8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2a8)" ( (binary_expression "param_1 + 0x2a8" identifier + number_literal) )))) , 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) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (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) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , 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) )))) < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (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 * IDENT) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) ;) })) (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) )))) , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001b9f80(long param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    \n                    \n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001b9f80(long param_1,undefined8 param_2)" (identifier "FUN_001b9f80") (parameter_list "(long param_1,undefined8 param_2)" (( "(") (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")) () ")"))) (compound_statement "{\n  long *plVar1;\n  undefined8 uVar2;\n  long lVar3;\n  long *plVar4;\n  \n  if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }\n  plVar4 = *(long **)(param_1 + 0x248);\n  if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }\n                    \n                    \n  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);\n  return;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (if_statement "if (*(char *)(param_1 + 0x36e) != '\0') {\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0x36e) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x36e) != '\0'" (pointer_expression "*(char *)(param_1 + 0x36e)" (* "*") (cast_expression "(char *)(param_1 + 0x36e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x36e)" (( "(") (binary_expression "param_1 + 0x36e" (identifier "param_1") (+ "+") (number_literal "0x36e")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);\n    lVar3 = FUN_001b8e00(param_1,uVar2,2);\n    if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }\n  }" ({ "{") (expression_statement "uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);" (assignment_expression "uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1)" (identifier "uVar2") (= "=") (call_expression "FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1)" (identifier "FUN_001b8e00") (argument_list "(param_1,*(undefined8 *)(param_1 + 0x360),1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x360)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x360)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "lVar3 = FUN_001b8e00(param_1,uVar2,2);" (assignment_expression "lVar3 = FUN_001b8e00(param_1,uVar2,2)" (identifier "lVar3") (= "=") (call_expression "FUN_001b8e00(param_1,uVar2,2)" (identifier "FUN_001b8e00") (argument_list "(param_1,uVar2,2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") (, ",") (number_literal "2") () ")")))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x360) < lVar3) {\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x360) < lVar3)" (( "(") (binary_expression "*(long *)(param_1 + 0x360) < lVar3" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (< "<") (identifier "lVar3")) () ")")) (compound_statement "{\n      FUN_0020c7e0(param_2,lVar3);\n      *(long *)(param_1 + 0x360) = lVar3;\n    }" ({ "{") (expression_statement "FUN_0020c7e0(param_2,lVar3);" (call_expression "FUN_0020c7e0(param_2,lVar3)" (identifier "FUN_0020c7e0") (argument_list "(param_2,lVar3)" (( "(") (identifier "param_2") (, ",") (identifier "lVar3") () ")"))) (; ";")) (expression_statement "*(long *)(param_1 + 0x360) = lVar3;" (assignment_expression "*(long *)(param_1 + 0x360) = lVar3" (pointer_expression "*(long *)(param_1 + 0x360)" (* "*") (cast_expression "(long *)(param_1 + 0x360)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x360)" (( "(") (binary_expression "param_1 + 0x360" (identifier "param_1") (+ "+") (number_literal "0x360")) () ")")))) (= "=") (identifier "lVar3")) (; ";")) (} "}"))) (} "}"))) (expression_statement "plVar4 = *(long **)(param_1 + 0x248);" (assignment_expression "plVar4 = *(long **)(param_1 + 0x248)" (identifier "plVar4") (= "=") (pointer_expression "*(long **)(param_1 + 0x248)" (* "*") (cast_expression "(long **)(param_1 + 0x248)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x248)" (( "(") (binary_expression "param_1 + 0x248" (identifier "param_1") (+ "+") (number_literal "0x248")) () ")"))))) (; ";")) (if_statement "if (plVar4 != *(long **)(param_1 + 0x250)) {\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }" (if "if") (parenthesized_expression "(plVar4 != *(long **)(param_1 + 0x250))" (( "(") (binary_expression "plVar4 != *(long **)(param_1 + 0x250)" (identifier "plVar4") (!= "!=") (pointer_expression "*(long **)(param_1 + 0x250)" (* "*") (cast_expression "(long **)(param_1 + 0x250)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")"))))) () ")")) (compound_statement "{\n    do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);\n  }" ({ "{") (do_statement "do {\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    } while (*(long **)(param_1 + 0x250) != plVar4);" (do "do") (compound_statement "{\n      plVar1 = (long *)*plVar4;\n      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }\n      plVar4 = plVar4 + 1;\n    }" ({ "{") (expression_statement "plVar1 = (long *)*plVar4;" (assignment_expression "plVar1 = (long *)*plVar4" (identifier "plVar1") (= "=") (cast_expression "(long *)*plVar4" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar4" (* "*") (identifier "plVar4")))) (; ";")) (if_statement "if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }" (if "if") (parenthesized_expression "((*(byte *)(plVar1 + 0x19) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(plVar1 + 0x19) & 0x10) != 0" (parenthesized_expression "(*(byte *)(plVar1 + 0x19) & 0x10)" (( "(") (binary_expression "*(byte *)(plVar1 + 0x19) & 0x10" (pointer_expression "*(byte *)(plVar1 + 0x19)" (* "*") (cast_expression "(byte *)(plVar1 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar1 + 0x19)" (( "(") (binary_expression "plVar1 + 0x19" (identifier "plVar1") (+ "+") (number_literal "0x19")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);\n      }" ({ "{") (expression_statement "(**(code **)(*plVar1 + 0x10))(plVar1,param_2);" (call_expression "(**(code **)(*plVar1 + 0x10))(plVar1,param_2)" (parenthesized_expression "(**(code **)(*plVar1 + 0x10))" (( "(") (pointer_expression "**(code **)(*plVar1 + 0x10)" (* "*") (pointer_expression "*(code **)(*plVar1 + 0x10)" (* "*") (cast_expression "(code **)(*plVar1 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar1 + 0x10)" (( "(") (binary_expression "*plVar1 + 0x10" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(plVar1,param_2)" (( "(") (identifier "plVar1") (, ",") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (expression_statement "plVar4 = plVar4 + 1;" (assignment_expression "plVar4 = plVar4 + 1" (identifier "plVar4") (= "=") (binary_expression "plVar4 + 1" (identifier "plVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(long **)(param_1 + 0x250) != plVar4)" (( "(") (binary_expression "*(long **)(param_1 + 0x250) != plVar4" (pointer_expression "*(long **)(param_1 + 0x250)" (* "*") (cast_expression "(long **)(param_1 + 0x250)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x250)" (( "(") (binary_expression "param_1 + 0x250" (identifier "param_1") (+ "+") (number_literal "0x250")) () ")")))) (!= "!=") (identifier "plVar4")) () ")")) (; ";")) (} "}"))) (expression_statement "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);" (call_expression "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2)" (parenthesized_expression "(**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))" (( "(") (pointer_expression "**(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" (* "*") (pointer_expression "*(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" (* "*") (cast_expression "(code **)(**(long **)(param_1 + 0x2a8) + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(**(long **)(param_1 + 0x2a8) + 0x10)" (( "(") (binary_expression "**(long **)(param_1 + 0x2a8) + 0x10" (pointer_expression "**(long **)(param_1 + 0x2a8)" (* "*") (pointer_expression "*(long **)(param_1 + 0x2a8)" (* "*") (cast_expression "(long **)(param_1 + 0x2a8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")"))))) (+ "+") (number_literal "0x10")) () ")"))))) () ")")) (argument_list "(*(long **)(param_1 + 0x2a8),param_2)" (( "(") (pointer_expression "*(long **)(param_1 + 0x2a8)" (* "*") (cast_expression "(long **)(param_1 + 0x2a8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2a8)" (( "(") (binary_expression "param_1 + 0x2a8" (identifier "param_1") (+ "+") (number_literal "0x2a8")) () ")")))) (, ",") (identifier "param_2") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void write_sections_after_input_sections(Layout * this, Output_file *
   of) */

void __thiscall var_4::type_1::function_1(type_1 *this,type_2 *of)

{
  type_3 *pOVar1;
  type_4 var_2;
  type_5 var_7;
  
  if (this->any_postprocessing_sections_ != false) {
    var_2 = var_1(this,this->output_file_size_,POSTPROCESSING_SECTIONS_PASS);
    var_2 = var_1(this,var_2,STRTAB_AFTER_POSTPROCESSING_SECTIONS_PASS);
    if (this->output_file_size_ < var_2) {
      Output_file::var_3(of,var_2);
      this->output_file_size_ = var_2;
    }
  }
  var_7 = (this->section_list_).
            super__Vector_base<var_4::type_3*,var_5::allocator<var_4::type_3*>var_6>.
            _M_impl._M_start;
  if (var_7 !=
      (this->section_list_).
      super__Vector_base<var_4::type_3*,var_5::allocator<var_4::type_3*>var_6>._M_impl.
      _M_finish) {
    do {
      pOVar1 = *var_7;
      if ((pOVar1->field_0xc8 & 0x10) != 0) {
        (*(pOVar1->super_Output_data)._vptr_Output_data[2])(pOVar1,of);
      }
      var_7 = var_7 + 1;
    } while ((this->section_list_).
             super__Vector_base<var_4::type_3*,var_5::allocator<var_4::type_3*>var_6>.
             _M_impl._M_finish != var_7);
  }
                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (*(this->section_headers_->super_Output_data)._vptr_Output_data[2])(this->section_headers_,of);
  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)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (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))))) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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))))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) 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: (identifier)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (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: (identifier)))))) (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))))) (identifier)))) (return_statement))))

void MASKED(long param_1,undefined8 param_2)

{
  long *plVar1;
  undefined8 uVar2;
  long lVar3;
  long *plVar4;
  
  if (*(char *)(param_1 + 0x36e) != '\0') {
    uVar2 = FUN_001b8e00(param_1,*(undefined8 *)(param_1 + 0x360),1);
    lVar3 = FUN_001b8e00(param_1,uVar2,2);
    if (*(long *)(param_1 + 0x360) < lVar3) {
      FUN_0020c7e0(param_2,lVar3);
      *(long *)(param_1 + 0x360) = lVar3;
    }
  }
  plVar4 = *(long **)(param_1 + 0x248);
  if (plVar4 != *(long **)(param_1 + 0x250)) {
    do {
      plVar1 = (long *)*plVar4;
      if ((*(byte *)(plVar1 + 0x19) & 0x10) != 0) {
        (**(code **)(*plVar1 + 0x10))(plVar1,param_2);
      }
      plVar4 = plVar4 + 1;
    } while (*(long **)(param_1 + 0x250) != plVar4);
  }
                    /* WARNING: Could not recover jumptable at 0x001b9fdf. Too many branches */
                    /* WARNING: Treating indirect jump as call */
  (**(code **)(**(long **)(param_1 + 0x2a8) + 0x10))(*(long **)(param_1 + 0x2a8),param_2);
  return;
}

