
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void define_base_version(Versions * this, Stringpool * dynpool) */

void __thiscall gold::Versions::define_base_version(Versions *this,Stringpool *dynpool)

{
  General_options *pGVar1;
  iterator __position;
  long *plVar2;
  char *pcVar3;
  Verdef *pVVar4;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar5;
  long *plVar6;
  long *plVar7;
  ulong uVar8;
  Verdef *vdbase;
  long *local_58;
  long *local_50;
  undefined8 local_48;
  
  if ((this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.
      _M_start !=
      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.
      _M_finish) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version");
  }
  pGVar1 = parameters->options_;
  if (pGVar1 != (General_options *)0x0) {
    pcVar3 = (pGVar1->soname_).value;
    if (pcVar3 == (char *)0x0) {
      pcVar3 = (pGVar1->output_).value;
    }
    pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);
    local_58 = (long *)0x0;
    local_50 = (long *)0x0;
    local_48 = 0;
                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */
    pVVar4 = (Verdef *)operator_new(0x38);
    (pVVar4->super_Version_base).index_ = 0xffffffff;
    pVVar4->name_ = pcVar3;
    (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_start = (pointer)0x0;
    uVar8 = (long)local_50 - (long)local_58;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_finish = (pointer)0x0;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_end_of_storage = (pointer)0x0;
    if ((long)uVar8 >> 5 == 0) {
      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;
    }
    else {
      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */
        std::__throw_bad_alloc();
      }
                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */
      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)
               operator_new(uVar8);
    }
    plVar6 = local_50;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_start = pbVar5;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_finish = pbVar5;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5);
    plVar7 = local_58;
    vdbase = pVVar4;
    if (local_58 == local_50) {
      pVVar4->is_base_ = true;
      pVVar4->is_weak_ = false;
      pVVar4->is_info_ = false;
      pVVar4->is_symbol_created_ = true;
    }
    else {
      do {
        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;
                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */
        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);
        plVar2 = local_50;
        plVar7 = plVar7 + 4;
        pbVar5 = pbVar5 + 1;
      } while (plVar6 != plVar7);
      (pVVar4->deps_).
      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>
      ._M_impl._M_finish = pbVar5;
      pVVar4->is_base_ = true;
      pVVar4->is_weak_ = false;
      pVVar4->is_info_ = false;
      pVVar4->is_symbol_created_ = true;
      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {
        if ((long *)*plVar7 != plVar7 + 2) {
          operator_delete((long *)*plVar7);
        }
      }
    }
    if (plVar6 != (long *)0x0) {
      operator_delete(plVar6);
    }
    __position._M_current =
         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.
         _M_finish;
    if (__position._M_current ==
        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.
        _M_end_of_storage) {
      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::
      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);
    }
    else {
      *__position._M_current = vdbase;
      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.
      _M_finish = __position._M_current + 1;
    }
    this->needs_base_version_ = false;
    return;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
}



void FUN_00240290(long *param_1,undefined8 param_2)

{
  long *plVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  long *plVar4;
  long *plVar5;
  long lVar6;
  long *plVar7;
  long lVar8;
  undefined8 *local_60;
  long *local_58;
  long *local_50;
  undefined8 local_48;
  
  if (*param_1 != param_1[1]) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");
  }
  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);
  if (lVar8 != 0) {
    lVar6 = *(long *)(lVar8 + 0x2b30);
    if (lVar6 == 0) {
      lVar6 = *(long *)(lVar8 + 0x4058);
    }
    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);
    local_58 = (long *)0x0;
    local_50 = (long *)0x0;
    local_48 = 0;
                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */
    puVar3 = (undefined8 *)FUN_00275550(0x38);
    *(undefined4 *)(puVar3 + 1) = 0xffffffff;
    puVar3[2] = uVar2;
    *puVar3 = &PTR_FUN_003ae940;
    puVar3[3] = 0;
    lVar8 = (long)local_50 - (long)local_58;
    puVar3[4] = 0;
    puVar3[5] = 0;
    if (lVar8 >> 5 == 0) {
      plVar4 = (long *)0x0;
    }
    else {
      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */
        FUN_002b54d0();
      }
                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */
      plVar4 = (long *)FUN_00275550(lVar8);
    }
    plVar5 = local_50;
    puVar3[3] = plVar4;
    puVar3[4] = plVar4;
    puVar3[5] = lVar8 + (long)plVar4;
    plVar7 = local_58;
    local_60 = puVar3;
    if (local_58 == local_50) {
      *(undefined4 *)(puVar3 + 6) = 0x1000001;
      plVar4 = local_50;
    }
    else {
      do {
        *plVar4 = (long)(plVar4 + 2);
                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */
        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);
        plVar1 = local_50;
        plVar7 = plVar7 + 4;
        plVar4 = plVar4 + 4;
      } while (plVar5 != plVar7);
      puVar3[4] = plVar4;
      *(undefined4 *)(puVar3 + 6) = 0x1000001;
      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {
        if ((long *)*plVar5 != plVar5 + 2) {
          FUN_00276d20();
        }
      }
    }
    if (plVar4 != (long *)0x0) {
      FUN_00276d20(plVar4);
    }
    puVar3 = (undefined8 *)param_1[1];
    if (puVar3 == (undefined8 *)param_1[2]) {
      FUN_00242fa0(param_1,puVar3,&local_60);
    }
    else {
      *puVar3 = local_60;
      param_1[1] = (long)(puVar3 + 1);
    }
    *(undefined1 *)(param_1 + 0xf) = 0;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");
}


PUSH R15
PUSH R14
PUSH R13
MOV R13,RDI
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV RAX,qword ptr [RDI + 0x8]
CMP qword ptr [RDI],RAX
JNZ 0x0024048e
MOV RAX,qword ptr [0x003be6b0]
MOV RAX,qword ptr [RAX + 0x10]
TEST RAX,RAX
JZ 0x002404a6
MOV RDI,RSI
MOV RSI,qword ptr [RAX + 0x2b30]
TEST RSI,RSI
JZ 0x00240450
XOR ECX,ECX
XOR EDX,EDX
CALL 0x0021bf40
MOV EDI,0x38
MOV qword ptr [RSP + 0x10],0x0
MOV qword ptr [RSP + 0x18],0x0
MOV RBX,RAX
MOV qword ptr [RSP + 0x20],0x0
CALL 0x00275550
MOV RBP,RAX
MOV dword ptr [RAX + 0x8],0xffffffff
MOV R12,qword ptr [RSP + 0x10]
LEA RAX,[0x3ae940]
MOV qword ptr [RBP + 0x10],RBX
MOV RBX,qword ptr [RSP + 0x18]
MOV qword ptr [RBP],RAX
MOV R14,RBX
MOV qword ptr [RBP + 0x18],0x0
SUB R14,R12
MOV qword ptr [RBP + 0x20],0x0
MOV RAX,R14
MOV qword ptr [RBP + 0x28],0x0
SAR RAX,0x5
JZ 0x00240460
MOV RDX,0x7ffffffffffffff
CMP RAX,RDX
JA 0x002404be
MOV RDI,R14
CALL 0x00275550
MOV RBX,qword ptr [RSP + 0x18]
MOV R12,qword ptr [RSP + 0x10]
MOV R15,RAX
ADD R14,R15
MOV qword ptr [RBP + 0x18],R15
MOV qword ptr [RBP + 0x20],R15
MOV qword ptr [RBP + 0x28],R14
CMP R12,RBX
JZ 0x00240480
MOV R14,R15
NOP word ptr [RAX + RAX*0x1]
LEA RAX,[R14 + 0x10]
MOV RDI,R14
MOV qword ptr [R14],RAX
MOV RSI,qword ptr [R12]
MOV RDX,qword ptr [R12 + 0x8]
ADD RDX,RSI
CALL 0x0015d030
ADD R12,0x20
ADD R14,0x20
CMP RBX,R12
JNZ 0x002403a0
MOV R12,qword ptr [RSP + 0x18]
MOV RBX,qword ptr [RSP + 0x10]
MOV qword ptr [RBP + 0x20],R14
MOV dword ptr [RBP + 0x30],0x1000001
MOV qword ptr [RSP + 0x8],RBP
CMP RBX,R12
JZ 0x0024040f
NOP word ptr [RAX + RAX*0x1]
MOV RDI,qword ptr [RBX]
LEA RAX,[RBX + 0x10]
CMP RDI,RAX
JZ 0x00240401
CALL 0x00276d20
ADD RBX,0x20
CMP RBX,R12
JNZ 0x002403f0
MOV RBX,qword ptr [RSP + 0x10]
TEST RBX,RBX
JZ 0x0024041c
MOV RDI,RBX
CALL 0x00276d20
MOV RSI,qword ptr [R13 + 0x8]
CMP RSI,qword ptr [R13 + 0x10]
JZ 0x00240470
MOV RAX,qword ptr [RSP + 0x8]
ADD RSI,0x8
MOV qword ptr [RSI + -0x8],RAX
MOV qword ptr [R13 + 0x8],RSI
MOV byte ptr [R13 + 0x78],0x0
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RSI,qword ptr [RAX + 0x4058]
JMP 0x002402d5
XOR R15D,R15D
JMP 0x0024037c
LEA RDX,[RSP + 0x8]
MOV RDI,R13
CALL 0x00242fa0
JMP 0x00240437
MOV dword ptr [RBP + 0x30],0x1000001
MOV qword ptr [RSP + 0x8],RBP
JMP 0x0024040f
LEA RDX,[0x323e60]
MOV ESI,0x5d5
LEA RDI,[0x323842]
CALL 0x0016cdf0
LEA RDX,[0x323f58]
MOV ESI,0x5c
LEA RDI,[0x30dc70]
CALL 0x0016cdf0
CALL 0x002b54d0
(translation_unit "void FUN_00240290(long *param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}\n\n" (function_definition "void FUN_00240290(long *param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}" primitive_type (function_declarator "FUN_00240290(long *param_1,undefined8 param_2)" identifier (parameter_list "(long *param_1,undefined8 param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long *local_50;" (sized_type_specifier "long" long) (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (if_statement "if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" if (parenthesized_expression "(*param_1 != param_1[1])" ( (binary_expression "*param_1 != param_1[1]" (pointer_expression "*param_1" * identifier) != (subscript_expression "param_1[1]" identifier [ number_literal ])) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" { comment (expression_statement "FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");" (call_expression "FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version")" identifier (argument_list "("../../gold/dynobj.cc",0x5d5,"define_base_version")" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""define_base_version"" " string_content ") ))) ;) })) (expression_statement "lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);" (assignment_expression "lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" { (expression_statement "lVar6 = *(long *)(lVar8 + 0x2b30);" (assignment_expression "lVar6 = *(long *)(lVar8 + 0x2b30)" identifier = (pointer_expression "*(long *)(lVar8 + 0x2b30)" * (cast_expression "(long *)(lVar8 + 0x2b30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x2b30)" ( (binary_expression "lVar8 + 0x2b30" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }" { (expression_statement "lVar6 = *(long *)(lVar8 + 0x4058);" (assignment_expression "lVar6 = *(long *)(lVar8 + 0x4058)" identifier = (pointer_expression "*(long *)(lVar8 + 0x4058)" * (cast_expression "(long *)(lVar8 + 0x4058)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x4058)" ( (binary_expression "lVar8 + 0x4058" identifier + number_literal) ))))) ;) })) (expression_statement "uVar2 = FUN_0021bf40(param_2,lVar6,0,0);" (assignment_expression "uVar2 = FUN_0021bf40(param_2,lVar6,0,0)" identifier = (call_expression "FUN_0021bf40(param_2,lVar6,0,0)" identifier (argument_list "(param_2,lVar6,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = (long *)0x0;" (assignment_expression "local_50 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) comment (expression_statement "puVar3 = (undefined8 *)FUN_00275550(0x38);" (assignment_expression "puVar3 = (undefined8 *)FUN_00275550(0x38)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = uVar2;" (assignment_expression "puVar3[2] = uVar2" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar3 = &PTR_FUN_003ae940;" (assignment_expression "*puVar3 = &PTR_FUN_003ae940" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_003ae940" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar8 = (long)local_50 - (long)local_58;" (assignment_expression "lVar8 = (long)local_50 - (long)local_58" identifier = (binary_expression "(long)local_50 - (long)local_58" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" if (parenthesized_expression "(lVar8 >> 5 == 0)" ( (binary_expression "lVar8 >> 5 == 0" (binary_expression "lVar8 >> 5" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      plVar4 = (long *)0x0;\n    }" { (expression_statement "plVar4 = (long *)0x0;" (assignment_expression "plVar4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" else (compound_statement "{\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" { (if_statement "if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }" if (parenthesized_expression "(0x7ffffffffffffff < (ulong)(lVar8 >> 5))" ( (binary_expression "0x7ffffffffffffff < (ulong)(lVar8 >> 5)" number_literal < (call_expression "(ulong)(lVar8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar8 >> 5)" ( (binary_expression "lVar8 >> 5" identifier >> number_literal) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        FUN_002b54d0();\n      }" { comment comment (expression_statement "FUN_002b54d0();" (call_expression "FUN_002b54d0()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "plVar4 = (long *)FUN_00275550(lVar8);" (assignment_expression "plVar4 = (long *)FUN_00275550(lVar8)" identifier = (cast_expression "(long *)FUN_00275550(lVar8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))))) ;) }))) (expression_statement "plVar5 = local_50;" (assignment_expression "plVar5 = local_50" identifier = identifier) ;) (expression_statement "puVar3[3] = plVar4;" (assignment_expression "puVar3[3] = plVar4" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = plVar4;" (assignment_expression "puVar3[4] = plVar4" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[5] = lVar8 + (long)plVar4;" (assignment_expression "puVar3[5] = lVar8 + (long)plVar4" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = (binary_expression "lVar8 + (long)plVar4" identifier + (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "plVar7 = local_58;" (assignment_expression "plVar7 = local_58" identifier = identifier) ;) (expression_statement "local_60 = puVar3;" (assignment_expression "local_60 = puVar3" identifier = identifier) ;) (if_statement "if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" if (parenthesized_expression "(local_58 == local_50)" ( (binary_expression "local_58 == local_50" identifier == identifier) )) (compound_statement "{\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }" { (expression_statement "*(undefined4 *)(puVar3 + 6) = 0x1000001;" (assignment_expression "*(undefined4 *)(puVar3 + 6) = 0x1000001" (pointer_expression "*(undefined4 *)(puVar3 + 6)" * (cast_expression "(undefined4 *)(puVar3 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 6)" ( (binary_expression "puVar3 + 6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4 = local_50;" (assignment_expression "plVar4 = local_50" identifier = identifier) ;) }) (else_clause "else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" else (compound_statement "{\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" { (do_statement "do {\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);" do (compound_statement "{\n        *plVar4 = (long)(plVar4 + 2);\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      }" { (expression_statement "*plVar4 = (long)(plVar4 + 2);" (assignment_expression "*plVar4 = (long)(plVar4 + 2)" (pointer_expression "*plVar4" * identifier) = (cast_expression "(long)(plVar4 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar4 + 2)" ( (binary_expression "plVar4 + 2" identifier + number_literal) )))) ;) comment (expression_statement "FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);" (call_expression "FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7)" identifier (argument_list "(plVar4,*plVar7,plVar7[1] + *plVar7)" ( identifier , (pointer_expression "*plVar7" * identifier) , (binary_expression "plVar7[1] + *plVar7" (subscript_expression "plVar7[1]" identifier [ number_literal ]) + (pointer_expression "*plVar7" * identifier)) ))) ;) (expression_statement "plVar1 = local_50;" (assignment_expression "plVar1 = local_50" identifier = identifier) ;) (expression_statement "plVar7 = plVar7 + 4;" (assignment_expression "plVar7 = plVar7 + 4" identifier = (binary_expression "plVar7 + 4" identifier + number_literal)) ;) (expression_statement "plVar4 = plVar4 + 4;" (assignment_expression "plVar4 = plVar4 + 4" identifier = (binary_expression "plVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar5 != plVar7)" ( (binary_expression "plVar5 != plVar7" identifier != identifier) )) ;) (expression_statement "puVar3[4] = plVar4;" (assignment_expression "puVar3[4] = plVar4" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + 6) = 0x1000001;" (assignment_expression "*(undefined4 *)(puVar3 + 6) = 0x1000001" (pointer_expression "*(undefined4 *)(puVar3 + 6)" * (cast_expression "(undefined4 *)(puVar3 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 6)" ( (binary_expression "puVar3 + 6" identifier + number_literal) )))) = number_literal) ;) (for_statement "for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }" for ( (assignment_expression "plVar5 = local_58" identifier = identifier) ; (comma_expression "plVar4 = local_58, plVar5 != plVar1" (assignment_expression "plVar4 = local_58" identifier = identifier) , (binary_expression "plVar5 != plVar1" identifier != identifier)) ; (assignment_expression "plVar5 = plVar5 + 4" identifier = (binary_expression "plVar5 + 4" identifier + number_literal)) ) (compound_statement "{\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }" { (if_statement "if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }" if (parenthesized_expression "((long *)*plVar5 != plVar5 + 2)" ( (binary_expression "(long *)*plVar5 != plVar5 + 2" (cast_expression "(long *)*plVar5" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar5" * identifier)) != (binary_expression "plVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n          FUN_00276d20();\n        }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) })) }))) (if_statement "if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }" if (parenthesized_expression "(plVar4 != (long *)0x0)" ( (binary_expression "plVar4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_00276d20(plVar4);\n    }" { (expression_statement "FUN_00276d20(plVar4);" (call_expression "FUN_00276d20(plVar4)" identifier (argument_list "(plVar4)" ( identifier ))) ;) })) (expression_statement "puVar3 = (undefined8 *)param_1[1];" (assignment_expression "puVar3 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" if (parenthesized_expression "(puVar3 == (undefined8 *)param_1[2])" ( (binary_expression "puVar3 == (undefined8 *)param_1[2]" identifier == (cast_expression "(undefined8 *)param_1[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }" { (expression_statement "FUN_00242fa0(param_1,puVar3,&local_60);" (call_expression "FUN_00242fa0(param_1,puVar3,&local_60)" identifier (argument_list "(param_1,puVar3,&local_60)" ( identifier , identifier , (pointer_expression "&local_60" & identifier) ))) ;) }) (else_clause "else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" else (compound_statement "{\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" { (expression_statement "*puVar3 = local_60;" (assignment_expression "*puVar3 = local_60" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "param_1[1] = (long)(puVar3 + 1);" (assignment_expression "param_1[1] = (long)(puVar3 + 1)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar3 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) ;) }))) (expression_statement "*(undefined1 *)(param_1 + 0xf) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xf) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xf)" * (cast_expression "(undefined1 *)(param_1 + 0xf)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf)" ( (binary_expression "param_1 + 0xf" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) comment (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0016cdf0("../../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 ") ))) ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void define_base_version(Versions * this, Stringpool * dynpool) */\n\nvoid __thiscall gold::Versions::define_base_version(Versions *this,Stringpool *dynpool)\n\n{\n  General_options *pGVar1;\n  iterator __position;\n  long *plVar2;\n  char *pcVar3;\n  Verdef *pVVar4;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  ulong uVar8;\n  Verdef *vdbase;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if ((this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  pGVar1 = parameters->options_;\n  if (pGVar1 != (General_options *)0x0) {\n    pcVar3 = (pGVar1->soname_).value;\n    if (pcVar3 == (char *)0x0) {\n      pcVar3 = (pGVar1->output_).value;\n    }\n    pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    pVVar4 = (Verdef *)operator_new(0x38);\n    (pVVar4->super_Version_base).index_ = 0xffffffff;\n    pVVar4->name_ = pcVar3;\n    (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    uVar8 = (long)local_50 - (long)local_58;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    if ((long)uVar8 >> 5 == 0) {\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }\n    plVar6 = local_50;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5);\n    plVar7 = local_58;\n    vdbase = pVVar4;\n    if (local_58 == local_50) {\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n    }\n    else {\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }\n    if (plVar6 != (long *)0x0) {\n      operator_delete(plVar6);\n    }\n    __position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n    }\n    else {\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n    this->needs_base_version_ = false;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n}\n\n" comment comment (function_definition "void __thiscall gold::Versions::define_base_version(Versions *this,Stringpool *dynpool)\n\n{\n  General_options *pGVar1;\n  iterator __position;\n  long *plVar2;\n  char *pcVar3;\n  Verdef *pVVar4;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  ulong uVar8;\n  Verdef *vdbase;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if ((this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  pGVar1 = parameters->options_;\n  if (pGVar1 != (General_options *)0x0) {\n    pcVar3 = (pGVar1->soname_).value;\n    if (pcVar3 == (char *)0x0) {\n      pcVar3 = (pGVar1->output_).value;\n    }\n    pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    pVVar4 = (Verdef *)operator_new(0x38);\n    (pVVar4->super_Version_base).index_ = 0xffffffff;\n    pVVar4->name_ = pcVar3;\n    (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    uVar8 = (long)local_50 - (long)local_58;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    if ((long)uVar8 >> 5 == 0) {\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }\n    plVar6 = local_50;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5);\n    plVar7 = local_58;\n    vdbase = pVVar4;\n    if (local_58 == local_50) {\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n    }\n    else {\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }\n    if (plVar6 != (long *)0x0) {\n      operator_delete(plVar6);\n    }\n    __position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n    }\n    else {\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n    this->needs_base_version_ = false;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Versions::" identifier : : identifier : :) (function_declarator "define_base_version(Versions *this,Stringpool *dynpool)" identifier (parameter_list "(Versions *this,Stringpool *dynpool)" ( (parameter_declaration "Versions *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Stringpool *dynpool" type_identifier (pointer_declarator "*dynpool" * identifier)) ))) (compound_statement "{\n  General_options *pGVar1;\n  iterator __position;\n  long *plVar2;\n  char *pcVar3;\n  Verdef *pVVar4;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *pbVar5;\n  long *plVar6;\n  long *plVar7;\n  ulong uVar8;\n  Verdef *vdbase;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if ((this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  pGVar1 = parameters->options_;\n  if (pGVar1 != (General_options *)0x0) {\n    pcVar3 = (pGVar1->soname_).value;\n    if (pcVar3 == (char *)0x0) {\n      pcVar3 = (pGVar1->output_).value;\n    }\n    pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    pVVar4 = (Verdef *)operator_new(0x38);\n    (pVVar4->super_Version_base).index_ = 0xffffffff;\n    pVVar4->name_ = pcVar3;\n    (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    uVar8 = (long)local_50 - (long)local_58;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    if ((long)uVar8 >> 5 == 0) {\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }\n    plVar6 = local_50;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5);\n    plVar7 = local_58;\n    vdbase = pVVar4;\n    if (local_58 == local_50) {\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n    }\n    else {\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }\n    if (plVar6 != (long *)0x0) {\n      operator_delete(plVar6);\n    }\n    __position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n    }\n    else {\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n    this->needs_base_version_ = false;\n    return;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n}" { (declaration "General_options *pGVar1;" type_identifier (pointer_declarator "*pGVar1" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "Verdef *pVVar4;" type_identifier (pointer_declarator "*pVVar4" * identifier) ;) (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (expression_statement "allocator<char>_> *pbVar5;" (binary_expression "allocator<char>_> *pbVar5" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*pbVar5" * identifier)) ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "Verdef *vdbase;" type_identifier (pointer_declarator "*vdbase" * identifier) ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long *local_50;" (sized_type_specifier "long" long) (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (if_statement "if ((this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" if (parenthesized_expression "((this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish)" ( (field_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish" (field_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold::Verdef*,_std" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start !=\n      (this->defs_).super__Vector_base<gold" (field_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_start" (field_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std" (binary_expression "(this->defs_).super__Vector_base<gold" (field_expression "(this->defs_).super__Vector_base" (parenthesized_expression "(this->defs_)" ( (field_expression "this->defs_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) != (binary_expression "(this->defs_).super__Vector_base<gold" (field_expression "(this->defs_).super__Vector_base" (parenthesized_expression "(this->defs_)" ( (field_expression "this->defs_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Verdef" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version");" (call_expression "do_gold_unreachable("../../gold/dynobj.cc",0x5d5,"define_base_version")" identifier (argument_list "("../../gold/dynobj.cc",0x5d5,"define_base_version")" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""define_base_version"" " string_content ") ))) ;) })) (expression_statement "pGVar1 = parameters->options_;" (assignment_expression "pGVar1 = parameters->options_" identifier = (field_expression "parameters->options_" identifier -> field_identifier)) ;) (if_statement "if (pGVar1 != (General_options *)0x0) {\n    pcVar3 = (pGVar1->soname_).value;\n    if (pcVar3 == (char *)0x0) {\n      pcVar3 = (pGVar1->output_).value;\n    }\n    pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    pVVar4 = (Verdef *)operator_new(0x38);\n    (pVVar4->super_Version_base).index_ = 0xffffffff;\n    pVVar4->name_ = pcVar3;\n    (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    uVar8 = (long)local_50 - (long)local_58;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    if ((long)uVar8 >> 5 == 0) {\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }\n    plVar6 = local_50;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5);\n    plVar7 = local_58;\n    vdbase = pVVar4;\n    if (local_58 == local_50) {\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n    }\n    else {\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }\n    if (plVar6 != (long *)0x0) {\n      operator_delete(plVar6);\n    }\n    __position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n    }\n    else {\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n    this->needs_base_version_ = false;\n    return;\n  }" if (parenthesized_expression "(pGVar1 != (General_options *)0x0)" ( (binary_expression "pGVar1 != (General_options *)0x0" identifier != (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pcVar3 = (pGVar1->soname_).value;\n    if (pcVar3 == (char *)0x0) {\n      pcVar3 = (pGVar1->output_).value;\n    }\n    pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */\n    pVVar4 = (Verdef *)operator_new(0x38);\n    (pVVar4->super_Version_base).index_ = 0xffffffff;\n    pVVar4->name_ = pcVar3;\n    (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;\n    uVar8 = (long)local_50 - (long)local_58;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;\n    if ((long)uVar8 >> 5 == 0) {\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }\n    plVar6 = local_50;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_start = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_finish = pbVar5;\n    (pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5);\n    plVar7 = local_58;\n    vdbase = pVVar4;\n    if (local_58 == local_50) {\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n    }\n    else {\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }\n    if (plVar6 != (long *)0x0) {\n      operator_delete(plVar6);\n    }\n    __position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n         _M_finish;\n    if (__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n    }\n    else {\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }\n    this->needs_base_version_ = false;\n    return;\n  }" { (expression_statement "pcVar3 = (pGVar1->soname_).value;" (assignment_expression "pcVar3 = (pGVar1->soname_).value" identifier = (field_expression "(pGVar1->soname_).value" (parenthesized_expression "(pGVar1->soname_)" ( (field_expression "pGVar1->soname_" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      pcVar3 = (pGVar1->output_).value;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar3 = (pGVar1->output_).value;\n    }" { (expression_statement "pcVar3 = (pGVar1->output_).value;" (assignment_expression "pcVar3 = (pGVar1->output_).value" identifier = (field_expression "(pGVar1->output_).value" (parenthesized_expression "(pGVar1->output_)" ( (field_expression "pGVar1->output_" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);" (assignment_expression "pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0)" identifier = (binary_expression "Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0)" (binary_expression "Stringpool_template<char" identifier < identifier) > (ERROR "::" : :) (call_expression "add(dynpool,pcVar3,false,(Key *)0x0)" identifier (argument_list "(dynpool,pcVar3,false,(Key *)0x0)" ( identifier , identifier , false , (cast_expression "(Key *)0x0" ( (type_descriptor "Key *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ))))) ;) (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = (long *)0x0;" (assignment_expression "local_50 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) comment (expression_statement "pVVar4 = (Verdef *)operator_new(0x38);" (assignment_expression "pVVar4 = (Verdef *)operator_new(0x38)" identifier = (cast_expression "(Verdef *)operator_new(0x38)" ( (type_descriptor "Verdef *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "(pVVar4->super_Version_base).index_ = 0xffffffff;" (assignment_expression "(pVVar4->super_Version_base).index_ = 0xffffffff" (field_expression "(pVVar4->super_Version_base).index_" (parenthesized_expression "(pVVar4->super_Version_base)" ( (field_expression "pVVar4->super_Version_base" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "pVVar4->name_ = pcVar3;" (assignment_expression "pVVar4->name_ = pcVar3" (field_expression "pVVar4->name_" identifier -> field_identifier) = identifier) ;) (expression_statement "(pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940;" (assignment_expression "(pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_003ae940" (field_expression "(pVVar4->super_Version_base)._vptr_Version_base" (parenthesized_expression "(pVVar4->super_Version_base)" ( (field_expression "pVVar4->super_Version_base" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(_func_int_varargs **)&PTR__Verdef_003ae940" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Verdef_003ae940" & identifier))) ;) (ERROR "(pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(pVVar4->deps_).\n    super__Vector_base<std" (field_expression "(pVVar4->deps_).\n    super__Vector_base" (parenthesized_expression "(pVVar4->deps_)" ( (field_expression "pVVar4->deps_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_start = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_start" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (expression_statement "uVar8 = (long)local_50 - (long)local_58;" (assignment_expression "uVar8 = (long)local_50 - (long)local_58" identifier = (binary_expression "(long)local_50 - (long)local_58" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (ERROR "(pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(pVVar4->deps_).\n    super__Vector_base<std" (field_expression "(pVVar4->deps_).\n    super__Vector_base" (parenthesized_expression "(pVVar4->deps_)" ( (field_expression "pVVar4->deps_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (ERROR "(pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(pVVar4->deps_).\n    super__Vector_base<std" (field_expression "(pVVar4->deps_).\n    super__Vector_base" (parenthesized_expression "(pVVar4->deps_)" ( (field_expression "pVVar4->deps_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)0x0" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (cast_expression "(pointer)0x0" ( (type_descriptor "pointer" type_identifier) ) number_literal)) ;) (if_statement "if ((long)uVar8 >> 5 == 0) {\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }" if (parenthesized_expression "((long)uVar8 >> 5 == 0)" ( (binary_expression "(long)uVar8 >> 5 == 0" (binary_expression "(long)uVar8 >> 5" (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) == number_literal) )) (compound_statement "{\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n    }" { (expression_statement "pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;" (assignment_expression "pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0" identifier = (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *)0x0" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*)0x0" * (ERROR ")" )) number_literal)) ))) ;) }) (else_clause "else {\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }" else (compound_statement "{\n      if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }\n                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */\n      pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);\n    }" { (if_statement "if (0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }" if (parenthesized_expression "(0x7ffffffffffffff < (ulong)((long)uVar8 >> 5))" ( (binary_expression "0x7ffffffffffffff < (ulong)((long)uVar8 >> 5)" number_literal < (call_expression "(ulong)((long)uVar8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)uVar8 >> 5)" ( (binary_expression "(long)uVar8 >> 5" (cast_expression "(long)uVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) >> number_literal) )))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */\n        std::__throw_bad_alloc();\n      }" { comment comment (labeled_statement "std::__throw_bad_alloc();" statement_identifier : (ERROR ":" :) (expression_statement "__throw_bad_alloc();" (call_expression "__throw_bad_alloc()" identifier (argument_list "()" ( ))) ;)) })) comment (expression_statement "pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8);" (assignment_expression "pbVar5 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8)" identifier = (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar8)" ( (ERROR "basic_string<char,_std::char_traits<char>,_std::" (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char>,_std" (binary_expression "char_traits<char" identifier < identifier) > (ERROR "," ,) identifier) : :) (binary_expression "allocator<char>_> *)\n               operator_new(uVar8)" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*)\n               operator_new(uVar8)" * (ERROR ")" )) (call_expression "operator_new(uVar8)" identifier (argument_list "(uVar8)" ( identifier ))))) ))) ;) }))) (expression_statement "plVar6 = local_50;" (assignment_expression "plVar6 = local_50" identifier = identifier) ;) (ERROR "(pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(pVVar4->deps_).\n    super__Vector_base<std" (field_expression "(pVVar4->deps_).\n    super__Vector_base" (parenthesized_expression "(pVVar4->deps_)" ( (field_expression "pVVar4->deps_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_start = pbVar5;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_start = pbVar5" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_start" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) (ERROR "(pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(pVVar4->deps_).\n    super__Vector_base<std" (field_expression "(pVVar4->deps_).\n    super__Vector_base" (parenthesized_expression "(pVVar4->deps_)" ( (field_expression "pVVar4->deps_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_finish = pbVar5;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish = pbVar5" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) (ERROR "(pVVar4->deps_).\n    super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(pVVar4->deps_).\n    super__Vector_base<std" (field_expression "(pVVar4->deps_).\n    super__Vector_base" (parenthesized_expression "(pVVar4->deps_)" ( (field_expression "pVVar4->deps_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5);" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage = (pointer)(uVar8 + (long)pbVar5)" (field_expression "allocator<char>_>_>_>\n    ._M_impl._M_end_of_storage" (field_expression "allocator<char>_>_>_>\n    ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (call_expression "(pointer)(uVar8 + (long)pbVar5)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "(uVar8 + (long)pbVar5)" ( (binary_expression "uVar8 + (long)pbVar5" identifier + (cast_expression "(long)pbVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "plVar7 = local_58;" (assignment_expression "plVar7 = local_58" identifier = identifier) ;) (expression_statement "vdbase = pVVar4;" (assignment_expression "vdbase = pVVar4" identifier = identifier) ;) (if_statement "if (local_58 == local_50) {\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n    }\n    else {\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }" if (parenthesized_expression "(local_58 == local_50)" ( (binary_expression "local_58 == local_50" identifier == identifier) )) (compound_statement "{\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n    }" { (expression_statement "pVVar4->is_base_ = true;" (assignment_expression "pVVar4->is_base_ = true" (field_expression "pVVar4->is_base_" identifier -> field_identifier) = true) ;) (expression_statement "pVVar4->is_weak_ = false;" (assignment_expression "pVVar4->is_weak_ = false" (field_expression "pVVar4->is_weak_" identifier -> field_identifier) = false) ;) (expression_statement "pVVar4->is_info_ = false;" (assignment_expression "pVVar4->is_info_ = false" (field_expression "pVVar4->is_info_" identifier -> field_identifier) = false) ;) (expression_statement "pVVar4->is_symbol_created_ = true;" (assignment_expression "pVVar4->is_symbol_created_ = true" (field_expression "pVVar4->is_symbol_created_" identifier -> field_identifier) = true) ;) }) (else_clause "else {\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }" else (compound_statement "{\n      do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);\n      (pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;\n      pVVar4->is_base_ = true;\n      pVVar4->is_weak_ = false;\n      pVVar4->is_info_ = false;\n      pVVar4->is_symbol_created_ = true;\n      for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }\n    }" { (do_statement "do {\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      } while (plVar6 != plVar7);" do (compound_statement "{\n        (pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;\n                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */\n        std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);\n        plVar2 = local_50;\n        plVar7 = plVar7 + 4;\n        pbVar5 = pbVar5 + 1;\n      }" { (expression_statement "(pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2;" (assignment_expression "(pbVar5->_M_dataplus)._M_p = (pointer)&pbVar5->field_2" (field_expression "(pbVar5->_M_dataplus)._M_p" (parenthesized_expression "(pbVar5->_M_dataplus)" ( (field_expression "pbVar5->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&pbVar5->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "pbVar5->field_2" identifier -> field_identifier))) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n        _M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);" statement_identifier (ERROR "::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>:" : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > :) : (expression_statement "_M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7);" (binary_expression "_M_construct<char*>(pbVar5,*plVar7,plVar7[1] + *plVar7)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(pbVar5,*plVar7,plVar7[1] + *plVar7)" ( (comma_expression "pbVar5,*plVar7,plVar7[1] + *plVar7" identifier , (comma_expression "*plVar7,plVar7[1] + *plVar7" (pointer_expression "*plVar7" * identifier) , (binary_expression "plVar7[1] + *plVar7" (subscript_expression "plVar7[1]" identifier [ number_literal ]) + (pointer_expression "*plVar7" * identifier)))) ))) ;)) (expression_statement "plVar2 = local_50;" (assignment_expression "plVar2 = local_50" identifier = identifier) ;) (expression_statement "plVar7 = plVar7 + 4;" (assignment_expression "plVar7 = plVar7 + 4" identifier = (binary_expression "plVar7 + 4" identifier + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar6 != plVar7)" ( (binary_expression "plVar6 != plVar7" identifier != identifier) )) ;) (ERROR "(pVVar4->deps_).\n      super__Vector_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::" (binary_expression "(pVVar4->deps_).\n      super__Vector_base<std" (field_expression "(pVVar4->deps_).\n      super__Vector_base" (parenthesized_expression "(pVVar4->deps_)" ( (field_expression "pVVar4->deps_" identifier -> field_identifier) )) . field_identifier) < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : : (binary_expression "allocator<char>_>,_std" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "__cxx11::basic_string<char,_std::char_traits<char>,_std" identifier (ERROR "::basic_string<char,_std::char_traits<char>" : : (comma_expression "basic_string<char,_std" (binary_expression "basic_string<char" identifier < identifier) , identifier) : : (binary_expression "char_traits<char" identifier < identifier) >) , identifier) : :) (expression_statement "allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5;" (assignment_expression "allocator<char>_>_>_>\n      ._M_impl._M_finish = pbVar5" (field_expression "allocator<char>_>_>_>\n      ._M_impl._M_finish" (field_expression "allocator<char>_>_>_>\n      ._M_impl" (binary_expression "allocator<char>_>_>_" (binary_expression "allocator<char>_>_" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) = identifier) ;) (expression_statement "pVVar4->is_base_ = true;" (assignment_expression "pVVar4->is_base_ = true" (field_expression "pVVar4->is_base_" identifier -> field_identifier) = true) ;) (expression_statement "pVVar4->is_weak_ = false;" (assignment_expression "pVVar4->is_weak_ = false" (field_expression "pVVar4->is_weak_" identifier -> field_identifier) = false) ;) (expression_statement "pVVar4->is_info_ = false;" (assignment_expression "pVVar4->is_info_ = false" (field_expression "pVVar4->is_info_" identifier -> field_identifier) = false) ;) (expression_statement "pVVar4->is_symbol_created_ = true;" (assignment_expression "pVVar4->is_symbol_created_ = true" (field_expression "pVVar4->is_symbol_created_" identifier -> field_identifier) = true) ;) (for_statement "for (plVar7 = local_58; plVar6 = local_58, plVar7 != plVar2; plVar7 = plVar7 + 4) {\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }" for ( (assignment_expression "plVar7 = local_58" identifier = identifier) ; (comma_expression "plVar6 = local_58, plVar7 != plVar2" (assignment_expression "plVar6 = local_58" identifier = identifier) , (binary_expression "plVar7 != plVar2" identifier != identifier)) ; (assignment_expression "plVar7 = plVar7 + 4" identifier = (binary_expression "plVar7 + 4" identifier + number_literal)) ) (compound_statement "{\n        if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }\n      }" { (if_statement "if ((long *)*plVar7 != plVar7 + 2) {\n          operator_delete((long *)*plVar7);\n        }" if (parenthesized_expression "((long *)*plVar7 != plVar7 + 2)" ( (binary_expression "(long *)*plVar7 != plVar7 + 2" (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier)) != (binary_expression "plVar7 + 2" identifier + number_literal)) )) (compound_statement "{\n          operator_delete((long *)*plVar7);\n        }" { (expression_statement "operator_delete((long *)*plVar7);" (call_expression "operator_delete((long *)*plVar7)" identifier (argument_list "((long *)*plVar7)" ( (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier)) ))) ;) })) })) }))) (if_statement "if (plVar6 != (long *)0x0) {\n      operator_delete(plVar6);\n    }" if (parenthesized_expression "(plVar6 != (long *)0x0)" ( (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      operator_delete(plVar6);\n    }" { (expression_statement "operator_delete(plVar6);" (call_expression "operator_delete(plVar6)" identifier (argument_list "(plVar6)" ( identifier ))) ;) })) (expression_statement "__position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n         _M_finish;" (field_expression "__position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n         _M_finish" (field_expression "__position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl" (binary_expression "__position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_" (binary_expression "__position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold" (binary_expression "__position._M_current =\n         (this->defs_).super__Vector_base<gold::Verdef*,_std" (assignment_expression "__position._M_current =\n         (this->defs_).super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) = (binary_expression "(this->defs_).super__Vector_base<gold" (field_expression "(this->defs_).super__Vector_base" (parenthesized_expression "(this->defs_)" ( (field_expression "this->defs_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Verdef" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) ;) (if_statement "if (__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage) {\n      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n    }\n    else {\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }" if (parenthesized_expression "(__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage)" ( (field_expression "__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n        _M_end_of_storage" (field_expression "__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl" (binary_expression "__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_" (binary_expression "__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold" (binary_expression "__position._M_current ==\n        (this->defs_).super__Vector_base<gold::Verdef*,_std" (binary_expression "__position._M_current ==\n        (this->defs_).super__Vector_base<gold" (field_expression "__position._M_current" identifier . field_identifier) == (binary_expression "(this->defs_).super__Vector_base<gold" (field_expression "(this->defs_).super__Vector_base" (parenthesized_expression "(this->defs_)" ( (field_expression "this->defs_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Verdef" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) )) (compound_statement "{\n      std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n    }" { (ERROR "std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n      _M_realloc_insert<gold::" (comma_expression "std::vector<gold::Verdef*,_std" identifier (ERROR "::vector<gold::Verdef*" : : (binary_expression "vector<gold" identifier < identifier) : : identifier *) , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : (binary_expression "Verdef*>_>::\n      _M_realloc_insert<gold" (binary_expression "Verdef*>_>::\n      _M_realloc_insert" (binary_expression "Verdef*>_" identifier * (ERROR ">" >) identifier) > (ERROR "::" : :) identifier) < identifier) : :) (expression_statement "Verdef*_const&>(&this->defs_,__position,&vdbase);" (binary_expression "Verdef*_const&>(&this->defs_,__position,&vdbase)" (binary_expression "Verdef*_const" identifier * identifier) (ERROR "&" &) > (parenthesized_expression "(&this->defs_,__position,&vdbase)" ( (comma_expression "&this->defs_,__position,&vdbase" (pointer_expression "&this->defs_" & (field_expression "this->defs_" identifier -> field_identifier)) , (comma_expression "__position,&vdbase" identifier , (pointer_expression "&vdbase" & identifier))) ))) ;) }) (else_clause "else {\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }" else (compound_statement "{\n      *__position._M_current = vdbase;\n      (this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;\n    }" { (expression_statement "*__position._M_current = vdbase;" (assignment_expression "*__position._M_current = vdbase" (pointer_expression "*__position._M_current" * (field_expression "__position._M_current" identifier . field_identifier)) = identifier) ;) (expression_statement "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1;" (assignment_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish = __position._M_current + 1" (field_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl.\n      _M_finish" (field_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_>._M_impl" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold::Verdef*>_" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std::allocator<gold" (binary_expression "(this->defs_).super__Vector_base<gold::Verdef*,_std" (binary_expression "(this->defs_).super__Vector_base<gold" (field_expression "(this->defs_).super__Vector_base" (parenthesized_expression "(this->defs_)" ( (field_expression "this->defs_" identifier -> field_identifier) )) . field_identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR "," ,) identifier) (ERROR "::allocator" : : identifier) < identifier) (ERROR "::Verdef" : : identifier) * (ERROR ">" >) identifier) (ERROR ">" >) . field_identifier) . field_identifier) = (binary_expression "__position._M_current + 1" (field_expression "__position._M_current" identifier . field_identifier) + number_literal)) ;) }))) (expression_statement "this->needs_base_version_ = false;" (assignment_expression "this->needs_base_version_ = false" (field_expression "this->needs_base_version_" identifier -> field_identifier) = false) ;) (return_statement "return;" return ;) })) 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 ") ))) ;) })))
(translation_unit "void FUN_00240290(long *param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}\n\n" (function_definition "void FUN_00240290(long *param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}" primitive_type (function_declarator "FUN_00240290(long *param_1,undefined8 param_2)" identifier (parameter_list "(long *param_1,undefined8 param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) ))) (compound_statement "{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "long *plVar4;" (sized_type_specifier "long" long) (pointer_declarator "*plVar4" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *local_60;" type_identifier (pointer_declarator "*local_60" * identifier) ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "long *local_50;" (sized_type_specifier "long" long) (pointer_declarator "*local_50" * identifier) ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (if_statement "if (*param_1 != param_1[1]) {\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" if (parenthesized_expression "(*param_1 != param_1[1])" ( (binary_expression "*param_1 != param_1[1]" (pointer_expression "*param_1" * identifier) != (subscript_expression "param_1[1]" identifier [ number_literal ])) )) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" { (expression_statement "FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");" (call_expression "FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version")" identifier (argument_list "("../../gold/dynobj.cc",0x5d5,"define_base_version")" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""define_base_version"" " string_content ") ))) ;) })) (expression_statement "lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);" (assignment_expression "lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10)" identifier = (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" ( (binary_expression "PTR_DAT_003be6b0 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" if (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) (compound_statement "{\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" { (expression_statement "lVar6 = *(long *)(lVar8 + 0x2b30);" (assignment_expression "lVar6 = *(long *)(lVar8 + 0x2b30)" identifier = (pointer_expression "*(long *)(lVar8 + 0x2b30)" * (cast_expression "(long *)(lVar8 + 0x2b30)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x2b30)" ( (binary_expression "lVar8 + 0x2b30" identifier + number_literal) ))))) ;) (if_statement "if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }" { (expression_statement "lVar6 = *(long *)(lVar8 + 0x4058);" (assignment_expression "lVar6 = *(long *)(lVar8 + 0x4058)" identifier = (pointer_expression "*(long *)(lVar8 + 0x4058)" * (cast_expression "(long *)(lVar8 + 0x4058)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x4058)" ( (binary_expression "lVar8 + 0x4058" identifier + number_literal) ))))) ;) })) (expression_statement "uVar2 = FUN_0021bf40(param_2,lVar6,0,0);" (assignment_expression "uVar2 = FUN_0021bf40(param_2,lVar6,0,0)" identifier = (call_expression "FUN_0021bf40(param_2,lVar6,0,0)" identifier (argument_list "(param_2,lVar6,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_50 = (long *)0x0;" (assignment_expression "local_50 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "puVar3 = (undefined8 *)FUN_00275550(0x38);" (assignment_expression "puVar3 = (undefined8 *)FUN_00275550(0x38)" identifier = (cast_expression "(undefined8 *)FUN_00275550(0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(0x38)" identifier (argument_list "(0x38)" ( number_literal ))))) ;) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar3 + 1)" * (cast_expression "(undefined4 *)(puVar3 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar3[2] = uVar2;" (assignment_expression "puVar3[2] = uVar2" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*puVar3 = &PTR_FUN_003ae940;" (assignment_expression "*puVar3 = &PTR_FUN_003ae940" (pointer_expression "*puVar3" * identifier) = (pointer_expression "&PTR_FUN_003ae940" & identifier)) ;) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar8 = (long)local_50 - (long)local_58;" (assignment_expression "lVar8 = (long)local_50 - (long)local_58" identifier = (binary_expression "(long)local_50 - (long)local_58" (cast_expression "(long)local_50" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" if (parenthesized_expression "(lVar8 >> 5 == 0)" ( (binary_expression "lVar8 >> 5 == 0" (binary_expression "lVar8 >> 5" identifier >> number_literal) == number_literal) )) (compound_statement "{\n      plVar4 = (long *)0x0;\n    }" { (expression_statement "plVar4 = (long *)0x0;" (assignment_expression "plVar4 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" else (compound_statement "{\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" { (if_statement "if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }" if (parenthesized_expression "(0x7ffffffffffffff < (ulong)(lVar8 >> 5))" ( (binary_expression "0x7ffffffffffffff < (ulong)(lVar8 >> 5)" number_literal < (call_expression "(ulong)(lVar8 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(lVar8 >> 5)" ( (binary_expression "lVar8 >> 5" identifier >> number_literal) )))) )) (compound_statement "{\n                    \n                    \n        FUN_002b54d0();\n      }" { (expression_statement "FUN_002b54d0();" (call_expression "FUN_002b54d0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "plVar4 = (long *)FUN_00275550(lVar8);" (assignment_expression "plVar4 = (long *)FUN_00275550(lVar8)" identifier = (cast_expression "(long *)FUN_00275550(lVar8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00275550(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))))) ;) }))) (expression_statement "plVar5 = local_50;" (assignment_expression "plVar5 = local_50" identifier = identifier) ;) (expression_statement "puVar3[3] = plVar4;" (assignment_expression "puVar3[3] = plVar4" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = plVar4;" (assignment_expression "puVar3[4] = plVar4" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[5] = lVar8 + (long)plVar4;" (assignment_expression "puVar3[5] = lVar8 + (long)plVar4" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = (binary_expression "lVar8 + (long)plVar4" identifier + (cast_expression "(long)plVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "plVar7 = local_58;" (assignment_expression "plVar7 = local_58" identifier = identifier) ;) (expression_statement "local_60 = puVar3;" (assignment_expression "local_60 = puVar3" identifier = identifier) ;) (if_statement "if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" if (parenthesized_expression "(local_58 == local_50)" ( (binary_expression "local_58 == local_50" identifier == identifier) )) (compound_statement "{\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }" { (expression_statement "*(undefined4 *)(puVar3 + 6) = 0x1000001;" (assignment_expression "*(undefined4 *)(puVar3 + 6) = 0x1000001" (pointer_expression "*(undefined4 *)(puVar3 + 6)" * (cast_expression "(undefined4 *)(puVar3 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 6)" ( (binary_expression "puVar3 + 6" identifier + number_literal) )))) = number_literal) ;) (expression_statement "plVar4 = local_50;" (assignment_expression "plVar4 = local_50" identifier = identifier) ;) }) (else_clause "else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" else (compound_statement "{\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" { (do_statement "do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);" do (compound_statement "{\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      }" { (expression_statement "*plVar4 = (long)(plVar4 + 2);" (assignment_expression "*plVar4 = (long)(plVar4 + 2)" (pointer_expression "*plVar4" * identifier) = (cast_expression "(long)(plVar4 + 2)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(plVar4 + 2)" ( (binary_expression "plVar4 + 2" identifier + number_literal) )))) ;) (expression_statement "FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);" (call_expression "FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7)" identifier (argument_list "(plVar4,*plVar7,plVar7[1] + *plVar7)" ( identifier , (pointer_expression "*plVar7" * identifier) , (binary_expression "plVar7[1] + *plVar7" (subscript_expression "plVar7[1]" identifier [ number_literal ]) + (pointer_expression "*plVar7" * identifier)) ))) ;) (expression_statement "plVar1 = local_50;" (assignment_expression "plVar1 = local_50" identifier = identifier) ;) (expression_statement "plVar7 = plVar7 + 4;" (assignment_expression "plVar7 = plVar7 + 4" identifier = (binary_expression "plVar7 + 4" identifier + number_literal)) ;) (expression_statement "plVar4 = plVar4 + 4;" (assignment_expression "plVar4 = plVar4 + 4" identifier = (binary_expression "plVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar5 != plVar7)" ( (binary_expression "plVar5 != plVar7" identifier != identifier) )) ;) (expression_statement "puVar3[4] = plVar4;" (assignment_expression "puVar3[4] = plVar4" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(puVar3 + 6) = 0x1000001;" (assignment_expression "*(undefined4 *)(puVar3 + 6) = 0x1000001" (pointer_expression "*(undefined4 *)(puVar3 + 6)" * (cast_expression "(undefined4 *)(puVar3 + 6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 6)" ( (binary_expression "puVar3 + 6" identifier + number_literal) )))) = number_literal) ;) (for_statement "for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }" for ( (assignment_expression "plVar5 = local_58" identifier = identifier) ; (comma_expression "plVar4 = local_58, plVar5 != plVar1" (assignment_expression "plVar4 = local_58" identifier = identifier) , (binary_expression "plVar5 != plVar1" identifier != identifier)) ; (assignment_expression "plVar5 = plVar5 + 4" identifier = (binary_expression "plVar5 + 4" identifier + number_literal)) ) (compound_statement "{\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }" { (if_statement "if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }" if (parenthesized_expression "((long *)*plVar5 != plVar5 + 2)" ( (binary_expression "(long *)*plVar5 != plVar5 + 2" (cast_expression "(long *)*plVar5" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar5" * identifier)) != (binary_expression "plVar5 + 2" identifier + number_literal)) )) (compound_statement "{\n          FUN_00276d20();\n        }" { (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" identifier (argument_list "()" ( ))) ;) })) })) }))) (if_statement "if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }" if (parenthesized_expression "(plVar4 != (long *)0x0)" ( (binary_expression "plVar4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      FUN_00276d20(plVar4);\n    }" { (expression_statement "FUN_00276d20(plVar4);" (call_expression "FUN_00276d20(plVar4)" identifier (argument_list "(plVar4)" ( identifier ))) ;) })) (expression_statement "puVar3 = (undefined8 *)param_1[1];" (assignment_expression "puVar3 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" if (parenthesized_expression "(puVar3 == (undefined8 *)param_1[2])" ( (binary_expression "puVar3 == (undefined8 *)param_1[2]" identifier == (cast_expression "(undefined8 *)param_1[2]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }" { (expression_statement "FUN_00242fa0(param_1,puVar3,&local_60);" (call_expression "FUN_00242fa0(param_1,puVar3,&local_60)" identifier (argument_list "(param_1,puVar3,&local_60)" ( identifier , identifier , (pointer_expression "&local_60" & identifier) ))) ;) }) (else_clause "else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" else (compound_statement "{\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" { (expression_statement "*puVar3 = local_60;" (assignment_expression "*puVar3 = local_60" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "param_1[1] = (long)(puVar3 + 1);" (assignment_expression "param_1[1] = (long)(puVar3 + 1)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar3 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar3 + 1)" ( (binary_expression "puVar3 + 1" identifier + number_literal) )))) ;) }))) (expression_statement "*(undefined1 *)(param_1 + 0xf) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xf) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xf)" * (cast_expression "(undefined1 *)(param_1 + 0xf)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf)" ( (binary_expression "param_1 + 0xf" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0016cdf0("../../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 ") ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + (pointer_expression * IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (for_statement for ( (assignment_expression IDENT = IDENT) ; (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "void FUN_00240290(long *param_1,undefined8 param_2)\n\n{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}" (primitive_type "void") (function_declarator "FUN_00240290(long *param_1,undefined8 param_2)" (identifier "FUN_00240290") (parameter_list "(long *param_1,undefined8 param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")"))) (compound_statement "{\n  long *plVar1;\n  undefined8 uVar2;\n  undefined8 *puVar3;\n  long *plVar4;\n  long *plVar5;\n  long lVar6;\n  long *plVar7;\n  long lVar8;\n  undefined8 *local_60;\n  long *local_58;\n  long *local_50;\n  undefined8 local_48;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }\n  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);\n  if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n                    \n  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 *puVar3;" (type_identifier "undefined8") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "long *plVar4;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar4" (* "*") (identifier "plVar4")) (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 *local_60;" (type_identifier "undefined8") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "long *local_58;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "long *local_50;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (if_statement "if (*param_1 != param_1[1]) {\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" (if "if") (parenthesized_expression "(*param_1 != param_1[1])" (( "(") (binary_expression "*param_1 != param_1[1]" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (!= "!=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n                    \n    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");\n  }" ({ "{") (expression_statement "FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");" (call_expression "FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/dynobj.cc",0x5d5,"define_base_version")" (( "(") (string_literal ""../../gold/dynobj.cc"" (" """) (string_content "../../gold/dynobj.cc") (" """)) (, ",") (number_literal "0x5d5") (, ",") (string_literal ""define_base_version"" (" """) (string_content "define_base_version") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);" (assignment_expression "lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(PTR_DAT_003be6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_003be6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_003be6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_003be6b0 + 0x10" (identifier "PTR_DAT_003be6b0") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (lVar8 != 0) {\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" (if "if") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    lVar6 = *(long *)(lVar8 + 0x2b30);\n    if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }\n    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);\n    local_58 = (long *)0x0;\n    local_50 = (long *)0x0;\n    local_48 = 0;\n                    \n    puVar3 = (undefined8 *)FUN_00275550(0x38);\n    *(undefined4 *)(puVar3 + 1) = 0xffffffff;\n    puVar3[2] = uVar2;\n    *puVar3 = &PTR_FUN_003ae940;\n    puVar3[3] = 0;\n    lVar8 = (long)local_50 - (long)local_58;\n    puVar3[4] = 0;\n    puVar3[5] = 0;\n    if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }\n    plVar5 = local_50;\n    puVar3[3] = plVar4;\n    puVar3[4] = plVar4;\n    puVar3[5] = lVar8 + (long)plVar4;\n    plVar7 = local_58;\n    local_60 = puVar3;\n    if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }\n    if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }\n    puVar3 = (undefined8 *)param_1[1];\n    if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" ({ "{") (expression_statement "lVar6 = *(long *)(lVar8 + 0x2b30);" (assignment_expression "lVar6 = *(long *)(lVar8 + 0x2b30)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar8 + 0x2b30)" (* "*") (cast_expression "(long *)(lVar8 + 0x2b30)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x2b30)" (( "(") (binary_expression "lVar8 + 0x2b30" (identifier "lVar8") (+ "+") (number_literal "0x2b30")) () ")"))))) (; ";")) (if_statement "if (lVar6 == 0) {\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      lVar6 = *(long *)(lVar8 + 0x4058);\n    }" ({ "{") (expression_statement "lVar6 = *(long *)(lVar8 + 0x4058);" (assignment_expression "lVar6 = *(long *)(lVar8 + 0x4058)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(lVar8 + 0x4058)" (* "*") (cast_expression "(long *)(lVar8 + 0x4058)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x4058)" (( "(") (binary_expression "lVar8 + 0x4058" (identifier "lVar8") (+ "+") (number_literal "0x4058")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_0021bf40(param_2,lVar6,0,0);" (assignment_expression "uVar2 = FUN_0021bf40(param_2,lVar6,0,0)" (identifier "uVar2") (= "=") (call_expression "FUN_0021bf40(param_2,lVar6,0,0)" (identifier "FUN_0021bf40") (argument_list "(param_2,lVar6,0,0)" (( "(") (identifier "param_2") (, ",") (identifier "lVar6") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" (identifier "local_58") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_50 = (long *)0x0;" (assignment_expression "local_50 = (long *)0x0" (identifier "local_50") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3 = (undefined8 *)FUN_00275550(0x38);" (assignment_expression "puVar3 = (undefined8 *)FUN_00275550(0x38)" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)FUN_00275550(0x38)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(0x38)" (identifier "FUN_00275550") (argument_list "(0x38)" (( "(") (number_literal "0x38") () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 1) = 0xffffffff;" (assignment_expression "*(undefined4 *)(puVar3 + 1) = 0xffffffff" (pointer_expression "*(undefined4 *)(puVar3 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar3[2] = uVar2;" (assignment_expression "puVar3[2] = uVar2" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "*puVar3 = &PTR_FUN_003ae940;" (assignment_expression "*puVar3 = &PTR_FUN_003ae940" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (pointer_expression "&PTR_FUN_003ae940" (& "&") (identifier "PTR_FUN_003ae940"))) (; ";")) (expression_statement "puVar3[3] = 0;" (assignment_expression "puVar3[3] = 0" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar8 = (long)local_50 - (long)local_58;" (assignment_expression "lVar8 = (long)local_50 - (long)local_58" (identifier "lVar8") (= "=") (binary_expression "(long)local_50 - (long)local_58" (cast_expression "(long)local_50" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_50")) (- "-") (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58")))) (; ";")) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar3[5] = 0;" (assignment_expression "puVar3[5] = 0" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar8 >> 5 == 0) {\n      plVar4 = (long *)0x0;\n    }\n    else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" (if "if") (parenthesized_expression "(lVar8 >> 5 == 0)" (( "(") (binary_expression "lVar8 >> 5 == 0" (binary_expression "lVar8 >> 5" (identifier "lVar8") (>> ">>") (number_literal "5")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      plVar4 = (long *)0x0;\n    }" ({ "{") (expression_statement "plVar4 = (long *)0x0;" (assignment_expression "plVar4 = (long *)0x0" (identifier "plVar4") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" (else "else") (compound_statement "{\n      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }\n                    \n      plVar4 = (long *)FUN_00275550(lVar8);\n    }" ({ "{") (if_statement "if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {\n                    \n                    \n        FUN_002b54d0();\n      }" (if "if") (parenthesized_expression "(0x7ffffffffffffff < (ulong)(lVar8 >> 5))" (( "(") (binary_expression "0x7ffffffffffffff < (ulong)(lVar8 >> 5)" (number_literal "0x7ffffffffffffff") (< "<") (call_expression "(ulong)(lVar8 >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(lVar8 >> 5)" (( "(") (binary_expression "lVar8 >> 5" (identifier "lVar8") (>> ">>") (number_literal "5")) () ")")))) () ")")) (compound_statement "{\n                    \n                    \n        FUN_002b54d0();\n      }" ({ "{") (expression_statement "FUN_002b54d0();" (call_expression "FUN_002b54d0()" (identifier "FUN_002b54d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "plVar4 = (long *)FUN_00275550(lVar8);" (assignment_expression "plVar4 = (long *)FUN_00275550(lVar8)" (identifier "plVar4") (= "=") (cast_expression "(long *)FUN_00275550(lVar8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00275550(lVar8)" (identifier "FUN_00275550") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))))) (; ";")) (} "}")))) (expression_statement "plVar5 = local_50;" (assignment_expression "plVar5 = local_50" (identifier "plVar5") (= "=") (identifier "local_50")) (; ";")) (expression_statement "puVar3[3] = plVar4;" (assignment_expression "puVar3[3] = plVar4" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "plVar4")) (; ";")) (expression_statement "puVar3[4] = plVar4;" (assignment_expression "puVar3[4] = plVar4" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "plVar4")) (; ";")) (expression_statement "puVar3[5] = lVar8 + (long)plVar4;" (assignment_expression "puVar3[5] = lVar8 + (long)plVar4" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "lVar8 + (long)plVar4" (identifier "lVar8") (+ "+") (cast_expression "(long)plVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar4")))) (; ";")) (expression_statement "plVar7 = local_58;" (assignment_expression "plVar7 = local_58" (identifier "plVar7") (= "=") (identifier "local_58")) (; ";")) (expression_statement "local_60 = puVar3;" (assignment_expression "local_60 = puVar3" (identifier "local_60") (= "=") (identifier "puVar3")) (; ";")) (if_statement "if (local_58 == local_50) {\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }\n    else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" (if "if") (parenthesized_expression "(local_58 == local_50)" (( "(") (binary_expression "local_58 == local_50" (identifier "local_58") (== "==") (identifier "local_50")) () ")")) (compound_statement "{\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      plVar4 = local_50;\n    }" ({ "{") (expression_statement "*(undefined4 *)(puVar3 + 6) = 0x1000001;" (assignment_expression "*(undefined4 *)(puVar3 + 6) = 0x1000001" (pointer_expression "*(undefined4 *)(puVar3 + 6)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 6)" (( "(") (binary_expression "puVar3 + 6" (identifier "puVar3") (+ "+") (number_literal "6")) () ")")))) (= "=") (number_literal "0x1000001")) (; ";")) (expression_statement "plVar4 = local_50;" (assignment_expression "plVar4 = local_50" (identifier "plVar4") (= "=") (identifier "local_50")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" (else "else") (compound_statement "{\n      do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);\n      puVar3[4] = plVar4;\n      *(undefined4 *)(puVar3 + 6) = 0x1000001;\n      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }\n    }" ({ "{") (do_statement "do {\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      } while (plVar5 != plVar7);" (do "do") (compound_statement "{\n        *plVar4 = (long)(plVar4 + 2);\n                    \n        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);\n        plVar1 = local_50;\n        plVar7 = plVar7 + 4;\n        plVar4 = plVar4 + 4;\n      }" ({ "{") (expression_statement "*plVar4 = (long)(plVar4 + 2);" (assignment_expression "*plVar4 = (long)(plVar4 + 2)" (pointer_expression "*plVar4" (* "*") (identifier "plVar4")) (= "=") (cast_expression "(long)(plVar4 + 2)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(plVar4 + 2)" (( "(") (binary_expression "plVar4 + 2" (identifier "plVar4") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);" (call_expression "FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7)" (identifier "FUN_0015d030") (argument_list "(plVar4,*plVar7,plVar7[1] + *plVar7)" (( "(") (identifier "plVar4") (, ",") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")) (, ",") (binary_expression "plVar7[1] + *plVar7" (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*plVar7" (* "*") (identifier "plVar7"))) () ")"))) (; ";")) (expression_statement "plVar1 = local_50;" (assignment_expression "plVar1 = local_50" (identifier "plVar1") (= "=") (identifier "local_50")) (; ";")) (expression_statement "plVar7 = plVar7 + 4;" (assignment_expression "plVar7 = plVar7 + 4" (identifier "plVar7") (= "=") (binary_expression "plVar7 + 4" (identifier "plVar7") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "plVar4 = plVar4 + 4;" (assignment_expression "plVar4 = plVar4 + 4" (identifier "plVar4") (= "=") (binary_expression "plVar4 + 4" (identifier "plVar4") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar5 != plVar7)" (( "(") (binary_expression "plVar5 != plVar7" (identifier "plVar5") (!= "!=") (identifier "plVar7")) () ")")) (; ";")) (expression_statement "puVar3[4] = plVar4;" (assignment_expression "puVar3[4] = plVar4" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "plVar4")) (; ";")) (expression_statement "*(undefined4 *)(puVar3 + 6) = 0x1000001;" (assignment_expression "*(undefined4 *)(puVar3 + 6) = 0x1000001" (pointer_expression "*(undefined4 *)(puVar3 + 6)" (* "*") (cast_expression "(undefined4 *)(puVar3 + 6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 6)" (( "(") (binary_expression "puVar3 + 6" (identifier "puVar3") (+ "+") (number_literal "6")) () ")")))) (= "=") (number_literal "0x1000001")) (; ";")) (for_statement "for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }" (for "for") (( "(") (assignment_expression "plVar5 = local_58" (identifier "plVar5") (= "=") (identifier "local_58")) (; ";") (comma_expression "plVar4 = local_58, plVar5 != plVar1" (assignment_expression "plVar4 = local_58" (identifier "plVar4") (= "=") (identifier "local_58")) (, ",") (binary_expression "plVar5 != plVar1" (identifier "plVar5") (!= "!=") (identifier "plVar1"))) (; ";") (assignment_expression "plVar5 = plVar5 + 4" (identifier "plVar5") (= "=") (binary_expression "plVar5 + 4" (identifier "plVar5") (+ "+") (number_literal "4"))) () ")") (compound_statement "{\n        if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }\n      }" ({ "{") (if_statement "if ((long *)*plVar5 != plVar5 + 2) {\n          FUN_00276d20();\n        }" (if "if") (parenthesized_expression "((long *)*plVar5 != plVar5 + 2)" (( "(") (binary_expression "(long *)*plVar5 != plVar5 + 2" (cast_expression "(long *)*plVar5" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar5" (* "*") (identifier "plVar5"))) (!= "!=") (binary_expression "plVar5 + 2" (identifier "plVar5") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n          FUN_00276d20();\n        }" ({ "{") (expression_statement "FUN_00276d20();" (call_expression "FUN_00276d20()" (identifier "FUN_00276d20") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (if_statement "if (plVar4 != (long *)0x0) {\n      FUN_00276d20(plVar4);\n    }" (if "if") (parenthesized_expression "(plVar4 != (long *)0x0)" (( "(") (binary_expression "plVar4 != (long *)0x0" (identifier "plVar4") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      FUN_00276d20(plVar4);\n    }" ({ "{") (expression_statement "FUN_00276d20(plVar4);" (call_expression "FUN_00276d20(plVar4)" (identifier "FUN_00276d20") (argument_list "(plVar4)" (( "(") (identifier "plVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar3 = (undefined8 *)param_1[1];" (assignment_expression "puVar3 = (undefined8 *)param_1[1]" (identifier "puVar3") (= "=") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (puVar3 == (undefined8 *)param_1[2]) {\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }\n    else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" (if "if") (parenthesized_expression "(puVar3 == (undefined8 *)param_1[2])" (( "(") (binary_expression "puVar3 == (undefined8 *)param_1[2]" (identifier "puVar3") (== "==") (cast_expression "(undefined8 *)param_1[2]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n      FUN_00242fa0(param_1,puVar3,&local_60);\n    }" ({ "{") (expression_statement "FUN_00242fa0(param_1,puVar3,&local_60);" (call_expression "FUN_00242fa0(param_1,puVar3,&local_60)" (identifier "FUN_00242fa0") (argument_list "(param_1,puVar3,&local_60)" (( "(") (identifier "param_1") (, ",") (identifier "puVar3") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" (else "else") (compound_statement "{\n      *puVar3 = local_60;\n      param_1[1] = (long)(puVar3 + 1);\n    }" ({ "{") (expression_statement "*puVar3 = local_60;" (assignment_expression "*puVar3 = local_60" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "local_60")) (; ";")) (expression_statement "param_1[1] = (long)(puVar3 + 1);" (assignment_expression "param_1[1] = (long)(puVar3 + 1)" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)(puVar3 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(puVar3 + 1)" (( "(") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (expression_statement "*(undefined1 *)(param_1 + 0xf) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0xf) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0xf)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0xf)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf)" (( "(") (binary_expression "param_1 + 0xf" (identifier "param_1") (+ "+") (number_literal "0xf")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0016cdf0("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0016cdf0") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void define_base_version(Versions * this, Stringpool * dynpool) */

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

{
  type_3 *var_7;
  type_4 __position;
  long *var_20;
  char *var_8;
  type_5 *pVVar4;
  basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3> *var_18;
  long *var_19;
  long *var_17;
  type_6 var_13;
  type_5 *vdbase;
  long *var_14;
  long *var_15;
  type_7 local_48;
  
  if ((this->defs_).super__Vector_base<var_4::type_5*,var_5::var_1<var_4::type_5*>var_3>._M_impl.
      _M_start !=
      (this->defs_).super__Vector_base<var_4::type_5*,var_5::var_1<var_4::type_5*>var_3>._M_impl.
      _M_finish) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/dynobj.cc",0x5d5,"define_base_version");
  }
  var_7 = parameters->options_;
  if (var_7 != (type_3 *)0x0) {
    var_8 = (var_7->soname_).value;
    if (var_8 == (char *)0x0) {
      var_8 = (var_7->output_).value;
    }
    var_8 = var_9<var_2>::var_10(dynpool,var_8,false,(type_8 *)0x0);
    var_14 = (long *)0x0;
    var_15 = (long *)0x0;
    local_48 = 0;
                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */
    pVVar4 = (type_5 *)var_11(0x38);
    (pVVar4->super_Version_base).index_ = 0xffffffff;
    pVVar4->name_ = var_8;
    (pVVar4->super_Version_base)._vptr_Version_base = (type_9 **)&PTR__Verdef_003ae940;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>,var_5::var_1<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_start = (type_10)0x0;
    var_13 = (long)var_15 - (long)var_14;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>,var_5::var_1<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_finish = (type_10)0x0;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>,var_5::var_1<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_end_of_storage = (type_10)0x0;
    if ((long)var_13 >> 5 == 0) {
      var_18 = (basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3> *)0x0;
    }
    else {
      if (0x7ffffffffffffff < (type_6)((long)var_13 >> 5)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */
        std::var_12();
      }
                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */
      var_18 = (basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3> *)
               var_11(var_13);
    }
    var_19 = var_15;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>,var_5::var_1<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_start = var_18;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>,var_5::var_1<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_finish = var_18;
    (pVVar4->deps_).
    super__Vector_base<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>,var_5::var_1<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>var_3>var_3>
    ._M_impl._M_end_of_storage = (type_10)(var_13 + (long)var_18);
    var_17 = var_14;
    vdbase = pVVar4;
    if (var_14 == var_15) {
      pVVar4->is_base_ = true;
      pVVar4->is_weak_ = false;
      pVVar4->is_info_ = false;
      pVVar4->is_symbol_created_ = true;
    }
    else {
      do {
        (var_18->_M_dataplus)._M_p = (type_10)&var_18->field_2;
                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */
        std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>::
        var_16<var_2*>(var_18,*var_17,var_17[1] + *var_17);
        var_20 = var_15;
        var_17 = var_17 + 4;
        var_18 = var_18 + 1;
      } while (var_19 != var_17);
      (pVVar4->deps_).
      super__Vector_base<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>,var_5::var_1<std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>var_3>var_3>
      ._M_impl._M_finish = var_18;
      pVVar4->is_base_ = true;
      pVVar4->is_weak_ = false;
      pVVar4->is_info_ = false;
      pVVar4->is_symbol_created_ = true;
      for (var_17 = var_14; var_19 = var_14, var_17 != var_20; var_17 = var_17 + 4) {
        if ((long *)*var_17 != var_17 + 2) {
          var_21((long *)*var_17);
        }
      }
    }
    if (var_19 != (long *)0x0) {
      var_21(var_19);
    }
    __position._M_current =
         (this->defs_).super__Vector_base<var_4::type_5*,var_5::var_1<var_4::type_5*>var_3>._M_impl.
         _M_finish;
    if (__position._M_current ==
        (this->defs_).super__Vector_base<var_4::type_5*,var_5::var_1<var_4::type_5*>var_3>._M_impl.
        _M_end_of_storage) {
      std::vector<var_4::type_5*,var_5::var_1<var_4::type_5*>var_3>::
      _M_realloc_insert<var_4::type_5*var_22&>(&this->defs_,__position,&vdbase);
    }
    else {
      *__position._M_current = vdbase;
      (this->defs_).super__Vector_base<var_4::type_5*,var_5::var_1<var_4::type_5*>var_3>._M_impl.
      _M_finish = __position._M_current + 1;
    }
    this->needs_base_version_ = false;
    return;
  }
                    /* WARNING: Subroutine does not return */
  var_6("../../gold/parameters.h",0x5c,"options");
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (for_statement initializer: (assignment_expression left: (identifier) right: (identifier)) condition: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))))

void MASKED(long *param_1,undefined8 param_2)

{
  long *plVar1;
  undefined8 uVar2;
  undefined8 *puVar3;
  long *plVar4;
  long *plVar5;
  long lVar6;
  long *plVar7;
  long lVar8;
  undefined8 *local_60;
  long *local_58;
  long *local_50;
  undefined8 local_48;
  
  if (*param_1 != param_1[1]) {
                    /* WARNING: Subroutine does not return */
    FUN_0016cdf0("../../gold/dynobj.cc",0x5d5,"define_base_version");
  }
  lVar8 = *(long *)(PTR_DAT_003be6b0 + 0x10);
  if (lVar8 != 0) {
    lVar6 = *(long *)(lVar8 + 0x2b30);
    if (lVar6 == 0) {
      lVar6 = *(long *)(lVar8 + 0x4058);
    }
    uVar2 = FUN_0021bf40(param_2,lVar6,0,0);
    local_58 = (long *)0x0;
    local_50 = (long *)0x0;
    local_48 = 0;
                    /* try { // try from 00240301 to 00240305 has its CatchHandler @ 002404d0 */
    puVar3 = (undefined8 *)FUN_00275550(0x38);
    *(undefined4 *)(puVar3 + 1) = 0xffffffff;
    puVar3[2] = uVar2;
    *puVar3 = &PTR_FUN_003ae940;
    puVar3[3] = 0;
    lVar8 = (long)local_50 - (long)local_58;
    puVar3[4] = 0;
    puVar3[5] = 0;
    if (lVar8 >> 5 == 0) {
      plVar4 = (long *)0x0;
    }
    else {
      if (0x7ffffffffffffff < (ulong)(lVar8 >> 5)) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 002404be to 002404c2 has its CatchHandler @ 002404c3 */
        FUN_002b54d0();
      }
                    /* try { // try from 0024036a to 0024036e has its CatchHandler @ 002404c3 */
      plVar4 = (long *)FUN_00275550(lVar8);
    }
    plVar5 = local_50;
    puVar3[3] = plVar4;
    puVar3[4] = plVar4;
    puVar3[5] = lVar8 + (long)plVar4;
    plVar7 = local_58;
    local_60 = puVar3;
    if (local_58 == local_50) {
      *(undefined4 *)(puVar3 + 6) = 0x1000001;
      plVar4 = local_50;
    }
    else {
      do {
        *plVar4 = (long)(plVar4 + 2);
                    /* try { // try from 002403b6 to 002403ba has its CatchHandler @ 002404cb */
        FUN_0015d030(plVar4,*plVar7,plVar7[1] + *plVar7);
        plVar1 = local_50;
        plVar7 = plVar7 + 4;
        plVar4 = plVar4 + 4;
      } while (plVar5 != plVar7);
      puVar3[4] = plVar4;
      *(undefined4 *)(puVar3 + 6) = 0x1000001;
      for (plVar5 = local_58; plVar4 = local_58, plVar5 != plVar1; plVar5 = plVar5 + 4) {
        if ((long *)*plVar5 != plVar5 + 2) {
          FUN_00276d20();
        }
      }
    }
    if (plVar4 != (long *)0x0) {
      FUN_00276d20(plVar4);
    }
    puVar3 = (undefined8 *)param_1[1];
    if (puVar3 == (undefined8 *)param_1[2]) {
      FUN_00242fa0(param_1,puVar3,&local_60);
    }
    else {
      *puVar3 = local_60;
      param_1[1] = (long)(puVar3 + 1);
    }
    *(undefined1 *)(param_1 + 0xf) = 0;
    return;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0016cdf0("../../gold/parameters.h",0x5c,"options");
}

