
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void run(Finish_group * this, Workqueue * param_1) */

void __thiscall gold::Finish_group::run(Finish_group *this,Workqueue *param_1)

{
  Archive *pAVar1;
  Incremental_inputs *this_00;
  Plugin_manager *this_01;
  pointer ppAVar2;
  pointer ppAVar3;
  size_t sVar4;
  bool bVar5;
  Archive *in_stack_ffffffc8;
  size_t local_2c;
  Input_group *local_24;
  
  local_24 = this->input_group_;
  local_2c = this->symtab_->saw_undefined_;
  ppAVar3 = (local_24->archives_).
            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_start;
  ppAVar2 = (local_24->archives_).
            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish;
  if (this->saw_undefined_ != local_2c) {
    do {
      sVar4 = local_2c;
      if (ppAVar3 != ppAVar2) {
        do {
          pAVar1 = *ppAVar3;
          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);
                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */
          Archive::add_symbols
                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);
          ppAVar2 = ppAVar3 + 1;
          in_stack_ffffffc8 = (Archive *)this;
          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);
          local_24 = this->input_group_;
          ppAVar3 = ppAVar2;
        } while (ppAVar2 !=
                 (local_24->archives_).
                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.
                 _M_finish);
        ppAVar3 = (local_24->archives_).
                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.
                  _M_start;
        sVar4 = this->symtab_->saw_undefined_;
      }
      bVar5 = local_2c != sVar4;
      local_2c = sVar4;
    } while (bVar5);
  }
  if (ppAVar3 != ppAVar2) {
    do {
      this_00 = this->layout_->incremental_inputs_;
      if (this_00 != (Incremental_inputs *)0x0) {
        in_stack_ffffffc8 = *ppAVar3;
        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);
        local_24 = this->input_group_;
      }
      ppAVar3 = ppAVar3 + 1;
    } while ((local_24->archives_).
             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish
             != ppAVar3);
  }
  if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  this_01 = parameters->options_->plugins_;
  if (this_01 == (Plugin_manager *)0x0) {
    Input_group::~Input_group(local_24,(int)in_stack_ffffffc8);
    operator_delete(local_24,0xc);
    return;
  }
  Plugin_manager::save_input_group(this_01,local_24);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void FUN_00142a90(int param_1)

{
  int *piVar1;
  int *piVar2;
  undefined **ppuVar3;
  int iVar4;
  bool bVar5;
  int local_2c;
  undefined **local_24;
  
  ppuVar3 = *(undefined ***)(param_1 + 0x34);
  local_2c = **(int **)(param_1 + 0x28);
  piVar2 = (int *)*ppuVar3;
  piVar1 = (int *)ppuVar3[1];
  local_24 = ppuVar3;
  if (*(int *)(param_1 + 0x38) != local_2c) {
    do {
      iVar4 = local_2c;
      if (piVar2 != piVar1) {
        do {
          iVar4 = *piVar2;
          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);
                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */
          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));
          piVar1 = piVar2 + 1;
          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);
          local_24 = *(undefined ***)(param_1 + 0x34);
          piVar2 = piVar1;
        } while (piVar1 != (int *)local_24[1]);
        piVar2 = (int *)*local_24;
        ppuVar3 = &__DT_PLTGOT;
        iVar4 = **(int **)(param_1 + 0x28);
      }
      bVar5 = local_2c != iVar4;
      local_2c = iVar4;
    } while (bVar5);
  }
  if (piVar2 != piVar1) {
    do {
      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);
      if (iVar4 != 0) {
        FUN_000721c0(iVar4,*piVar2);
        local_24 = *(undefined ***)(param_1 + 0x34);
        ppuVar3 = &__DT_PLTGOT;
      }
      piVar2 = piVar2 + 1;
    } while ((int *)local_24[1] != piVar2);
  }
  if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);
  }
  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);
  if (iVar4 == 0) {
    FUN_00142a40(local_24);
    FUN_001e6d90(local_24,0xc);
    return;
  }
  FUN_0013bd30(iVar4,local_24);
  return;
}


CALL 0x000559e6
ADD EAX,0x24c56b
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
MOV ESI,dword ptr [EBP + 0x8]
MOV dword ptr [EBP + -0x1c],EAX
MOV EAX,dword ptr [ESI + 0x28]
MOV EBX,dword ptr [ESI + 0x34]
MOV ECX,dword ptr [ESI + 0x38]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EBX]
MOV dword ptr [EBP + -0x20],EBX
MOV dword ptr [EBP + -0x28],EAX
MOV EAX,dword ptr [EBX + 0x4]
CMP ECX,dword ptr [EBP + -0x28]
JZ 0x00142b4f
LEA ESI,[ESI]
NOP
MOV EDI,EDX
CMP EDX,EAX
JZ 0x00142bc0
LEA ESI,[ESI]
MOV EAX,dword ptr [EDI]
SUB ESP,0x8
MOV EBX,dword ptr [EBP + -0x1c]
PUSH ESI
MOV ECX,dword ptr [EAX + 0x24]
MOV dword ptr [EBP + -0x20],EAX
LEA EAX,[ECX + 0x1c]
MOV dword ptr [EBP + -0x24],ECX
PUSH EAX
CALL 0x000669a0
POP EAX
MOV EBX,dword ptr [EBP + -0x1c]
PUSH dword ptr [ESI + 0x30]
PUSH dword ptr [ESI + 0x24]
PUSH dword ptr [ESI + 0x2c]
PUSH dword ptr [ESI + 0x28]
PUSH dword ptr [EDI]
CALL 0x00197510
MOV EAX,dword ptr [EBP + -0x20]
ADD ESP,0x18
MOV EBX,dword ptr [EBP + -0x1c]
ADD EDI,0x4
PUSH ESI
MOV EAX,dword ptr [EAX + 0x24]
ADD EAX,0x1c
PUSH EAX
CALL 0x000679d0
MOV EAX,dword ptr [ESI + 0x34]
ADD ESP,0x10
MOV EDX,EAX
MOV dword ptr [EBP + -0x20],EAX
MOV EAX,EDI
CMP EDI,dword ptr [EDX + 0x4]
JNZ 0x00142ae0
MOV ECX,dword ptr [ESI + 0x28]
MOV EDX,dword ptr [EDX]
MOV EDI,dword ptr [ECX]
MOV ECX,dword ptr [EBP + -0x28]
MOV dword ptr [EBP + -0x28],EDI
CMP ECX,dword ptr [EBP + -0x28]
JNZ 0x00142ad0
CMP EDX,EAX
JZ 0x00142b87
MOV EDI,EDX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0x2c]
MOV EAX,dword ptr [EAX + 0x1d0]
TEST EAX,EAX
JZ 0x00142b7c
SUB ESP,0x8
PUSH dword ptr [EDI]
MOV EBX,dword ptr [EBP + -0x1c]
PUSH EAX
CALL 0x000721c0
MOV EAX,dword ptr [ESI + 0x34]
ADD ESP,0x10
MOV dword ptr [EBP + -0x20],EAX
MOV EAX,dword ptr [EBP + -0x20]
ADD EDI,0x4
CMP dword ptr [EAX + 0x4],EDI
JNZ 0x00142b58
MOV EAX,dword ptr [EBP + -0x1c]
LEA EAX,[EAX + 0x378]
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x00142bec
MOV EAX,dword ptr [EAX + 0x593c]
TEST EAX,EAX
JZ 0x00142bc8
SUB ESP,0x8
PUSH dword ptr [EBP + -0x20]
MOV EBX,dword ptr [EBP + -0x1c]
PUSH EAX
CALL 0x0013bd30
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [EBP + -0x28]
JMP 0x00142b44
MOV EBX,dword ptr [EBP + -0x20]
SUB ESP,0xc
PUSH EBX
CALL 0x00142a40
POP EDX
POP ECX
PUSH 0xc
PUSH EBX
MOV EBX,dword ptr [EBP + -0x1c]
CALL 0x001e6d90
ADD ESP,0x10
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
PUSH EBX
MOV EBX,dword ptr [EBP + -0x1c]
LEA EAX,[EBX + 0xfff06fa4]
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_00142a90(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}\n\n" comment (function_definition "void FUN_00142a90(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}" primitive_type (function_declarator "FUN_00142a90(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined **local_24;" type_identifier (pointer_declarator "**local_24" * (pointer_declarator "*local_24" * identifier)) ;) (expression_statement "ppuVar3 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "ppuVar3 = *(undefined ***)(param_1 + 0x34)" identifier = (pointer_expression "*(undefined ***)(param_1 + 0x34)" * (cast_expression "(undefined ***)(param_1 + 0x34)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_2c = **(int **)(param_1 + 0x28);" (assignment_expression "local_2c = **(int **)(param_1 + 0x28)" identifier = (pointer_expression "**(int **)(param_1 + 0x28)" * (pointer_expression "*(int **)(param_1 + 0x28)" * (cast_expression "(int **)(param_1 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "piVar2 = (int *)*ppuVar3;" (assignment_expression "piVar2 = (int *)*ppuVar3" identifier = (cast_expression "(int *)*ppuVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppuVar3" * identifier))) ;) (expression_statement "piVar1 = (int *)ppuVar3[1];" (assignment_expression "piVar1 = (int *)ppuVar3[1]" identifier = (cast_expression "(int *)ppuVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppuVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "local_24 = ppuVar3;" (assignment_expression "local_24 = ppuVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x38) != local_2c)" ( (binary_expression "*(int *)(param_1 + 0x38) != local_2c" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }" { (do_statement "do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);" do (compound_statement "{\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    }" { (expression_statement "iVar4 = local_2c;" (assignment_expression "iVar4 = local_2c" identifier = identifier) ;) (if_statement "if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }" if (parenthesized_expression "(piVar2 != piVar1)" ( (binary_expression "piVar2 != piVar1" identifier != identifier) )) (compound_statement "{\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }" { (do_statement "do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);" do (compound_statement "{\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        }" { (expression_statement "iVar4 = *piVar2;" (assignment_expression "iVar4 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);" (call_expression "FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" identifier (argument_list "(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" ( (binary_expression "*(int *)(iVar4 + 0x24) + 0x1c" (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) + number_literal) , identifier ))) ;) comment (expression_statement "FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));" (call_expression "FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30))" identifier (argument_list "(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30))" ( (pointer_expression "*piVar2" * identifier) , (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) (expression_statement "piVar1 = piVar2 + 1;" (assignment_expression "piVar1 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);" (call_expression "FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" identifier (argument_list "(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" ( (binary_expression "*(int *)(iVar4 + 0x24) + 0x1c" (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "local_24 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "local_24 = *(undefined ***)(param_1 + 0x34)" identifier = (pointer_expression "*(undefined ***)(param_1 + 0x34)" * (cast_expression "(undefined ***)(param_1 + 0x34)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" identifier = identifier) ;) }) while (parenthesized_expression "(piVar1 != (int *)local_24[1])" ( (binary_expression "piVar1 != (int *)local_24[1]" identifier != (cast_expression "(int *)local_24[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_24[1]" identifier [ number_literal ]))) )) ;) (expression_statement "piVar2 = (int *)*local_24;" (assignment_expression "piVar2 = (int *)*local_24" identifier = (cast_expression "(int *)*local_24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_24" * identifier))) ;) (expression_statement "ppuVar3 = &__DT_PLTGOT;" (assignment_expression "ppuVar3 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "iVar4 = **(int **)(param_1 + 0x28);" (assignment_expression "iVar4 = **(int **)(param_1 + 0x28)" identifier = (pointer_expression "**(int **)(param_1 + 0x28)" * (pointer_expression "*(int **)(param_1 + 0x28)" * (cast_expression "(int **)(param_1 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))))) ;) })) (expression_statement "bVar5 = local_2c != iVar4;" (assignment_expression "bVar5 = local_2c != iVar4" identifier = (binary_expression "local_2c != iVar4" identifier != identifier)) ;) (expression_statement "local_2c = iVar4;" (assignment_expression "local_2c = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) })) (if_statement "if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }" if (parenthesized_expression "(piVar2 != piVar1)" ( (binary_expression "piVar2 != piVar1" identifier != identifier) )) (compound_statement "{\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }" { (do_statement "do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);" do (compound_statement "{\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    }" { (expression_statement "iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);" (assignment_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2c) + 0x1d0)" ( (binary_expression "*(int *)(param_1 + 0x2c) + 0x1d0" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }" { (expression_statement "FUN_000721c0(iVar4,*piVar2);" (call_expression "FUN_000721c0(iVar4,*piVar2)" identifier (argument_list "(iVar4,*piVar2)" ( identifier , (pointer_expression "*piVar2" * identifier) ))) ;) (expression_statement "local_24 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "local_24 = *(undefined ***)(param_1 + 0x34)" identifier = (pointer_expression "*(undefined ***)(param_1 + 0x34)" * (cast_expression "(undefined ***)(param_1 + 0x34)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "ppuVar3 = &__DT_PLTGOT;" (assignment_expression "ppuVar3 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) })) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)local_24[1] != piVar2)" ( (binary_expression "(int *)local_24[1] != piVar2" (cast_expression "(int *)local_24[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_24[1]" identifier [ number_literal ])) != identifier) )) ;) })) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }" { comment (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",ppuVar3)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);" (assignment_expression "iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" * (cast_expression "(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }" { (expression_statement "FUN_00142a40(local_24);" (call_expression "FUN_00142a40(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (expression_statement "FUN_001e6d90(local_24,0xc);" (call_expression "FUN_001e6d90(local_24,0xc)" identifier (argument_list "(local_24,0xc)" ( identifier , number_literal ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0013bd30(iVar4,local_24);" (call_expression "FUN_0013bd30(iVar4,local_24)" identifier (argument_list "(iVar4,local_24)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void run(Finish_group * this, Workqueue * param_1) */\n\nvoid __thiscall gold::Finish_group::run(Finish_group *this,Workqueue *param_1)\n\n{\n  Archive *pAVar1;\n  Incremental_inputs *this_00;\n  Plugin_manager *this_01;\n  pointer ppAVar2;\n  pointer ppAVar3;\n  size_t sVar4;\n  bool bVar5;\n  Archive *in_stack_ffffffc8;\n  size_t local_2c;\n  Input_group *local_24;\n  \n  local_24 = this->input_group_;\n  local_2c = this->symtab_->saw_undefined_;\n  ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_start;\n  ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish;\n  if (this->saw_undefined_ != local_2c) {\n    do {\n      sVar4 = local_2c;\n      if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }\n      bVar5 = local_2c != sVar4;\n      local_2c = sVar4;\n    } while (bVar5);\n  }\n  if (ppAVar3 != ppAVar2) {\n    do {\n      this_00 = this->layout_->incremental_inputs_;\n      if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }\n      ppAVar3 = ppAVar3 + 1;\n    } while ((local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3);\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  this_01 = parameters->options_->plugins_;\n  if (this_01 == (Plugin_manager *)0x0) {\n    Input_group::~Input_group(local_24,(int)in_stack_ffffffc8);\n    operator_delete(local_24,0xc);\n    return;\n  }\n  Plugin_manager::save_input_group(this_01,local_24);\n  return;\n}\n\n" comment comment comment (function_definition "void __thiscall gold::Finish_group::run(Finish_group *this,Workqueue *param_1)\n\n{\n  Archive *pAVar1;\n  Incremental_inputs *this_00;\n  Plugin_manager *this_01;\n  pointer ppAVar2;\n  pointer ppAVar3;\n  size_t sVar4;\n  bool bVar5;\n  Archive *in_stack_ffffffc8;\n  size_t local_2c;\n  Input_group *local_24;\n  \n  local_24 = this->input_group_;\n  local_2c = this->symtab_->saw_undefined_;\n  ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_start;\n  ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish;\n  if (this->saw_undefined_ != local_2c) {\n    do {\n      sVar4 = local_2c;\n      if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }\n      bVar5 = local_2c != sVar4;\n      local_2c = sVar4;\n    } while (bVar5);\n  }\n  if (ppAVar3 != ppAVar2) {\n    do {\n      this_00 = this->layout_->incremental_inputs_;\n      if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }\n      ppAVar3 = ppAVar3 + 1;\n    } while ((local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3);\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  this_01 = parameters->options_->plugins_;\n  if (this_01 == (Plugin_manager *)0x0) {\n    Input_group::~Input_group(local_24,(int)in_stack_ffffffc8);\n    operator_delete(local_24,0xc);\n    return;\n  }\n  Plugin_manager::save_input_group(this_01,local_24);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Finish_group::" identifier : : identifier : :) (function_declarator "run(Finish_group *this,Workqueue *param_1)" identifier (parameter_list "(Finish_group *this,Workqueue *param_1)" ( (parameter_declaration "Finish_group *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Workqueue *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  Archive *pAVar1;\n  Incremental_inputs *this_00;\n  Plugin_manager *this_01;\n  pointer ppAVar2;\n  pointer ppAVar3;\n  size_t sVar4;\n  bool bVar5;\n  Archive *in_stack_ffffffc8;\n  size_t local_2c;\n  Input_group *local_24;\n  \n  local_24 = this->input_group_;\n  local_2c = this->symtab_->saw_undefined_;\n  ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_start;\n  ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish;\n  if (this->saw_undefined_ != local_2c) {\n    do {\n      sVar4 = local_2c;\n      if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }\n      bVar5 = local_2c != sVar4;\n      local_2c = sVar4;\n    } while (bVar5);\n  }\n  if (ppAVar3 != ppAVar2) {\n    do {\n      this_00 = this->layout_->incremental_inputs_;\n      if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }\n      ppAVar3 = ppAVar3 + 1;\n    } while ((local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3);\n  }\n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  this_01 = parameters->options_->plugins_;\n  if (this_01 == (Plugin_manager *)0x0) {\n    Input_group::~Input_group(local_24,(int)in_stack_ffffffc8);\n    operator_delete(local_24,0xc);\n    return;\n  }\n  Plugin_manager::save_input_group(this_01,local_24);\n  return;\n}" { (declaration "Archive *pAVar1;" type_identifier (pointer_declarator "*pAVar1" * identifier) ;) (declaration "Incremental_inputs *this_00;" type_identifier (pointer_declarator "*this_00" * identifier) ;) (declaration "Plugin_manager *this_01;" type_identifier (pointer_declarator "*this_01" * identifier) ;) (declaration "pointer ppAVar2;" type_identifier identifier ;) (declaration "pointer ppAVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "Archive *in_stack_ffffffc8;" type_identifier (pointer_declarator "*in_stack_ffffffc8" * identifier) ;) (declaration "size_t local_2c;" primitive_type identifier ;) (declaration "Input_group *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (expression_statement "local_24 = this->input_group_;" (assignment_expression "local_24 = this->input_group_" identifier = (field_expression "this->input_group_" identifier -> field_identifier)) ;) (expression_statement "local_2c = this->symtab_->saw_undefined_;" (assignment_expression "local_2c = this->symtab_->saw_undefined_" identifier = (field_expression "this->symtab_->saw_undefined_" (field_expression "this->symtab_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_start;" (field_expression "ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_start" (field_expression "ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl" (binary_expression "ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_" (binary_expression "ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold" (binary_expression "ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std" (assignment_expression "ppAVar3 = (local_24->archives_).\n            super__Vector_base<gold" identifier = (binary_expression "(local_24->archives_).\n            super__Vector_base<gold" (field_expression "(local_24->archives_).\n            super__Vector_base" (parenthesized_expression "(local_24->archives_)" ( (field_expression "local_24->archives_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Archive" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish;" (field_expression "ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish" (field_expression "ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl" (binary_expression "ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_" (binary_expression "ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std::allocator<gold" (binary_expression "ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold::Archive*,_std" (assignment_expression "ppAVar2 = (local_24->archives_).\n            super__Vector_base<gold" identifier = (binary_expression "(local_24->archives_).\n            super__Vector_base<gold" (field_expression "(local_24->archives_).\n            super__Vector_base" (parenthesized_expression "(local_24->archives_)" ( (field_expression "local_24->archives_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Archive" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (this->saw_undefined_ != local_2c) {\n    do {\n      sVar4 = local_2c;\n      if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }\n      bVar5 = local_2c != sVar4;\n      local_2c = sVar4;\n    } while (bVar5);\n  }" if (parenthesized_expression "(this->saw_undefined_ != local_2c)" ( (binary_expression "this->saw_undefined_ != local_2c" (field_expression "this->saw_undefined_" identifier -> field_identifier) != identifier) )) (compound_statement "{\n    do {\n      sVar4 = local_2c;\n      if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }\n      bVar5 = local_2c != sVar4;\n      local_2c = sVar4;\n    } while (bVar5);\n  }" { (do_statement "do {\n      sVar4 = local_2c;\n      if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }\n      bVar5 = local_2c != sVar4;\n      local_2c = sVar4;\n    } while (bVar5);" do (compound_statement "{\n      sVar4 = local_2c;\n      if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }\n      bVar5 = local_2c != sVar4;\n      local_2c = sVar4;\n    }" { (expression_statement "sVar4 = local_2c;" (assignment_expression "sVar4 = local_2c" identifier = identifier) ;) (if_statement "if (ppAVar3 != ppAVar2) {\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }" if (parenthesized_expression "(ppAVar3 != ppAVar2)" ( (binary_expression "ppAVar3 != ppAVar2" identifier != identifier) )) (compound_statement "{\n        do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);\n        ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;\n        sVar4 = this->symtab_->saw_undefined_;\n      }" { (do_statement "do {\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        } while (ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish);" do (compound_statement "{\n          pAVar1 = *ppAVar3;\n          File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);\n                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */\n          Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);\n          ppAVar2 = ppAVar3 + 1;\n          in_stack_ffffffc8 = (Archive *)this;\n          File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);\n          local_24 = this->input_group_;\n          ppAVar3 = ppAVar2;\n        }" { (expression_statement "pAVar1 = *ppAVar3;" (assignment_expression "pAVar1 = *ppAVar3" identifier = (pointer_expression "*ppAVar3" * identifier)) ;) (labeled_statement "File_read::lock(&pAVar1->input_file_->file_,&this->super_Task);" statement_identifier : (ERROR ":" :) (expression_statement "lock(&pAVar1->input_file_->file_,&this->super_Task);" (call_expression "lock(&pAVar1->input_file_->file_,&this->super_Task)" identifier (argument_list "(&pAVar1->input_file_->file_,&this->super_Task)" ( (pointer_expression "&pAVar1->input_file_->file_" & (field_expression "pAVar1->input_file_->file_" (field_expression "pAVar1->input_file_" identifier -> field_identifier) -> field_identifier)) , (pointer_expression "&this->super_Task" & (field_expression "this->super_Task" identifier -> field_identifier)) ))) ;)) comment (labeled_statement "Archive::add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);" statement_identifier : (ERROR ":" :) (expression_statement "add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);" (call_expression "add_symbols\n                    (*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_)" identifier (argument_list "(*ppAVar3,this->symtab_,this->layout_,this->input_objects_,this->mapfile_)" ( (pointer_expression "*ppAVar3" * identifier) , (field_expression "this->symtab_" identifier -> field_identifier) , (field_expression "this->layout_" identifier -> field_identifier) , (field_expression "this->input_objects_" identifier -> field_identifier) , (field_expression "this->mapfile_" identifier -> field_identifier) ))) ;)) (expression_statement "ppAVar2 = ppAVar3 + 1;" (assignment_expression "ppAVar2 = ppAVar3 + 1" identifier = (binary_expression "ppAVar3 + 1" identifier + number_literal)) ;) (expression_statement "in_stack_ffffffc8 = (Archive *)this;" (assignment_expression "in_stack_ffffffc8 = (Archive *)this" identifier = (cast_expression "(Archive *)this" ( (type_descriptor "Archive *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "File_read::unlock(&pAVar1->input_file_->file_,&this->super_Task);" statement_identifier : (ERROR ":" :) (expression_statement "unlock(&pAVar1->input_file_->file_,&this->super_Task);" (call_expression "unlock(&pAVar1->input_file_->file_,&this->super_Task)" identifier (argument_list "(&pAVar1->input_file_->file_,&this->super_Task)" ( (pointer_expression "&pAVar1->input_file_->file_" & (field_expression "pAVar1->input_file_->file_" (field_expression "pAVar1->input_file_" identifier -> field_identifier) -> field_identifier)) , (pointer_expression "&this->super_Task" & (field_expression "this->super_Task" identifier -> field_identifier)) ))) ;)) (expression_statement "local_24 = this->input_group_;" (assignment_expression "local_24 = this->input_group_" identifier = (field_expression "this->input_group_" identifier -> field_identifier)) ;) (expression_statement "ppAVar3 = ppAVar2;" (assignment_expression "ppAVar3 = ppAVar2" identifier = identifier) ;) }) while (parenthesized_expression "(ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish)" ( (field_expression "ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                 _M_finish" (field_expression "ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl" (binary_expression "ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_" (binary_expression "ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std::allocator<gold" (binary_expression "ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold::Archive*,_std" (binary_expression "ppAVar2 !=\n                 (local_24->archives_).\n                 super__Vector_base<gold" identifier != (binary_expression "(local_24->archives_).\n                 super__Vector_base<gold" (field_expression "(local_24->archives_).\n                 super__Vector_base" (parenthesized_expression "(local_24->archives_)" ( (field_expression "local_24->archives_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Archive" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) ;) (expression_statement "ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start;" (field_expression "ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl.\n                  _M_start" (field_expression "ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl" (binary_expression "ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_" (binary_expression "ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std::allocator<gold" (binary_expression "ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold::Archive*,_std" (assignment_expression "ppAVar3 = (local_24->archives_).\n                  super__Vector_base<gold" identifier = (binary_expression "(local_24->archives_).\n                  super__Vector_base<gold" (field_expression "(local_24->archives_).\n                  super__Vector_base" (parenthesized_expression "(local_24->archives_)" ( (field_expression "local_24->archives_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Archive" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Archive" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (expression_statement "sVar4 = this->symtab_->saw_undefined_;" (assignment_expression "sVar4 = this->symtab_->saw_undefined_" identifier = (field_expression "this->symtab_->saw_undefined_" (field_expression "this->symtab_" identifier -> field_identifier) -> field_identifier)) ;) })) (expression_statement "bVar5 = local_2c != sVar4;" (assignment_expression "bVar5 = local_2c != sVar4" identifier = (binary_expression "local_2c != sVar4" identifier != identifier)) ;) (expression_statement "local_2c = sVar4;" (assignment_expression "local_2c = sVar4" identifier = identifier) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) })) (if_statement "if (ppAVar3 != ppAVar2) {\n    do {\n      this_00 = this->layout_->incremental_inputs_;\n      if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }\n      ppAVar3 = ppAVar3 + 1;\n    } while ((local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3);\n  }" if (parenthesized_expression "(ppAVar3 != ppAVar2)" ( (binary_expression "ppAVar3 != ppAVar2" identifier != identifier) )) (compound_statement "{\n    do {\n      this_00 = this->layout_->incremental_inputs_;\n      if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }\n      ppAVar3 = ppAVar3 + 1;\n    } while ((local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3);\n  }" { (do_statement "do {\n      this_00 = this->layout_->incremental_inputs_;\n      if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }\n      ppAVar3 = ppAVar3 + 1;\n    } while ((local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3);" do (compound_statement "{\n      this_00 = this->layout_->incremental_inputs_;\n      if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }\n      ppAVar3 = ppAVar3 + 1;\n    }" { (expression_statement "this_00 = this->layout_->incremental_inputs_;" (assignment_expression "this_00 = this->layout_->incremental_inputs_" identifier = (field_expression "this->layout_->incremental_inputs_" (field_expression "this->layout_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (this_00 != (Incremental_inputs *)0x0) {\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }" if (parenthesized_expression "(this_00 != (Incremental_inputs *)0x0)" ( (binary_expression "this_00 != (Incremental_inputs *)0x0" identifier != (cast_expression "(Incremental_inputs *)0x0" ( (type_descriptor "Incremental_inputs *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        in_stack_ffffffc8 = *ppAVar3;\n        Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);\n        local_24 = this->input_group_;\n      }" { (expression_statement "in_stack_ffffffc8 = *ppAVar3;" (assignment_expression "in_stack_ffffffc8 = *ppAVar3" identifier = (pointer_expression "*ppAVar3" * identifier)) ;) (labeled_statement "Incremental_inputs::report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);" statement_identifier : (ERROR ":" :) (expression_statement "report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base);" (call_expression "report_archive_end(this_00,&in_stack_ffffffc8->super_Library_base)" identifier (argument_list "(this_00,&in_stack_ffffffc8->super_Library_base)" ( identifier , (pointer_expression "&in_stack_ffffffc8->super_Library_base" & (field_expression "in_stack_ffffffc8->super_Library_base" identifier -> field_identifier)) ))) ;)) (expression_statement "local_24 = this->input_group_;" (assignment_expression "local_24 = this->input_group_" identifier = (field_expression "this->input_group_" identifier -> field_identifier)) ;) })) (expression_statement "ppAVar3 = ppAVar3 + 1;" (assignment_expression "ppAVar3 = ppAVar3 + 1" identifier = (binary_expression "ppAVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3)" ( (binary_expression "(local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish\n             != ppAVar3" (field_expression "(local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl._M_finish" (field_expression "(local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_>._M_impl" (binary_expression "(local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold::Archive*>_" (binary_expression "(local_24->archives_).\n             super__Vector_base<gold::Archive*,_std::allocator<gold" (binary_expression "(local_24->archives_).\n             super__Vector_base<gold::Archive*,_std" (binary_expression "(local_24->archives_).\n             super__Vector_base<gold" (field_expression "(local_24->archives_).\n             super__Vector_base" (parenthesized_expression "(local_24->archives_)" ( (field_expression "local_24->archives_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Archive" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Archive" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != identifier) )) ;) })) (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 "this_01 = parameters->options_->plugins_;" (assignment_expression "this_01 = parameters->options_->plugins_" identifier = (field_expression "parameters->options_->plugins_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (this_01 == (Plugin_manager *)0x0) {\n    Input_group::~Input_group(local_24,(int)in_stack_ffffffc8);\n    operator_delete(local_24,0xc);\n    return;\n  }" if (parenthesized_expression "(this_01 == (Plugin_manager *)0x0)" ( (binary_expression "this_01 == (Plugin_manager *)0x0" identifier == (cast_expression "(Plugin_manager *)0x0" ( (type_descriptor "Plugin_manager *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Input_group::~Input_group(local_24,(int)in_stack_ffffffc8);\n    operator_delete(local_24,0xc);\n    return;\n  }" { (labeled_statement "Input_group::~Input_group(local_24,(int)in_stack_ffffffc8);" statement_identifier : (ERROR ":" :) (expression_statement "~Input_group(local_24,(int)in_stack_ffffffc8);" (unary_expression "~Input_group(local_24,(int)in_stack_ffffffc8)" ~ (call_expression "Input_group(local_24,(int)in_stack_ffffffc8)" identifier (argument_list "(local_24,(int)in_stack_ffffffc8)" ( identifier , (cast_expression "(int)in_stack_ffffffc8" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;)) (expression_statement "operator_delete(local_24,0xc);" (call_expression "operator_delete(local_24,0xc)" identifier (argument_list "(local_24,0xc)" ( identifier , number_literal ))) ;) (return_statement "return;" return ;) })) (labeled_statement "Plugin_manager::save_input_group(this_01,local_24);" statement_identifier : (ERROR ":" :) (expression_statement "save_input_group(this_01,local_24);" (call_expression "save_input_group(this_01,local_24)" identifier (argument_list "(this_01,local_24)" ( identifier , identifier ))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00142a90(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}\n\n" (function_definition "void FUN_00142a90(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}" primitive_type (function_declarator "FUN_00142a90(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "undefined **ppuVar3;" type_identifier (pointer_declarator "**ppuVar3" * (pointer_declarator "*ppuVar3" * identifier)) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "bool bVar5;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "undefined **local_24;" type_identifier (pointer_declarator "**local_24" * (pointer_declarator "*local_24" * identifier)) ;) (expression_statement "ppuVar3 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "ppuVar3 = *(undefined ***)(param_1 + 0x34)" identifier = (pointer_expression "*(undefined ***)(param_1 + 0x34)" * (cast_expression "(undefined ***)(param_1 + 0x34)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "local_2c = **(int **)(param_1 + 0x28);" (assignment_expression "local_2c = **(int **)(param_1 + 0x28)" identifier = (pointer_expression "**(int **)(param_1 + 0x28)" * (pointer_expression "*(int **)(param_1 + 0x28)" * (cast_expression "(int **)(param_1 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))))) ;) (expression_statement "piVar2 = (int *)*ppuVar3;" (assignment_expression "piVar2 = (int *)*ppuVar3" identifier = (cast_expression "(int *)*ppuVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppuVar3" * identifier))) ;) (expression_statement "piVar1 = (int *)ppuVar3[1];" (assignment_expression "piVar1 = (int *)ppuVar3[1]" identifier = (cast_expression "(int *)ppuVar3[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppuVar3[1]" identifier [ number_literal ]))) ;) (expression_statement "local_24 = ppuVar3;" (assignment_expression "local_24 = ppuVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x38) != local_2c)" ( (binary_expression "*(int *)(param_1 + 0x38) != local_2c" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }" { (do_statement "do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);" do (compound_statement "{\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    }" { (expression_statement "iVar4 = local_2c;" (assignment_expression "iVar4 = local_2c" identifier = identifier) ;) (if_statement "if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }" if (parenthesized_expression "(piVar2 != piVar1)" ( (binary_expression "piVar2 != piVar1" identifier != identifier) )) (compound_statement "{\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }" { (do_statement "do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);" do (compound_statement "{\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        }" { (expression_statement "iVar4 = *piVar2;" (assignment_expression "iVar4 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);" (call_expression "FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" identifier (argument_list "(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" ( (binary_expression "*(int *)(iVar4 + 0x24) + 0x1c" (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));" (call_expression "FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30))" identifier (argument_list "(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30))" ( (pointer_expression "*piVar2" * identifier) , (pointer_expression "*(undefined4 *)(param_1 + 0x28)" * (cast_expression "(undefined4 *)(param_1 + 0x28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" * (cast_expression "(undefined4 *)(param_1 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) ))) ;) (expression_statement "piVar1 = piVar2 + 1;" (assignment_expression "piVar1 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);" (call_expression "FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" identifier (argument_list "(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" ( (binary_expression "*(int *)(iVar4 + 0x24) + 0x1c" (pointer_expression "*(int *)(iVar4 + 0x24)" * (cast_expression "(int *)(iVar4 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x24)" ( (binary_expression "iVar4 + 0x24" identifier + number_literal) )))) + number_literal) , identifier ))) ;) (expression_statement "local_24 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "local_24 = *(undefined ***)(param_1 + 0x34)" identifier = (pointer_expression "*(undefined ***)(param_1 + 0x34)" * (cast_expression "(undefined ***)(param_1 + 0x34)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" identifier = identifier) ;) }) while (parenthesized_expression "(piVar1 != (int *)local_24[1])" ( (binary_expression "piVar1 != (int *)local_24[1]" identifier != (cast_expression "(int *)local_24[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_24[1]" identifier [ number_literal ]))) )) ;) (expression_statement "piVar2 = (int *)*local_24;" (assignment_expression "piVar2 = (int *)*local_24" identifier = (cast_expression "(int *)*local_24" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_24" * identifier))) ;) (expression_statement "ppuVar3 = &__DT_PLTGOT;" (assignment_expression "ppuVar3 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) (expression_statement "iVar4 = **(int **)(param_1 + 0x28);" (assignment_expression "iVar4 = **(int **)(param_1 + 0x28)" identifier = (pointer_expression "**(int **)(param_1 + 0x28)" * (pointer_expression "*(int **)(param_1 + 0x28)" * (cast_expression "(int **)(param_1 + 0x28)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))))) ;) })) (expression_statement "bVar5 = local_2c != iVar4;" (assignment_expression "bVar5 = local_2c != iVar4" identifier = (binary_expression "local_2c != iVar4" identifier != identifier)) ;) (expression_statement "local_2c = iVar4;" (assignment_expression "local_2c = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(bVar5)" ( identifier )) ;) })) (if_statement "if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }" if (parenthesized_expression "(piVar2 != piVar1)" ( (binary_expression "piVar2 != piVar1" identifier != identifier) )) (compound_statement "{\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }" { (do_statement "do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);" do (compound_statement "{\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    }" { (expression_statement "iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);" (assignment_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" identifier = (pointer_expression "*(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" * (cast_expression "(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x2c) + 0x1d0)" ( (binary_expression "*(int *)(param_1 + 0x2c) + 0x1d0" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }" { (expression_statement "FUN_000721c0(iVar4,*piVar2);" (call_expression "FUN_000721c0(iVar4,*piVar2)" identifier (argument_list "(iVar4,*piVar2)" ( identifier , (pointer_expression "*piVar2" * identifier) ))) ;) (expression_statement "local_24 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "local_24 = *(undefined ***)(param_1 + 0x34)" identifier = (pointer_expression "*(undefined ***)(param_1 + 0x34)" * (cast_expression "(undefined ***)(param_1 + 0x34)" ( (type_descriptor "undefined ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x34)" ( (binary_expression "param_1 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "ppuVar3 = &__DT_PLTGOT;" (assignment_expression "ppuVar3 = &__DT_PLTGOT" identifier = (pointer_expression "&__DT_PLTGOT" & identifier)) ;) })) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" identifier = (binary_expression "piVar2 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int *)local_24[1] != piVar2)" ( (binary_expression "(int *)local_24[1] != piVar2" (cast_expression "(int *)local_24[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_24[1]" identifier [ number_literal ])) != identifier) )) ;) })) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }" { (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",ppuVar3)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);" (assignment_expression "iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" identifier = (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" * (cast_expression "(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x593c)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }" { (expression_statement "FUN_00142a40(local_24);" (call_expression "FUN_00142a40(local_24)" identifier (argument_list "(local_24)" ( identifier ))) ;) (expression_statement "FUN_001e6d90(local_24,0xc);" (call_expression "FUN_001e6d90(local_24,0xc)" identifier (argument_list "(local_24,0xc)" ( identifier , number_literal ))) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0013bd30(iVar4,local_24);" (call_expression "FUN_0013bd30(iVar4,local_24)" identifier (argument_list "(iVar4,local_24)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * 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) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT != IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( IDENT )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (do_statement do (compound_statement { (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 ") , IDENT ))) ;) })) (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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00142a90(int param_1)\n\n{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00142a90(int param_1)" (identifier "FUN_00142a90") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int *piVar2;\n  undefined **ppuVar3;\n  int iVar4;\n  bool bVar5;\n  int local_2c;\n  undefined **local_24;\n  \n  ppuVar3 = *(undefined ***)(param_1 + 0x34);\n  local_2c = **(int **)(param_1 + 0x28);\n  piVar2 = (int *)*ppuVar3;\n  piVar1 = (int *)ppuVar3[1];\n  local_24 = ppuVar3;\n  if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }\n  if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }\n  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);\n  if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }\n  FUN_0013bd30(iVar4,local_24);\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "undefined **ppuVar3;" (type_identifier "undefined") (pointer_declarator "**ppuVar3" (* "*") (pointer_declarator "*ppuVar3" (* "*") (identifier "ppuVar3"))) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "bool bVar5;" (primitive_type "bool") (identifier "bVar5") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "undefined **local_24;" (type_identifier "undefined") (pointer_declarator "**local_24" (* "*") (pointer_declarator "*local_24" (* "*") (identifier "local_24"))) (; ";")) (expression_statement "ppuVar3 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "ppuVar3 = *(undefined ***)(param_1 + 0x34)" (identifier "ppuVar3") (= "=") (pointer_expression "*(undefined ***)(param_1 + 0x34)" (* "*") (cast_expression "(undefined ***)(param_1 + 0x34)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "local_2c = **(int **)(param_1 + 0x28);" (assignment_expression "local_2c = **(int **)(param_1 + 0x28)" (identifier "local_2c") (= "=") (pointer_expression "**(int **)(param_1 + 0x28)" (* "*") (pointer_expression "*(int **)(param_1 + 0x28)" (* "*") (cast_expression "(int **)(param_1 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (expression_statement "piVar2 = (int *)*ppuVar3;" (assignment_expression "piVar2 = (int *)*ppuVar3" (identifier "piVar2") (= "=") (cast_expression "(int *)*ppuVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*ppuVar3" (* "*") (identifier "ppuVar3")))) (; ";")) (expression_statement "piVar1 = (int *)ppuVar3[1];" (assignment_expression "piVar1 = (int *)ppuVar3[1]" (identifier "piVar1") (= "=") (cast_expression "(int *)ppuVar3[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "ppuVar3[1]" (identifier "ppuVar3") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_24 = ppuVar3;" (assignment_expression "local_24 = ppuVar3" (identifier "local_24") (= "=") (identifier "ppuVar3")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x38) != local_2c) {\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x38) != local_2c)" (( "(") (binary_expression "*(int *)(param_1 + 0x38) != local_2c" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (!= "!=") (identifier "local_2c")) () ")")) (compound_statement "{\n    do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);\n  }" ({ "{") (do_statement "do {\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    } while (bVar5);" (do "do") (compound_statement "{\n      iVar4 = local_2c;\n      if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }\n      bVar5 = local_2c != iVar4;\n      local_2c = iVar4;\n    }" ({ "{") (expression_statement "iVar4 = local_2c;" (assignment_expression "iVar4 = local_2c" (identifier "iVar4") (= "=") (identifier "local_2c")) (; ";")) (if_statement "if (piVar2 != piVar1) {\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }" (if "if") (parenthesized_expression "(piVar2 != piVar1)" (( "(") (binary_expression "piVar2 != piVar1" (identifier "piVar2") (!= "!=") (identifier "piVar1")) () ")")) (compound_statement "{\n        do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);\n        piVar2 = (int *)*local_24;\n        ppuVar3 = &__DT_PLTGOT;\n        iVar4 = **(int **)(param_1 + 0x28);\n      }" ({ "{") (do_statement "do {\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        } while (piVar1 != (int *)local_24[1]);" (do "do") (compound_statement "{\n          iVar4 = *piVar2;\n          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n                    \n          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));\n          piVar1 = piVar2 + 1;\n          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);\n          local_24 = *(undefined ***)(param_1 + 0x34);\n          piVar2 = piVar1;\n        }" ({ "{") (expression_statement "iVar4 = *piVar2;" (assignment_expression "iVar4 = *piVar2" (identifier "iVar4") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);" (call_expression "FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" (identifier "FUN_000669a0") (argument_list "(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" (( "(") (binary_expression "*(int *)(iVar4 + 0x24) + 0x1c" (pointer_expression "*(int *)(iVar4 + 0x24)" (* "*") (cast_expression "(int *)(iVar4 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x24)" (( "(") (binary_expression "iVar4 + 0x24" (identifier "iVar4") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x1c")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));" (call_expression "FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30))" (identifier "FUN_00197510") (argument_list "(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),\n                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30))" (( "(") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x28)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) () ")"))) (; ";")) (expression_statement "piVar1 = piVar2 + 1;" (assignment_expression "piVar1 = piVar2 + 1" (identifier "piVar1") (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);" (call_expression "FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" (identifier "FUN_000679d0") (argument_list "(*(int *)(iVar4 + 0x24) + 0x1c,param_1)" (( "(") (binary_expression "*(int *)(iVar4 + 0x24) + 0x1c" (pointer_expression "*(int *)(iVar4 + 0x24)" (* "*") (cast_expression "(int *)(iVar4 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x24)" (( "(") (binary_expression "iVar4 + 0x24" (identifier "iVar4") (+ "+") (number_literal "0x24")) () ")")))) (+ "+") (number_literal "0x1c")) (, ",") (identifier "param_1") () ")"))) (; ";")) (expression_statement "local_24 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "local_24 = *(undefined ***)(param_1 + 0x34)" (identifier "local_24") (= "=") (pointer_expression "*(undefined ***)(param_1 + 0x34)" (* "*") (cast_expression "(undefined ***)(param_1 + 0x34)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "piVar2 = piVar1;" (assignment_expression "piVar2 = piVar1" (identifier "piVar2") (= "=") (identifier "piVar1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar1 != (int *)local_24[1])" (( "(") (binary_expression "piVar1 != (int *)local_24[1]" (identifier "piVar1") (!= "!=") (cast_expression "(int *)local_24[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_24[1]" (identifier "local_24") ([ "[") (number_literal "1") (] "]")))) () ")")) (; ";")) (expression_statement "piVar2 = (int *)*local_24;" (assignment_expression "piVar2 = (int *)*local_24" (identifier "piVar2") (= "=") (cast_expression "(int *)*local_24" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_24" (* "*") (identifier "local_24")))) (; ";")) (expression_statement "ppuVar3 = &__DT_PLTGOT;" (assignment_expression "ppuVar3 = &__DT_PLTGOT" (identifier "ppuVar3") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (expression_statement "iVar4 = **(int **)(param_1 + 0x28);" (assignment_expression "iVar4 = **(int **)(param_1 + 0x28)" (identifier "iVar4") (= "=") (pointer_expression "**(int **)(param_1 + 0x28)" (* "*") (pointer_expression "*(int **)(param_1 + 0x28)" (* "*") (cast_expression "(int **)(param_1 + 0x28)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))))) (; ";")) (} "}"))) (expression_statement "bVar5 = local_2c != iVar4;" (assignment_expression "bVar5 = local_2c != iVar4" (identifier "bVar5") (= "=") (binary_expression "local_2c != iVar4" (identifier "local_2c") (!= "!=") (identifier "iVar4"))) (; ";")) (expression_statement "local_2c = iVar4;" (assignment_expression "local_2c = iVar4" (identifier "local_2c") (= "=") (identifier "iVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar5)" (( "(") (identifier "bVar5") () ")")) (; ";")) (} "}"))) (if_statement "if (piVar2 != piVar1) {\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }" (if "if") (parenthesized_expression "(piVar2 != piVar1)" (( "(") (binary_expression "piVar2 != piVar1" (identifier "piVar2") (!= "!=") (identifier "piVar1")) () ")")) (compound_statement "{\n    do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);\n  }" ({ "{") (do_statement "do {\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    } while ((int *)local_24[1] != piVar2);" (do "do") (compound_statement "{\n      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);\n      if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }\n      piVar2 = piVar2 + 1;\n    }" ({ "{") (expression_statement "iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);" (assignment_expression "iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x2c) + 0x1d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x2c) + 0x1d0)" (( "(") (binary_expression "*(int *)(param_1 + 0x2c) + 0x1d0" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (number_literal "0x1d0")) () ")"))))) (; ";")) (if_statement "if (iVar4 != 0) {\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_000721c0(iVar4,*piVar2);\n        local_24 = *(undefined ***)(param_1 + 0x34);\n        ppuVar3 = &__DT_PLTGOT;\n      }" ({ "{") (expression_statement "FUN_000721c0(iVar4,*piVar2);" (call_expression "FUN_000721c0(iVar4,*piVar2)" (identifier "FUN_000721c0") (argument_list "(iVar4,*piVar2)" (( "(") (identifier "iVar4") (, ",") (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) () ")"))) (; ";")) (expression_statement "local_24 = *(undefined ***)(param_1 + 0x34);" (assignment_expression "local_24 = *(undefined ***)(param_1 + 0x34)" (identifier "local_24") (= "=") (pointer_expression "*(undefined ***)(param_1 + 0x34)" (* "*") (cast_expression "(undefined ***)(param_1 + 0x34)" (( "(") (type_descriptor "undefined ***" (type_identifier "undefined") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_1 + 0x34)" (( "(") (binary_expression "param_1 + 0x34" (identifier "param_1") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "ppuVar3 = &__DT_PLTGOT;" (assignment_expression "ppuVar3 = &__DT_PLTGOT" (identifier "ppuVar3") (= "=") (pointer_expression "&__DT_PLTGOT" (& "&") (identifier "__DT_PLTGOT"))) (; ";")) (} "}"))) (expression_statement "piVar2 = piVar2 + 1;" (assignment_expression "piVar2 = piVar2 + 1" (identifier "piVar2") (= "=") (binary_expression "piVar2 + 1" (identifier "piVar2") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int *)local_24[1] != piVar2)" (( "(") (binary_expression "(int *)local_24[1] != piVar2" (cast_expression "(int *)local_24[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_24[1]" (identifier "local_24") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (identifier "piVar2")) () ")")) (; ";")) (} "}"))) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }" (if "if") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3)" (identifier "FUN_00069d00") (argument_list "("../../gold/parameters.h",0x5c,"options",ppuVar3)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (identifier "ppuVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);" (assignment_expression "iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" (* "*") (cast_expression "(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x593c)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x593c" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x593c")) () ")"))))) (; ";")) (if_statement "if (iVar4 == 0) {\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00142a40(local_24);\n    FUN_001e6d90(local_24,0xc);\n    return;\n  }" ({ "{") (expression_statement "FUN_00142a40(local_24);" (call_expression "FUN_00142a40(local_24)" (identifier "FUN_00142a40") (argument_list "(local_24)" (( "(") (identifier "local_24") () ")"))) (; ";")) (expression_statement "FUN_001e6d90(local_24,0xc);" (call_expression "FUN_001e6d90(local_24,0xc)" (identifier "FUN_001e6d90") (argument_list "(local_24,0xc)" (( "(") (identifier "local_24") (, ",") (number_literal "0xc") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0013bd30(iVar4,local_24);" (call_expression "FUN_0013bd30(iVar4,local_24)" (identifier "FUN_0013bd30") (argument_list "(iVar4,local_24)" (( "(") (identifier "iVar4") (, ",") (identifier "local_24") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void run(Finish_group * this, Workqueue * param_1) */

void __thiscall var_1::type_1::function_1(type_1 *this,type_2 *param_1)

{
  type_3 *pAVar1;
  type_4 *var_11;
  type_5 *var_14;
  type_6 var_6;
  type_6 var_5;
  size_t var_10;
  bool bVar5;
  type_3 *in_stack_ffffffc8;
  size_t var_4;
  type_7 *local_24;
  
  local_24 = this->input_group_;
  var_4 = this->symtab_->saw_undefined_;
  var_5 = (local_24->archives_).
            super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>._M_impl._M_start;
  var_6 = (local_24->archives_).
            super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>._M_impl._M_finish;
  if (this->saw_undefined_ != var_4) {
    do {
      var_10 = var_4;
      if (var_5 != var_6) {
        do {
          pAVar1 = *var_5;
          File_read::var_7(&pAVar1->input_file_->file_,&this->super_Task);
                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */
          Archive::var_8
                    (*var_5,this->symtab_,this->layout_,this->input_objects_,this->mapfile_);
          var_6 = var_5 + 1;
          in_stack_ffffffc8 = (type_3 *)this;
          File_read::var_9(&pAVar1->input_file_->file_,&this->super_Task);
          local_24 = this->input_group_;
          var_5 = var_6;
        } while (var_6 !=
                 (local_24->archives_).
                 super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>._M_impl.
                 _M_finish);
        var_5 = (local_24->archives_).
                  super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>._M_impl.
                  _M_start;
        var_10 = this->symtab_->saw_undefined_;
      }
      bVar5 = var_4 != var_10;
      var_4 = var_10;
    } while (bVar5);
  }
  if (var_5 != var_6) {
    do {
      var_11 = this->layout_->incremental_inputs_;
      if (var_11 != (type_4 *)0x0) {
        in_stack_ffffffc8 = *var_5;
        Incremental_inputs::var_12(var_11,&in_stack_ffffffc8->super_Library_base);
        local_24 = this->input_group_;
      }
      var_5 = var_5 + 1;
    } while ((local_24->archives_).
             super__Vector_base<var_1::type_3*,var_2::allocator<var_1::type_3*>var_3>._M_impl._M_finish
             != var_5);
  }
  if (parameters->options_ == (type_8 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_13("../../gold/parameters.h",0x5c,"options");
  }
  var_14 = parameters->options_->plugins_;
  if (var_14 == (type_5 *)0x0) {
    Input_group::~type_7(local_24,(int)in_stack_ffffffc8);
    var_15(local_24,0xc);
    return;
  }
  Plugin_manager::var_16(var_14,local_24);
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

void MASKED(int param_1)

{
  int *piVar1;
  int *piVar2;
  undefined **ppuVar3;
  int iVar4;
  bool bVar5;
  int local_2c;
  undefined **local_24;
  
  ppuVar3 = *(undefined ***)(param_1 + 0x34);
  local_2c = **(int **)(param_1 + 0x28);
  piVar2 = (int *)*ppuVar3;
  piVar1 = (int *)ppuVar3[1];
  local_24 = ppuVar3;
  if (*(int *)(param_1 + 0x38) != local_2c) {
    do {
      iVar4 = local_2c;
      if (piVar2 != piVar1) {
        do {
          iVar4 = *piVar2;
          FUN_000669a0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);
                    /* try { // try from 00142b0d to 00142b11 has its CatchHandler @ 00142c05 */
          FUN_00197510(*piVar2,*(undefined4 *)(param_1 + 0x28),*(undefined4 *)(param_1 + 0x2c),
                       *(undefined4 *)(param_1 + 0x24),*(undefined4 *)(param_1 + 0x30));
          piVar1 = piVar2 + 1;
          FUN_000679d0(*(int *)(iVar4 + 0x24) + 0x1c,param_1);
          local_24 = *(undefined ***)(param_1 + 0x34);
          piVar2 = piVar1;
        } while (piVar1 != (int *)local_24[1]);
        piVar2 = (int *)*local_24;
        ppuVar3 = &__DT_PLTGOT;
        iVar4 = **(int **)(param_1 + 0x28);
      }
      bVar5 = local_2c != iVar4;
      local_2c = iVar4;
    } while (bVar5);
  }
  if (piVar2 != piVar1) {
    do {
      iVar4 = *(int *)(*(int *)(param_1 + 0x2c) + 0x1d0);
      if (iVar4 != 0) {
        FUN_000721c0(iVar4,*piVar2);
        local_24 = *(undefined ***)(param_1 + 0x34);
        ppuVar3 = &__DT_PLTGOT;
      }
      piVar2 = piVar2 + 1;
    } while ((int *)local_24[1] != piVar2);
  }
  if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",ppuVar3);
  }
  iVar4 = *(int *)(*(int *)(DAT_0038f378 + 8) + 0x593c);
  if (iVar4 == 0) {
    FUN_00142a40(local_24);
    FUN_001e6d90(local_24,0xc);
    return;
  }
  FUN_0013bd30(iVar4,local_24);
  return;
}

