
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void define_base_version(Versions * this, Stringpool * dynpool) */

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

{
  General_options *pGVar1;
  iterator __position;
  int *piVar2;
  char *pcVar3;
  Verdef *pVVar4;
  uint uVar5;
  uint uVar6;
  int *piVar7;
  int *piVar8;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_38;
  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_34;
  Verdef *vdbase;
  int *local_28;
  int *local_24;
  undefined4 local_20;
  
  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) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  pcVar3 = (pGVar1->soname_).value;
  if (pcVar3 == (char *)0x0) {
    pcVar3 = (pGVar1->output_).value;
  }
  pcVar3 = Stringpool_template<char>::add(dynpool,pcVar3,false,(Key *)0x0);
  local_28 = (int *)0x0;
  local_24 = (int *)0x0;
  local_20 = 0;
                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */
  pVVar4 = (Verdef *)operator_new(0x1c);
  (pVVar4->super_Version_base).index_ = 0xffffffff;
  pVVar4->name_ = pcVar3;
  (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;
  (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_00385c60;
  uVar5 = (int)local_24 - (int)local_28;
  (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;
  uVar6 = ((int)uVar5 >> 3) * -0x55555555;
  (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 (uVar6 == 0) {
    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;
  }
  else {
    if (0xaaaaaaa < uVar6) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */
      std::__throw_bad_alloc();
    }
                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */
    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)
               operator_new(uVar5);
  }
  piVar8 = local_24;
  (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 = local_38;
  (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 = local_38;
  (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)(uVar5 + (int)local_38);
  vdbase = pVVar4;
  if (local_28 == local_24) {
    pVVar4->is_base_ = true;
    pVVar4->is_weak_ = false;
    pVVar4->is_info_ = false;
    pVVar4->is_symbol_created_ = true;
  }
  else {
    local_34 = local_38;
    piVar7 = local_28;
    do {
      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;
                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */
      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::
      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);
      piVar2 = local_24;
      piVar7 = piVar7 + 6;
      local_34 = local_34 + 1;
    } while (piVar8 != piVar7);
    pVVar4->is_base_ = true;
    pVVar4->is_weak_ = false;
    pVVar4->is_info_ = false;
    pVVar4->is_symbol_created_ = true;
    (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 = local_34;
    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {
      if ((int *)*piVar7 != piVar7 + 2) {
        operator_delete((int *)*piVar7);
      }
    }
  }
  if (piVar8 != (int *)0x0) {
    operator_delete(piVar8);
  }
  __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) {
    *__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;
  }
  std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::
  _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);
  this->needs_base_version_ = false;
  return;
}



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

void FUN_001a3740(int *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  uint uVar6;
  undefined4 in_ECX;
  int *piVar7;
  int *piVar8;
  int *local_38;
  int *local_34;
  undefined4 *local_2c;
  int *local_28;
  int *local_24;
  undefined4 local_20;
  
  if (*param_1 != param_1[1]) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);
  }
  iVar5 = *(int *)(DAT_0038f378 + 8);
  if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);
  }
  iVar2 = *(int *)(iVar5 + 0x1aa4);
  if (iVar2 == 0) {
    iVar2 = *(int *)(iVar5 + 0x27a8);
  }
  uVar3 = FUN_00174930(param_2,iVar2,0,0);
  local_28 = (int *)0x0;
  local_24 = (int *)0x0;
  local_20 = 0;
                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */
  puVar4 = (undefined4 *)FUN_001e5200(0x1c);
  puVar4[1] = 0xffffffff;
  puVar4[2] = uVar3;
  puVar4[3] = 0;
  *puVar4 = &PTR_FUN_00385c60;
  iVar5 = (int)local_24 - (int)local_28;
  puVar4[4] = 0;
  uVar6 = (iVar5 >> 3) * -0x55555555;
  puVar4[5] = 0;
  if (uVar6 == 0) {
    local_38 = (int *)0x0;
  }
  else {
    if (0xaaaaaaa < uVar6) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */
      FUN_0022c5f0();
    }
                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */
    local_38 = (int *)FUN_001e5200(iVar5);
  }
  piVar8 = local_24;
  puVar4[3] = local_38;
  puVar4[4] = local_38;
  puVar4[5] = iVar5 + (int)local_38;
  local_2c = puVar4;
  if (local_28 == local_24) {
    puVar4[6] = 0x1000001;
  }
  else {
    local_34 = local_38;
    piVar7 = local_28;
    do {
      *local_34 = (int)(local_34 + 2);
                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */
      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);
      piVar1 = local_24;
      piVar7 = piVar7 + 6;
      local_34 = local_34 + 6;
    } while (piVar8 != piVar7);
    puVar4[6] = 0x1000001;
    puVar4[4] = local_34;
    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {
      if ((int *)*piVar7 != piVar7 + 2) {
        FUN_001e6db0((int *)*piVar7);
      }
    }
  }
  if (piVar8 != (int *)0x0) {
    FUN_001e6db0(piVar8);
  }
  puVar4 = (undefined4 *)param_1[1];
  if (puVar4 != (undefined4 *)param_1[2]) {
    *puVar4 = local_2c;
    param_1[1] = (int)(puVar4 + 1);
    *(undefined1 *)(param_1 + 0xf) = 0;
    return;
  }
  FUN_001a8340(param_1,puVar4,&local_2c);
  *(undefined1 *)(param_1 + 0xf) = 0;
  return;
}


CALL 0x000559e6
ADD EAX,0x1eb8bb
PUSH EBP
MOV EBP,ESP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x2c
MOV dword ptr [EBP + -0x2c],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV EBX,dword ptr [EAX + 0x4]
CMP dword ptr [EAX],EBX
JNZ 0x001a3957
MOV EAX,dword ptr [EBP + -0x2c]
LEA EAX,[EAX + 0x378]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [EAX + 0x8]
TEST EDX,EDX
JZ 0x001a3973
MOV EAX,dword ptr [EDX + 0x1aa4]
TEST EAX,EAX
JZ 0x001a3900
PUSH 0x0
MOV EDI,dword ptr [EBP + -0x2c]
PUSH 0x0
PUSH EAX
MOV EBX,EDI
PUSH dword ptr [EBP + 0xc]
CALL 0x00174930
MOV dword ptr [EBP + -0x24],0x0
MOV ESI,EAX
MOV dword ptr [EBP + -0x20],0x0
MOV dword ptr [EBP + -0x1c],0x0
MOV dword ptr [ESP],0x1c
MOV dword ptr [EBP + -0x2c],EDI
CALL 0x001e5200
MOV EDI,EAX
MOV dword ptr [EAX + 0x4],0xffffffff
MOV EAX,dword ptr [EBP + -0x2c]
ADD ESP,0x10
MOV dword ptr [EDI + 0x8],ESI
MOV ESI,dword ptr [EBP + -0x20]
LEA EAX,[EAX + 0xffff6c60]
MOV EBX,dword ptr [EBP + -0x24]
MOV dword ptr [EDI + 0xc],0x0
MOV dword ptr [EDI],EAX
MOV EAX,ESI
SUB EAX,EBX
MOV dword ptr [EDI + 0x10],0x0
MOV dword ptr [EBP + -0x30],EAX
SAR EAX,0x3
IMUL EAX,EAX,-0x55555555
MOV dword ptr [EDI + 0x14],0x0
TEST EAX,EAX
JZ 0x001a3910
CMP EAX,0xaaaaaaa
JA 0x001a398c
SUB ESP,0xc
PUSH dword ptr [EBP + -0x30]
MOV EBX,dword ptr [EBP + -0x2c]
CALL 0x001e5200
MOV ESI,dword ptr [EBP + -0x20]
MOV EBX,dword ptr [EBP + -0x24]
MOV dword ptr [EBP + -0x34],EAX
ADD ESP,0x10
MOV EAX,dword ptr [EBP + -0x34]
MOV EDX,dword ptr [EBP + -0x30]
ADD EDX,EAX
MOV dword ptr [EDI + 0xc],EAX
MOV dword ptr [EDI + 0x10],EAX
MOV dword ptr [EDI + 0x14],EDX
CMP EBX,ESI
JZ 0x001a3948
MOV dword ptr [EBP + -0x30],EAX
NOP
MOV ECX,dword ptr [EBP + -0x30]
LEA EAX,[ECX + 0x8]
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [EBX]
PUSH 0x0
MOV EDX,dword ptr [EBX + 0x4]
ADD EDX,EAX
PUSH EDX
PUSH EAX
PUSH ECX
CALL 0x000513a0
ADD EBX,0x18
ADD ESP,0x10
ADD dword ptr [EBP + -0x30],0x18
CMP ESI,EBX
JNZ 0x001a3850
MOV EAX,dword ptr [EBP + -0x30]
MOV EDX,dword ptr [EBP + -0x20]
MOV dword ptr [EBP + -0x28],EDI
MOV ESI,dword ptr [EBP + -0x24]
MOV dword ptr [EDI + 0x18],0x1000001
MOV dword ptr [EDI + 0x10],EAX
CMP ESI,EDX
JZ 0x001a38ba
MOV EDI,EDX
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESI]
LEA ECX,[ESI + 0x8]
CMP EAX,ECX
JZ 0x001a38b0
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x2c]
PUSH EAX
CALL 0x001e6db0
ADD ESP,0x10
ADD ESI,0x18
CMP ESI,EDI
JNZ 0x001a3898
MOV ESI,dword ptr [EBP + -0x24]
TEST ESI,ESI
JZ 0x001a38cd
SUB ESP,0xc
MOV EBX,dword ptr [EBP + -0x2c]
PUSH ESI
CALL 0x001e6db0
ADD ESP,0x10
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,dword ptr [EBP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
CMP EAX,dword ptr [ECX + 0x8]
JZ 0x001a3920
MOV EDX,dword ptr [EBP + -0x28]
ADD EAX,0x4
MOV dword ptr [EAX + -0x4],EDX
MOV dword ptr [ECX + 0x4],EAX
MOV EAX,dword ptr [EBP + 0x8]
MOV byte ptr [EAX + 0x3c],0x0
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [EDX + 0x27a8]
JMP 0x001a3788
MOV dword ptr [EBP + -0x34],0x0
JMP 0x001a3832
SUB ESP,0x4
LEA EDX,[EBP + -0x28]
PUSH EDX
PUSH EAX
PUSH dword ptr [EBP + 0x8]
CALL 0x001a8340
MOV EAX,dword ptr [EBP + 0x8]
ADD ESP,0x10
MOV byte ptr [EAX + 0x3c],0x0
LEA ESP,[EBP + -0xc]
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [EDI + 0x18],0x1000001
MOV dword ptr [EBP + -0x28],EDI
JMP 0x001a38ba
MOV EBX,dword ptr [EBP + -0x2c]
PUSH ECX
LEA EAX,[EBX + 0xfff0f878]
PUSH EAX
LEA EAX,[EBX + 0xfff0f1a2]
PUSH 0x5d5
PUSH EAX
CALL 0x00069d00
MOV EBX,dword ptr [EBP + -0x2c]
PUSH EDX
LEA EAX,[EBX + 0xfff0f978]
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
MOV EBX,dword ptr [EBP + -0x2c]
CALL 0x0022c5f0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nvoid FUN_001a3740(int *param_1,undefined4 param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */\n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}\n\n" comment (function_definition "void FUN_001a3740(int *param_1,undefined4 param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */\n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_001a3740(int *param_1,undefined4 param_2)" identifier (parameter_list "(int *param_1,undefined4 param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */\n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 in_ECX;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (if_statement "if (*param_1 != param_1[1]) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\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_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }" { comment (expression_statement "FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);" (call_expression "FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX)" identifier (argument_list "("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX)" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""define_base_version"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }" { comment (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar2 = *(int *)(iVar5 + 0x1aa4);" (assignment_expression "iVar2 = *(int *)(iVar5 + 0x1aa4)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1aa4)" * (cast_expression "(int *)(iVar5 + 0x1aa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1aa4)" ( (binary_expression "iVar5 + 0x1aa4" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }" { (expression_statement "iVar2 = *(int *)(iVar5 + 0x27a8);" (assignment_expression "iVar2 = *(int *)(iVar5 + 0x27a8)" identifier = (pointer_expression "*(int *)(iVar5 + 0x27a8)" * (cast_expression "(int *)(iVar5 + 0x27a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x27a8)" ( (binary_expression "iVar5 + 0x27a8" identifier + number_literal) ))))) ;) })) (expression_statement "uVar3 = FUN_00174930(param_2,iVar2,0,0);" (assignment_expression "uVar3 = FUN_00174930(param_2,iVar2,0,0)" identifier = (call_expression "FUN_00174930(param_2,iVar2,0,0)" identifier (argument_list "(param_2,iVar2,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "local_28 = (int *)0x0;" (assignment_expression "local_28 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_24 = (int *)0x0;" (assignment_expression "local_24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) comment (expression_statement "puVar4 = (undefined4 *)FUN_001e5200(0x1c);" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200(0x1c)" identifier = (cast_expression "(undefined4 *)FUN_001e5200(0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(0x1c)" identifier (argument_list "(0x1c)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0xffffffff;" (assignment_expression "puVar4[1] = 0xffffffff" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = uVar3;" (assignment_expression "puVar4[2] = uVar3" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR_FUN_00385c60;" (assignment_expression "*puVar4 = &PTR_FUN_00385c60" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00385c60" & identifier)) ;) (expression_statement "iVar5 = (int)local_24 - (int)local_28;" (assignment_expression "iVar5 = (int)local_24 - (int)local_28" identifier = (binary_expression "(int)local_24 - (int)local_28" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = (iVar5 >> 3) * -0x55555555;" (assignment_expression "uVar6 = (iVar5 >> 3) * -0x55555555" identifier = (binary_expression "(iVar5 >> 3) * -0x55555555" (parenthesized_expression "(iVar5 >> 3)" ( (binary_expression "iVar5 >> 3" identifier >> number_literal) )) * number_literal)) ;) (expression_statement "puVar4[5] = 0;" (assignment_expression "puVar4[5] = 0" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    local_38 = (int *)0x0;\n  }" { (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" else (compound_statement "{\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" { (if_statement "if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }" if (parenthesized_expression "(0xaaaaaaa < uVar6)" ( (binary_expression "0xaaaaaaa < uVar6" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      FUN_0022c5f0();\n    }" { comment comment (expression_statement "FUN_0022c5f0();" (call_expression "FUN_0022c5f0()" identifier (argument_list "()" ( ))) ;) })) comment (expression_statement "local_38 = (int *)FUN_001e5200(iVar5);" (assignment_expression "local_38 = (int *)FUN_001e5200(iVar5)" identifier = (cast_expression "(int *)FUN_001e5200(iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))))) ;) }))) (expression_statement "piVar8 = local_24;" (assignment_expression "piVar8 = local_24" identifier = identifier) ;) (expression_statement "puVar4[3] = local_38;" (assignment_expression "puVar4[3] = local_38" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[4] = local_38;" (assignment_expression "puVar4[4] = local_38" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[5] = iVar5 + (int)local_38;" (assignment_expression "puVar4[5] = iVar5 + (int)local_38" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar5 + (int)local_38" identifier + (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_2c = puVar4;" (assignment_expression "local_2c = puVar4" identifier = identifier) ;) (if_statement "if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" if (parenthesized_expression "(local_28 == local_24)" ( (binary_expression "local_28 == local_24" identifier == identifier) )) (compound_statement "{\n    puVar4[6] = 0x1000001;\n  }" { (expression_statement "puVar4[6] = 0x1000001;" (assignment_expression "puVar4[6] = 0x1000001" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" else (compound_statement "{\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" { (expression_statement "local_34 = local_38;" (assignment_expression "local_34 = local_38" identifier = identifier) ;) (expression_statement "piVar7 = local_28;" (assignment_expression "piVar7 = local_28" identifier = identifier) ;) (do_statement "do {\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);" do (compound_statement "{\n      *local_34 = (int)(local_34 + 2);\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    }" { (expression_statement "*local_34 = (int)(local_34 + 2);" (assignment_expression "*local_34 = (int)(local_34 + 2)" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)(local_34 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_34 + 2)" ( (binary_expression "local_34 + 2" identifier + number_literal) )))) ;) comment (expression_statement "FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);" (call_expression "FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0)" identifier (argument_list "(local_34,*piVar7,piVar7[1] + *piVar7,0)" ( identifier , (pointer_expression "*piVar7" * identifier) , (binary_expression "piVar7[1] + *piVar7" (subscript_expression "piVar7[1]" identifier [ number_literal ]) + (pointer_expression "*piVar7" * identifier)) , number_literal ))) ;) (expression_statement "piVar1 = local_24;" (assignment_expression "piVar1 = local_24" identifier = identifier) ;) (expression_statement "piVar7 = piVar7 + 6;" (assignment_expression "piVar7 = piVar7 + 6" identifier = (binary_expression "piVar7 + 6" identifier + number_literal)) ;) (expression_statement "local_34 = local_34 + 6;" (assignment_expression "local_34 = local_34 + 6" identifier = (binary_expression "local_34 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar8 != piVar7)" ( (binary_expression "piVar8 != piVar7" identifier != identifier) )) ;) (expression_statement "puVar4[6] = 0x1000001;" (assignment_expression "puVar4[6] = 0x1000001" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[4] = local_34;" (assignment_expression "puVar4[4] = local_34" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (for_statement "for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }" for ( (assignment_expression "piVar7 = local_28" identifier = identifier) ; (comma_expression "piVar8 = local_28, piVar7 != piVar1" (assignment_expression "piVar8 = local_28" identifier = identifier) , (binary_expression "piVar7 != piVar1" identifier != identifier)) ; (assignment_expression "piVar7 = piVar7 + 6" identifier = (binary_expression "piVar7 + 6" identifier + number_literal)) ) (compound_statement "{\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }" { (if_statement "if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }" if (parenthesized_expression "((int *)*piVar7 != piVar7 + 2)" ( (binary_expression "(int *)*piVar7 != piVar7 + 2" (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) != (binary_expression "piVar7 + 2" identifier + number_literal)) )) (compound_statement "{\n        FUN_001e6db0((int *)*piVar7);\n      }" { (expression_statement "FUN_001e6db0((int *)*piVar7);" (call_expression "FUN_001e6db0((int *)*piVar7)" identifier (argument_list "((int *)*piVar7)" ( (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) ))) ;) })) })) }))) (if_statement "if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_001e6db0(piVar8);\n  }" { (expression_statement "FUN_001e6db0(piVar8);" (call_expression "FUN_001e6db0(piVar8)" identifier (argument_list "(piVar8)" ( identifier ))) ;) })) (expression_statement "puVar4 = (undefined4 *)param_1[1];" (assignment_expression "puVar4 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)param_1[2])" ( (binary_expression "puVar4 != (undefined4 *)param_1[2]" identifier != (cast_expression "(undefined4 *)param_1[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" { (expression_statement "*puVar4 = local_2c;" (assignment_expression "*puVar4 = local_2c" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "param_1[1] = (int)(puVar4 + 1);" (assignment_expression "param_1[1] = (int)(puVar4 + 1)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)(puVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 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_001a8340(param_1,puVar4,&local_2c);" (call_expression "FUN_001a8340(param_1,puVar4,&local_2c)" identifier (argument_list "(param_1,puVar4,&local_2c)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) ))) ;) (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 ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: void 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  int *piVar2;\n  char *pcVar3;\n  Verdef *pVVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_38;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_34;\n  Verdef *vdbase;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\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                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\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_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */\n  pVVar4 = (Verdef *)operator_new(0x1c);\n  (pVVar4->super_Version_base).index_ = 0xffffffff;\n  pVVar4->name_ = pcVar3;\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  (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_00385c60;\n  uVar5 = (int)local_24 - (int)local_28;\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  uVar6 = ((int)uVar5 >> 3) * -0x55555555;\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 (uVar6 == 0) {\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      std::__throw_bad_alloc();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5);\n  }\n  piVar8 = local_24;\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 = local_38;\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 = local_38;\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)(uVar5 + (int)local_38);\n  vdbase = pVVar4;\n  if (local_28 == local_24) {\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    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    } while (piVar8 != piVar7);\n    pVVar4->is_base_ = true;\n    pVVar4->is_weak_ = false;\n    pVVar4->is_info_ = false;\n    pVVar4->is_symbol_created_ = true;\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 = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    operator_delete(piVar8);\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    *__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    this->needs_base_version_ = false;\n    return;\n  }\n  std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n  _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n  this->needs_base_version_ = false;\n  return;\n}\n\n" comment 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  int *piVar2;\n  char *pcVar3;\n  Verdef *pVVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_38;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_34;\n  Verdef *vdbase;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\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                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\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_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */\n  pVVar4 = (Verdef *)operator_new(0x1c);\n  (pVVar4->super_Version_base).index_ = 0xffffffff;\n  pVVar4->name_ = pcVar3;\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  (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_00385c60;\n  uVar5 = (int)local_24 - (int)local_28;\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  uVar6 = ((int)uVar5 >> 3) * -0x55555555;\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 (uVar6 == 0) {\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      std::__throw_bad_alloc();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5);\n  }\n  piVar8 = local_24;\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 = local_38;\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 = local_38;\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)(uVar5 + (int)local_38);\n  vdbase = pVVar4;\n  if (local_28 == local_24) {\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    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    } while (piVar8 != piVar7);\n    pVVar4->is_base_ = true;\n    pVVar4->is_weak_ = false;\n    pVVar4->is_info_ = false;\n    pVVar4->is_symbol_created_ = true;\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 = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    operator_delete(piVar8);\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    *__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    this->needs_base_version_ = false;\n    return;\n  }\n  std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n  _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n  this->needs_base_version_ = false;\n  return;\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  int *piVar2;\n  char *pcVar3;\n  Verdef *pVVar4;\n  uint uVar5;\n  uint uVar6;\n  int *piVar7;\n  int *piVar8;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_38;\n  basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *local_34;\n  Verdef *vdbase;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\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                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\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_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */\n  pVVar4 = (Verdef *)operator_new(0x1c);\n  (pVVar4->super_Version_base).index_ = 0xffffffff;\n  pVVar4->name_ = pcVar3;\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  (pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_00385c60;\n  uVar5 = (int)local_24 - (int)local_28;\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  uVar6 = ((int)uVar5 >> 3) * -0x55555555;\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 (uVar6 == 0) {\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      std::__throw_bad_alloc();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5);\n  }\n  piVar8 = local_24;\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 = local_38;\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 = local_38;\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)(uVar5 + (int)local_38);\n  vdbase = pVVar4;\n  if (local_28 == local_24) {\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    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    } while (piVar8 != piVar7);\n    pVVar4->is_base_ = true;\n    pVVar4->is_weak_ = false;\n    pVVar4->is_info_ = false;\n    pVVar4->is_symbol_created_ = true;\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 = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    operator_delete(piVar8);\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    *__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    this->needs_base_version_ = false;\n    return;\n  }\n  std::vector<gold::Verdef*,_std::allocator<gold::Verdef*>_>::\n  _M_realloc_insert<gold::Verdef*_const&>(&this->defs_,__position,&vdbase);\n  this->needs_base_version_ = false;\n  return;\n}" { (declaration "General_options *pGVar1;" type_identifier (pointer_declarator "*pGVar1" * identifier) ;) (declaration "iterator __position;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "Verdef *pVVar4;" type_identifier (pointer_declarator "*pVVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * 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>_> *local_38;" (binary_expression "allocator<char>_> *local_38" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*local_38" * 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>_> *local_34;" (binary_expression "allocator<char>_> *local_34" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*local_34" * identifier)) ;) (declaration "Verdef *vdbase;" type_identifier (pointer_declarator "*vdbase" * identifier) ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" 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                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\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                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "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_28 = (int *)0x0;" (assignment_expression "local_28 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_24 = (int *)0x0;" (assignment_expression "local_24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) comment (expression_statement "pVVar4 = (Verdef *)operator_new(0x1c);" (assignment_expression "pVVar4 = (Verdef *)operator_new(0x1c)" identifier = (cast_expression "(Verdef *)operator_new(0x1c)" ( (type_descriptor "Verdef *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x1c)" identifier (argument_list "(0x1c)" ( 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) ;) (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 "(pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_00385c60;" (assignment_expression "(pVVar4->super_Version_base)._vptr_Version_base = (_func_int_varargs **)&PTR__Verdef_00385c60" (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_00385c60" ( (type_descriptor "_func_int_varargs **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&PTR__Verdef_00385c60" & identifier))) ;) (expression_statement "uVar5 = (int)local_24 - (int)local_28;" (assignment_expression "uVar5 = (int)local_24 - (int)local_28" identifier = (binary_expression "(int)local_24 - (int)local_28" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) 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)) ;) (expression_statement "uVar6 = ((int)uVar5 >> 3) * -0x55555555;" (assignment_expression "uVar6 = ((int)uVar5 >> 3) * -0x55555555" identifier = (binary_expression "((int)uVar5 >> 3) * -0x55555555" (parenthesized_expression "((int)uVar5 >> 3)" ( (binary_expression "(int)uVar5 >> 3" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) * 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 (uVar6 == 0) {\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      std::__throw_bad_alloc();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5);\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;\n  }" { (expression_statement "local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)0x0;" (assignment_expression "local_38 = (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 (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      std::__throw_bad_alloc();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5);\n  }" else (compound_statement "{\n    if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      std::__throw_bad_alloc();\n    }\n                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */\n    local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5);\n  }" { (if_statement "if (0xaaaaaaa < uVar6) {\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\n      std::__throw_bad_alloc();\n    }" if (parenthesized_expression "(0xaaaaaaa < uVar6)" ( (binary_expression "0xaaaaaaa < uVar6" number_literal < identifier) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */\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 "local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5);" (assignment_expression "local_38 = (basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5)" identifier = (parenthesized_expression "(basic_string<char,_std::char_traits<char>,_std::allocator<char>_> *)\n               operator_new(uVar5)" ( (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(uVar5)" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (pointer_expression "*)\n               operator_new(uVar5)" * (ERROR ")" )) (call_expression "operator_new(uVar5)" identifier (argument_list "(uVar5)" ( identifier ))))) ))) ;) }))) (expression_statement "piVar8 = local_24;" (assignment_expression "piVar8 = local_24" 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 = local_38;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_start = local_38" (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 = local_38;" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_finish = local_38" (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)(uVar5 + (int)local_38);" (assignment_expression "allocator<char>_>_>_>\n  ._M_impl._M_end_of_storage = (pointer)(uVar5 + (int)local_38)" (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)(uVar5 + (int)local_38)" (parenthesized_expression "(pointer)" ( identifier )) (argument_list "(uVar5 + (int)local_38)" ( (binary_expression "uVar5 + (int)local_38" identifier + (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "vdbase = pVVar4;" (assignment_expression "vdbase = pVVar4" identifier = identifier) ;) (if_statement "if (local_28 == local_24) {\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    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    } while (piVar8 != piVar7);\n    pVVar4->is_base_ = true;\n    pVVar4->is_weak_ = false;\n    pVVar4->is_info_ = false;\n    pVVar4->is_symbol_created_ = true;\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 = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }\n  }" if (parenthesized_expression "(local_28 == local_24)" ( (binary_expression "local_28 == local_24" 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    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    } while (piVar8 != piVar7);\n    pVVar4->is_base_ = true;\n    pVVar4->is_weak_ = false;\n    pVVar4->is_info_ = false;\n    pVVar4->is_symbol_created_ = true;\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 = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }\n  }" else (compound_statement "{\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    } while (piVar8 != piVar7);\n    pVVar4->is_base_ = true;\n    pVVar4->is_weak_ = false;\n    pVVar4->is_info_ = false;\n    pVVar4->is_symbol_created_ = true;\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 = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }\n  }" { (expression_statement "local_34 = local_38;" (assignment_expression "local_34 = local_38" identifier = identifier) ;) (expression_statement "piVar7 = local_28;" (assignment_expression "piVar7 = local_28" identifier = identifier) ;) (do_statement "do {\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    } while (piVar8 != piVar7);" do (compound_statement "{\n      (local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;\n                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */\n      std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar2 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 1;\n    }" { (expression_statement "(local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2;" (assignment_expression "(local_34->_M_dataplus)._M_p = (pointer)&local_34->field_2" (field_expression "(local_34->_M_dataplus)._M_p" (parenthesized_expression "(local_34->_M_dataplus)" ( (field_expression "local_34->_M_dataplus" identifier -> field_identifier) )) . field_identifier) = (binary_expression "(pointer)&local_34->field_2" (parenthesized_expression "(pointer)" ( identifier )) & (field_expression "local_34->field_2" identifier -> field_identifier))) ;) comment (labeled_statement "std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>::\n      _M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0);" 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*>(local_34,*piVar7,piVar7[1] + *piVar7,0);" (binary_expression "_M_construct<char*>(local_34,*piVar7,piVar7[1] + *piVar7,0)" (binary_expression "_M_construct<char" identifier < identifier) (ERROR "*" *) > (parenthesized_expression "(local_34,*piVar7,piVar7[1] + *piVar7,0)" ( (comma_expression "local_34,*piVar7,piVar7[1] + *piVar7,0" identifier , (comma_expression "*piVar7,piVar7[1] + *piVar7,0" (pointer_expression "*piVar7" * identifier) , (comma_expression "piVar7[1] + *piVar7,0" (binary_expression "piVar7[1] + *piVar7" (subscript_expression "piVar7[1]" identifier [ number_literal ]) + (pointer_expression "*piVar7" * identifier)) , number_literal))) ))) ;)) (expression_statement "piVar2 = local_24;" (assignment_expression "piVar2 = local_24" identifier = identifier) ;) (expression_statement "piVar7 = piVar7 + 6;" (assignment_expression "piVar7 = piVar7 + 6" identifier = (binary_expression "piVar7 + 6" identifier + number_literal)) ;) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar8 != piVar7)" ( (binary_expression "piVar8 != piVar7" 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) ;) (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 = local_34;" (assignment_expression "allocator<char>_>_>_>\n    ._M_impl._M_finish = local_34" (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) ;) (for_statement "for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar2; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }" for ( (assignment_expression "piVar7 = local_28" identifier = identifier) ; (comma_expression "piVar8 = local_28, piVar7 != piVar2" (assignment_expression "piVar8 = local_28" identifier = identifier) , (binary_expression "piVar7 != piVar2" identifier != identifier)) ; (assignment_expression "piVar7 = piVar7 + 6" identifier = (binary_expression "piVar7 + 6" identifier + number_literal)) ) (compound_statement "{\n      if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }\n    }" { (if_statement "if ((int *)*piVar7 != piVar7 + 2) {\n        operator_delete((int *)*piVar7);\n      }" if (parenthesized_expression "((int *)*piVar7 != piVar7 + 2)" ( (binary_expression "(int *)*piVar7 != piVar7 + 2" (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) != (binary_expression "piVar7 + 2" identifier + number_literal)) )) (compound_statement "{\n        operator_delete((int *)*piVar7);\n      }" { (expression_statement "operator_delete((int *)*piVar7);" (call_expression "operator_delete((int *)*piVar7)" identifier (argument_list "((int *)*piVar7)" ( (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) ))) ;) })) })) }))) (if_statement "if (piVar8 != (int *)0x0) {\n    operator_delete(piVar8);\n  }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    operator_delete(piVar8);\n  }" { (expression_statement "operator_delete(piVar8);" (call_expression "operator_delete(piVar8)" identifier (argument_list "(piVar8)" ( 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    *__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    this->needs_base_version_ = false;\n    return;\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    *__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    this->needs_base_version_ = false;\n    return;\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 ;) })) (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))) ))) ;) (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 ;) })))
(translation_unit "void FUN_001a3740(int *param_1,undefined4 param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    \n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}\n\n" (function_definition "void FUN_001a3740(int *param_1,undefined4 param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    \n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_001a3740(int *param_1,undefined4 param_2)" identifier (parameter_list "(int *param_1,undefined4 param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    \n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined4 in_ECX;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "int *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (if_statement "if (*param_1 != param_1[1]) {\n                    \n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\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_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }" { (expression_statement "FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);" (call_expression "FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX)" identifier (argument_list "("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX)" ( (string_literal ""../../gold/dynobj.cc"" " string_content ") , number_literal , (string_literal ""define_base_version"" " string_content ") , identifier ))) ;) })) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 8)" identifier = (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }" { (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",0)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , number_literal ))) ;) })) (expression_statement "iVar2 = *(int *)(iVar5 + 0x1aa4);" (assignment_expression "iVar2 = *(int *)(iVar5 + 0x1aa4)" identifier = (pointer_expression "*(int *)(iVar5 + 0x1aa4)" * (cast_expression "(int *)(iVar5 + 0x1aa4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1aa4)" ( (binary_expression "iVar5 + 0x1aa4" identifier + number_literal) ))))) ;) (if_statement "if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }" { (expression_statement "iVar2 = *(int *)(iVar5 + 0x27a8);" (assignment_expression "iVar2 = *(int *)(iVar5 + 0x27a8)" identifier = (pointer_expression "*(int *)(iVar5 + 0x27a8)" * (cast_expression "(int *)(iVar5 + 0x27a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x27a8)" ( (binary_expression "iVar5 + 0x27a8" identifier + number_literal) ))))) ;) })) (expression_statement "uVar3 = FUN_00174930(param_2,iVar2,0,0);" (assignment_expression "uVar3 = FUN_00174930(param_2,iVar2,0,0)" identifier = (call_expression "FUN_00174930(param_2,iVar2,0,0)" identifier (argument_list "(param_2,iVar2,0,0)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "local_28 = (int *)0x0;" (assignment_expression "local_28 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_24 = (int *)0x0;" (assignment_expression "local_24 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200(0x1c);" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200(0x1c)" identifier = (cast_expression "(undefined4 *)FUN_001e5200(0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(0x1c)" identifier (argument_list "(0x1c)" ( number_literal ))))) ;) (expression_statement "puVar4[1] = 0xffffffff;" (assignment_expression "puVar4[1] = 0xffffffff" (subscript_expression "puVar4[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[2] = uVar3;" (assignment_expression "puVar4[2] = uVar3" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar4 = &PTR_FUN_00385c60;" (assignment_expression "*puVar4 = &PTR_FUN_00385c60" (pointer_expression "*puVar4" * identifier) = (pointer_expression "&PTR_FUN_00385c60" & identifier)) ;) (expression_statement "iVar5 = (int)local_24 - (int)local_28;" (assignment_expression "iVar5 = (int)local_24 - (int)local_28" identifier = (binary_expression "(int)local_24 - (int)local_28" (cast_expression "(int)local_24" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)local_28" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = (iVar5 >> 3) * -0x55555555;" (assignment_expression "uVar6 = (iVar5 >> 3) * -0x55555555" identifier = (binary_expression "(iVar5 >> 3) * -0x55555555" (parenthesized_expression "(iVar5 >> 3)" ( (binary_expression "iVar5 >> 3" identifier >> number_literal) )) * number_literal)) ;) (expression_statement "puVar4[5] = 0;" (assignment_expression "puVar4[5] = 0" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    local_38 = (int *)0x0;\n  }" { (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" else (compound_statement "{\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" { (if_statement "if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }" if (parenthesized_expression "(0xaaaaaaa < uVar6)" ( (binary_expression "0xaaaaaaa < uVar6" number_literal < identifier) )) (compound_statement "{\n                    \n                    \n      FUN_0022c5f0();\n    }" { (expression_statement "FUN_0022c5f0();" (call_expression "FUN_0022c5f0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "local_38 = (int *)FUN_001e5200(iVar5);" (assignment_expression "local_38 = (int *)FUN_001e5200(iVar5)" identifier = (cast_expression "(int *)FUN_001e5200(iVar5)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e5200(iVar5)" identifier (argument_list "(iVar5)" ( identifier ))))) ;) }))) (expression_statement "piVar8 = local_24;" (assignment_expression "piVar8 = local_24" identifier = identifier) ;) (expression_statement "puVar4[3] = local_38;" (assignment_expression "puVar4[3] = local_38" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[4] = local_38;" (assignment_expression "puVar4[4] = local_38" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[5] = iVar5 + (int)local_38;" (assignment_expression "puVar4[5] = iVar5 + (int)local_38" (subscript_expression "puVar4[5]" identifier [ number_literal ]) = (binary_expression "iVar5 + (int)local_38" identifier + (cast_expression "(int)local_38" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "local_2c = puVar4;" (assignment_expression "local_2c = puVar4" identifier = identifier) ;) (if_statement "if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" if (parenthesized_expression "(local_28 == local_24)" ( (binary_expression "local_28 == local_24" identifier == identifier) )) (compound_statement "{\n    puVar4[6] = 0x1000001;\n  }" { (expression_statement "puVar4[6] = 0x1000001;" (assignment_expression "puVar4[6] = 0x1000001" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" else (compound_statement "{\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" { (expression_statement "local_34 = local_38;" (assignment_expression "local_34 = local_38" identifier = identifier) ;) (expression_statement "piVar7 = local_28;" (assignment_expression "piVar7 = local_28" identifier = identifier) ;) (do_statement "do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);" do (compound_statement "{\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    }" { (expression_statement "*local_34 = (int)(local_34 + 2);" (assignment_expression "*local_34 = (int)(local_34 + 2)" (pointer_expression "*local_34" * identifier) = (cast_expression "(int)(local_34 + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(local_34 + 2)" ( (binary_expression "local_34 + 2" identifier + number_literal) )))) ;) (expression_statement "FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);" (call_expression "FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0)" identifier (argument_list "(local_34,*piVar7,piVar7[1] + *piVar7,0)" ( identifier , (pointer_expression "*piVar7" * identifier) , (binary_expression "piVar7[1] + *piVar7" (subscript_expression "piVar7[1]" identifier [ number_literal ]) + (pointer_expression "*piVar7" * identifier)) , number_literal ))) ;) (expression_statement "piVar1 = local_24;" (assignment_expression "piVar1 = local_24" identifier = identifier) ;) (expression_statement "piVar7 = piVar7 + 6;" (assignment_expression "piVar7 = piVar7 + 6" identifier = (binary_expression "piVar7 + 6" identifier + number_literal)) ;) (expression_statement "local_34 = local_34 + 6;" (assignment_expression "local_34 = local_34 + 6" identifier = (binary_expression "local_34 + 6" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar8 != piVar7)" ( (binary_expression "piVar8 != piVar7" identifier != identifier) )) ;) (expression_statement "puVar4[6] = 0x1000001;" (assignment_expression "puVar4[6] = 0x1000001" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[4] = local_34;" (assignment_expression "puVar4[4] = local_34" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (for_statement "for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }" for ( (assignment_expression "piVar7 = local_28" identifier = identifier) ; (comma_expression "piVar8 = local_28, piVar7 != piVar1" (assignment_expression "piVar8 = local_28" identifier = identifier) , (binary_expression "piVar7 != piVar1" identifier != identifier)) ; (assignment_expression "piVar7 = piVar7 + 6" identifier = (binary_expression "piVar7 + 6" identifier + number_literal)) ) (compound_statement "{\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }" { (if_statement "if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }" if (parenthesized_expression "((int *)*piVar7 != piVar7 + 2)" ( (binary_expression "(int *)*piVar7 != piVar7 + 2" (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) != (binary_expression "piVar7 + 2" identifier + number_literal)) )) (compound_statement "{\n        FUN_001e6db0((int *)*piVar7);\n      }" { (expression_statement "FUN_001e6db0((int *)*piVar7);" (call_expression "FUN_001e6db0((int *)*piVar7)" identifier (argument_list "((int *)*piVar7)" ( (cast_expression "(int *)*piVar7" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier)) ))) ;) })) })) }))) (if_statement "if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }" if (parenthesized_expression "(piVar8 != (int *)0x0)" ( (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_001e6db0(piVar8);\n  }" { (expression_statement "FUN_001e6db0(piVar8);" (call_expression "FUN_001e6db0(piVar8)" identifier (argument_list "(piVar8)" ( identifier ))) ;) })) (expression_statement "puVar4 = (undefined4 *)param_1[1];" (assignment_expression "puVar4 = (undefined4 *)param_1[1]" identifier = (cast_expression "(undefined4 *)param_1[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (if_statement "if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" if (parenthesized_expression "(puVar4 != (undefined4 *)param_1[2])" ( (binary_expression "puVar4 != (undefined4 *)param_1[2]" identifier != (cast_expression "(undefined4 *)param_1[2]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[2]" identifier [ number_literal ]))) )) (compound_statement "{\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" { (expression_statement "*puVar4 = local_2c;" (assignment_expression "*puVar4 = local_2c" (pointer_expression "*puVar4" * identifier) = identifier) ;) (expression_statement "param_1[1] = (int)(puVar4 + 1);" (assignment_expression "param_1[1] = (int)(puVar4 + 1)" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (cast_expression "(int)(puVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 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_001a8340(param_1,puVar4,&local_2c);" (call_expression "FUN_001a8340(param_1,puVar4,&local_2c)" identifier (argument_list "(param_1,puVar4,&local_2c)" ( identifier , identifier , (pointer_expression "&local_2c" & identifier) ))) ;) (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 ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (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 ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") , LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (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 TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (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)) , LIT ))) ;) (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 ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (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 TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (binary_expression IDENT + LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) ))) ;) })) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (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 (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (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 ( IDENT , IDENT , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_001a3740(int *param_1,undefined4 param_2)\n\n{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    \n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001a3740(int *param_1,undefined4 param_2)" (identifier "FUN_001a3740") (parameter_list "(int *param_1,undefined4 param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  int *piVar1;\n  int iVar2;\n  undefined4 uVar3;\n  undefined4 *puVar4;\n  int iVar5;\n  uint uVar6;\n  undefined4 in_ECX;\n  int *piVar7;\n  int *piVar8;\n  int *local_38;\n  int *local_34;\n  undefined4 *local_2c;\n  int *local_28;\n  int *local_24;\n  undefined4 local_20;\n  \n  if (*param_1 != param_1[1]) {\n                    \n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }\n  iVar5 = *(int *)(DAT_0038f378 + 8);\n  if (iVar5 == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }\n  iVar2 = *(int *)(iVar5 + 0x1aa4);\n  if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }\n  uVar3 = FUN_00174930(param_2,iVar2,0,0);\n  local_28 = (int *)0x0;\n  local_24 = (int *)0x0;\n  local_20 = 0;\n                    \n  puVar4 = (undefined4 *)FUN_001e5200(0x1c);\n  puVar4[1] = 0xffffffff;\n  puVar4[2] = uVar3;\n  puVar4[3] = 0;\n  *puVar4 = &PTR_FUN_00385c60;\n  iVar5 = (int)local_24 - (int)local_28;\n  puVar4[4] = 0;\n  uVar6 = (iVar5 >> 3) * -0x55555555;\n  puVar4[5] = 0;\n  if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }\n  piVar8 = local_24;\n  puVar4[3] = local_38;\n  puVar4[4] = local_38;\n  puVar4[5] = iVar5 + (int)local_38;\n  local_2c = puVar4;\n  if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }\n  if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }\n  puVar4 = (undefined4 *)param_1[1];\n  if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }\n  FUN_001a8340(param_1,puVar4,&local_2c);\n  *(undefined1 *)(param_1 + 0xf) = 0;\n  return;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined4 in_ECX;" (type_identifier "undefined4") (identifier "in_ECX") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int *local_34;" (primitive_type "int") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "undefined4 *local_2c;" (type_identifier "undefined4") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "int *local_28;" (primitive_type "int") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "int *local_24;" (primitive_type "int") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (if_statement "if (*param_1 != param_1[1]) {\n                    \n    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\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_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);" (call_expression "FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX)" (identifier "FUN_00069d00") (argument_list "("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX)" (( "(") (string_literal ""../../gold/dynobj.cc"" (" """) (string_content "../../gold/dynobj.cc") (" """)) (, ",") (number_literal "0x5d5") (, ",") (string_literal ""define_base_version"" (" """) (string_content "define_base_version") (" """)) (, ",") (identifier "in_ECX") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = *(int *)(DAT_0038f378 + 8);" (assignment_expression "iVar5 = *(int *)(DAT_0038f378 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (iVar5 == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",0)" (identifier "FUN_00069d00") (argument_list "("../../gold/parameters.h",0x5c,"options",0)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar2 = *(int *)(iVar5 + 0x1aa4);" (assignment_expression "iVar2 = *(int *)(iVar5 + 0x1aa4)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar5 + 0x1aa4)" (* "*") (cast_expression "(int *)(iVar5 + 0x1aa4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x1aa4)" (( "(") (binary_expression "iVar5 + 0x1aa4" (identifier "iVar5") (+ "+") (number_literal "0x1aa4")) () ")"))))) (; ";")) (if_statement "if (iVar2 == 0) {\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }" (if "if") (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar2 = *(int *)(iVar5 + 0x27a8);\n  }" ({ "{") (expression_statement "iVar2 = *(int *)(iVar5 + 0x27a8);" (assignment_expression "iVar2 = *(int *)(iVar5 + 0x27a8)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(iVar5 + 0x27a8)" (* "*") (cast_expression "(int *)(iVar5 + 0x27a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x27a8)" (( "(") (binary_expression "iVar5 + 0x27a8" (identifier "iVar5") (+ "+") (number_literal "0x27a8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar3 = FUN_00174930(param_2,iVar2,0,0);" (assignment_expression "uVar3 = FUN_00174930(param_2,iVar2,0,0)" (identifier "uVar3") (= "=") (call_expression "FUN_00174930(param_2,iVar2,0,0)" (identifier "FUN_00174930") (argument_list "(param_2,iVar2,0,0)" (( "(") (identifier "param_2") (, ",") (identifier "iVar2") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_28 = (int *)0x0;" (assignment_expression "local_28 = (int *)0x0" (identifier "local_28") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_24 = (int *)0x0;" (assignment_expression "local_24 = (int *)0x0" (identifier "local_24") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4 = (undefined4 *)FUN_001e5200(0x1c);" (assignment_expression "puVar4 = (undefined4 *)FUN_001e5200(0x1c)" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)FUN_001e5200(0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200(0x1c)" (identifier "FUN_001e5200") (argument_list "(0x1c)" (( "(") (number_literal "0x1c") () ")"))))) (; ";")) (expression_statement "puVar4[1] = 0xffffffff;" (assignment_expression "puVar4[1] = 0xffffffff" (subscript_expression "puVar4[1]" (identifier "puVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar4[2] = uVar3;" (assignment_expression "puVar4[2] = uVar3" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "puVar4[3] = 0;" (assignment_expression "puVar4[3] = 0" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar4 = &PTR_FUN_00385c60;" (assignment_expression "*puVar4 = &PTR_FUN_00385c60" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (pointer_expression "&PTR_FUN_00385c60" (& "&") (identifier "PTR_FUN_00385c60"))) (; ";")) (expression_statement "iVar5 = (int)local_24 - (int)local_28;" (assignment_expression "iVar5 = (int)local_24 - (int)local_28" (identifier "iVar5") (= "=") (binary_expression "(int)local_24 - (int)local_28" (cast_expression "(int)local_24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_24")) (- "-") (cast_expression "(int)local_28" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_28")))) (; ";")) (expression_statement "puVar4[4] = 0;" (assignment_expression "puVar4[4] = 0" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = (iVar5 >> 3) * -0x55555555;" (assignment_expression "uVar6 = (iVar5 >> 3) * -0x55555555" (identifier "uVar6") (= "=") (binary_expression "(iVar5 >> 3) * -0x55555555" (parenthesized_expression "(iVar5 >> 3)" (( "(") (binary_expression "iVar5 >> 3" (identifier "iVar5") (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x55555555"))) (; ";")) (expression_statement "puVar4[5] = 0;" (assignment_expression "puVar4[5] = 0" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar6 == 0) {\n    local_38 = (int *)0x0;\n  }\n  else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_38 = (int *)0x0;\n  }" ({ "{") (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" (identifier "local_38") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" (else "else") (compound_statement "{\n    if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }\n                    \n    local_38 = (int *)FUN_001e5200(iVar5);\n  }" ({ "{") (if_statement "if (0xaaaaaaa < uVar6) {\n                    \n                    \n      FUN_0022c5f0();\n    }" (if "if") (parenthesized_expression "(0xaaaaaaa < uVar6)" (( "(") (binary_expression "0xaaaaaaa < uVar6" (number_literal "0xaaaaaaa") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n                    \n                    \n      FUN_0022c5f0();\n    }" ({ "{") (expression_statement "FUN_0022c5f0();" (call_expression "FUN_0022c5f0()" (identifier "FUN_0022c5f0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "local_38 = (int *)FUN_001e5200(iVar5);" (assignment_expression "local_38 = (int *)FUN_001e5200(iVar5)" (identifier "local_38") (= "=") (cast_expression "(int *)FUN_001e5200(iVar5)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e5200(iVar5)" (identifier "FUN_001e5200") (argument_list "(iVar5)" (( "(") (identifier "iVar5") () ")"))))) (; ";")) (} "}")))) (expression_statement "piVar8 = local_24;" (assignment_expression "piVar8 = local_24" (identifier "piVar8") (= "=") (identifier "local_24")) (; ";")) (expression_statement "puVar4[3] = local_38;" (assignment_expression "puVar4[3] = local_38" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_38")) (; ";")) (expression_statement "puVar4[4] = local_38;" (assignment_expression "puVar4[4] = local_38" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_38")) (; ";")) (expression_statement "puVar4[5] = iVar5 + (int)local_38;" (assignment_expression "puVar4[5] = iVar5 + (int)local_38" (subscript_expression "puVar4[5]" (identifier "puVar4") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "iVar5 + (int)local_38" (identifier "iVar5") (+ "+") (cast_expression "(int)local_38" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_38")))) (; ";")) (expression_statement "local_2c = puVar4;" (assignment_expression "local_2c = puVar4" (identifier "local_2c") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (local_28 == local_24) {\n    puVar4[6] = 0x1000001;\n  }\n  else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(local_28 == local_24)" (( "(") (binary_expression "local_28 == local_24" (identifier "local_28") (== "==") (identifier "local_24")) () ")")) (compound_statement "{\n    puVar4[6] = 0x1000001;\n  }" ({ "{") (expression_statement "puVar4[6] = 0x1000001;" (assignment_expression "puVar4[6] = 0x1000001" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0x1000001")) (; ";")) (} "}")) (else_clause "else {\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" (else "else") (compound_statement "{\n    local_34 = local_38;\n    piVar7 = local_28;\n    do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);\n    puVar4[6] = 0x1000001;\n    puVar4[4] = local_34;\n    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }\n  }" ({ "{") (expression_statement "local_34 = local_38;" (assignment_expression "local_34 = local_38" (identifier "local_34") (= "=") (identifier "local_38")) (; ";")) (expression_statement "piVar7 = local_28;" (assignment_expression "piVar7 = local_28" (identifier "piVar7") (= "=") (identifier "local_28")) (; ";")) (do_statement "do {\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    } while (piVar8 != piVar7);" (do "do") (compound_statement "{\n      *local_34 = (int)(local_34 + 2);\n                    \n      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);\n      piVar1 = local_24;\n      piVar7 = piVar7 + 6;\n      local_34 = local_34 + 6;\n    }" ({ "{") (expression_statement "*local_34 = (int)(local_34 + 2);" (assignment_expression "*local_34 = (int)(local_34 + 2)" (pointer_expression "*local_34" (* "*") (identifier "local_34")) (= "=") (cast_expression "(int)(local_34 + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(local_34 + 2)" (( "(") (binary_expression "local_34 + 2" (identifier "local_34") (+ "+") (number_literal "2")) () ")")))) (; ";")) (expression_statement "FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);" (call_expression "FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0)" (identifier "FUN_000513a0") (argument_list "(local_34,*piVar7,piVar7[1] + *piVar7,0)" (( "(") (identifier "local_34") (, ",") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (, ",") (binary_expression "piVar7[1] + *piVar7" (subscript_expression "piVar7[1]" (identifier "piVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "piVar1 = local_24;" (assignment_expression "piVar1 = local_24" (identifier "piVar1") (= "=") (identifier "local_24")) (; ";")) (expression_statement "piVar7 = piVar7 + 6;" (assignment_expression "piVar7 = piVar7 + 6" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 6" (identifier "piVar7") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "local_34 = local_34 + 6;" (assignment_expression "local_34 = local_34 + 6" (identifier "local_34") (= "=") (binary_expression "local_34 + 6" (identifier "local_34") (+ "+") (number_literal "6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar8 != piVar7)" (( "(") (binary_expression "piVar8 != piVar7" (identifier "piVar8") (!= "!=") (identifier "piVar7")) () ")")) (; ";")) (expression_statement "puVar4[6] = 0x1000001;" (assignment_expression "puVar4[6] = 0x1000001" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0x1000001")) (; ";")) (expression_statement "puVar4[4] = local_34;" (assignment_expression "puVar4[4] = local_34" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "local_34")) (; ";")) (for_statement "for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }" (for "for") (( "(") (assignment_expression "piVar7 = local_28" (identifier "piVar7") (= "=") (identifier "local_28")) (; ";") (comma_expression "piVar8 = local_28, piVar7 != piVar1" (assignment_expression "piVar8 = local_28" (identifier "piVar8") (= "=") (identifier "local_28")) (, ",") (binary_expression "piVar7 != piVar1" (identifier "piVar7") (!= "!=") (identifier "piVar1"))) (; ";") (assignment_expression "piVar7 = piVar7 + 6" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 6" (identifier "piVar7") (+ "+") (number_literal "6"))) () ")") (compound_statement "{\n      if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }\n    }" ({ "{") (if_statement "if ((int *)*piVar7 != piVar7 + 2) {\n        FUN_001e6db0((int *)*piVar7);\n      }" (if "if") (parenthesized_expression "((int *)*piVar7 != piVar7 + 2)" (( "(") (binary_expression "(int *)*piVar7 != piVar7 + 2" (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (!= "!=") (binary_expression "piVar7 + 2" (identifier "piVar7") (+ "+") (number_literal "2"))) () ")")) (compound_statement "{\n        FUN_001e6db0((int *)*piVar7);\n      }" ({ "{") (expression_statement "FUN_001e6db0((int *)*piVar7);" (call_expression "FUN_001e6db0((int *)*piVar7)" (identifier "FUN_001e6db0") (argument_list "((int *)*piVar7)" (( "(") (cast_expression "(int *)*piVar7" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (if_statement "if (piVar8 != (int *)0x0) {\n    FUN_001e6db0(piVar8);\n  }" (if "if") (parenthesized_expression "(piVar8 != (int *)0x0)" (( "(") (binary_expression "piVar8 != (int *)0x0" (identifier "piVar8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_001e6db0(piVar8);\n  }" ({ "{") (expression_statement "FUN_001e6db0(piVar8);" (call_expression "FUN_001e6db0(piVar8)" (identifier "FUN_001e6db0") (argument_list "(piVar8)" (( "(") (identifier "piVar8") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar4 = (undefined4 *)param_1[1];" (assignment_expression "puVar4 = (undefined4 *)param_1[1]" (identifier "puVar4") (= "=") (cast_expression "(undefined4 *)param_1[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (puVar4 != (undefined4 *)param_1[2]) {\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" (if "if") (parenthesized_expression "(puVar4 != (undefined4 *)param_1[2])" (( "(") (binary_expression "puVar4 != (undefined4 *)param_1[2]" (identifier "puVar4") (!= "!=") (cast_expression "(undefined4 *)param_1[2]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n    *puVar4 = local_2c;\n    param_1[1] = (int)(puVar4 + 1);\n    *(undefined1 *)(param_1 + 0xf) = 0;\n    return;\n  }" ({ "{") (expression_statement "*puVar4 = local_2c;" (assignment_expression "*puVar4 = local_2c" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (identifier "local_2c")) (; ";")) (expression_statement "param_1[1] = (int)(puVar4 + 1);" (assignment_expression "param_1[1] = (int)(puVar4 + 1)" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)(puVar4 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (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_001a8340(param_1,puVar4,&local_2c);" (call_expression "FUN_001a8340(param_1,puVar4,&local_2c)" (identifier "FUN_001a8340") (argument_list "(param_1,puVar4,&local_2c)" (( "(") (identifier "param_1") (, ",") (identifier "puVar4") (, ",") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) () ")"))) (; ";")) (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") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: void 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;
  int *var_21;
  char *var_8;
  type_5 *pVVar4;
  type_6 var_14;
  type_6 var_12;
  int *var_18;
  int *var_20;
  basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3> *local_38;
  basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3> *var_19;
  type_5 *vdbase;
  int *var_15;
  int *var_16;
  type_7 local_20;
  
  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) {
                    /* WARNING: Subroutine does not return */
    var_6("../../gold/parameters.h",0x5c,"options");
  }
  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_15 = (int *)0x0;
  var_16 = (int *)0x0;
  local_20 = 0;
                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */
  pVVar4 = (type_5 *)var_11(0x1c);
  (pVVar4->super_Version_base).index_ = 0xffffffff;
  pVVar4->name_ = var_8;
  (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_9)0x0;
  (pVVar4->super_Version_base)._vptr_Version_base = (type_10 **)&PTR__Verdef_00385c60;
  var_14 = (int)var_16 - (int)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_finish = (type_9)0x0;
  var_12 = ((int)var_14 >> 3) * -0x55555555;
  (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_9)0x0;
  if (var_12 == 0) {
    local_38 = (basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3> *)0x0;
  }
  else {
    if (0xaaaaaaa < var_12) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */
      std::var_13();
    }
                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */
    local_38 = (basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3> *)
               var_11(var_14);
  }
  var_20 = var_16;
  (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 = local_38;
  (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 = local_38;
  (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_9)(var_14 + (int)local_38);
  vdbase = pVVar4;
  if (var_15 == var_16) {
    pVVar4->is_base_ = true;
    pVVar4->is_weak_ = false;
    pVVar4->is_info_ = false;
    pVVar4->is_symbol_created_ = true;
  }
  else {
    var_19 = local_38;
    var_18 = var_15;
    do {
      (var_19->_M_dataplus)._M_p = (type_9)&var_19->field_2;
                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */
      std::__cxx11::basic_string<var_2,var_5::char_traits<var_2>,var_5::var_1<var_2>var_3>::
      var_17<var_2*>(var_19,*var_18,var_18[1] + *var_18,0);
      var_21 = var_16;
      var_18 = var_18 + 6;
      var_19 = var_19 + 1;
    } while (var_20 != var_18);
    pVVar4->is_base_ = true;
    pVVar4->is_weak_ = false;
    pVVar4->is_info_ = false;
    pVVar4->is_symbol_created_ = true;
    (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_19;
    for (var_18 = var_15; var_20 = var_15, var_18 != var_21; var_18 = var_18 + 6) {
      if ((int *)*var_18 != var_18 + 2) {
        var_22((int *)*var_18);
      }
    }
  }
  if (var_20 != (int *)0x0) {
    var_22(var_20);
  }
  __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) {
    *__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;
  }
  std::vector<var_4::type_5*,var_5::var_1<var_4::type_5*>var_3>::
  _M_realloc_insert<var_4::type_5*var_23&>(&this->defs_,__position,&vdbase);
  this->needs_base_version_ = false;
  return;
}


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

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

void MASKED(int *param_1,undefined4 param_2)

{
  int *piVar1;
  int iVar2;
  undefined4 uVar3;
  undefined4 *puVar4;
  int iVar5;
  uint uVar6;
  undefined4 in_ECX;
  int *piVar7;
  int *piVar8;
  int *local_38;
  int *local_34;
  undefined4 *local_2c;
  int *local_28;
  int *local_24;
  undefined4 local_20;
  
  if (*param_1 != param_1[1]) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/dynobj.cc",0x5d5,"define_base_version",in_ECX);
  }
  iVar5 = *(int *)(DAT_0038f378 + 8);
  if (iVar5 == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",0);
  }
  iVar2 = *(int *)(iVar5 + 0x1aa4);
  if (iVar2 == 0) {
    iVar2 = *(int *)(iVar5 + 0x27a8);
  }
  uVar3 = FUN_00174930(param_2,iVar2,0,0);
  local_28 = (int *)0x0;
  local_24 = (int *)0x0;
  local_20 = 0;
                    /* try { // try from 001a37bb to 001a37bf has its CatchHandler @ 001a39a0 */
  puVar4 = (undefined4 *)FUN_001e5200(0x1c);
  puVar4[1] = 0xffffffff;
  puVar4[2] = uVar3;
  puVar4[3] = 0;
  *puVar4 = &PTR_FUN_00385c60;
  iVar5 = (int)local_24 - (int)local_28;
  puVar4[4] = 0;
  uVar6 = (iVar5 >> 3) * -0x55555555;
  puVar4[5] = 0;
  if (uVar6 == 0) {
    local_38 = (int *)0x0;
  }
  else {
    if (0xaaaaaaa < uVar6) {
                    /* WARNING: Subroutine does not return */
                    /* try { // try from 001a398f to 001a3993 has its CatchHandler @ 001a3994 */
      FUN_0022c5f0();
    }
                    /* try { // try from 001a3821 to 001a3825 has its CatchHandler @ 001a3994 */
    local_38 = (int *)FUN_001e5200(iVar5);
  }
  piVar8 = local_24;
  puVar4[3] = local_38;
  puVar4[4] = local_38;
  puVar4[5] = iVar5 + (int)local_38;
  local_2c = puVar4;
  if (local_28 == local_24) {
    puVar4[6] = 0x1000001;
  }
  else {
    local_34 = local_38;
    piVar7 = local_28;
    do {
      *local_34 = (int)(local_34 + 2);
                    /* try { // try from 001a3864 to 001a3868 has its CatchHandler @ 001a399b */
      FUN_000513a0(local_34,*piVar7,piVar7[1] + *piVar7,0);
      piVar1 = local_24;
      piVar7 = piVar7 + 6;
      local_34 = local_34 + 6;
    } while (piVar8 != piVar7);
    puVar4[6] = 0x1000001;
    puVar4[4] = local_34;
    for (piVar7 = local_28; piVar8 = local_28, piVar7 != piVar1; piVar7 = piVar7 + 6) {
      if ((int *)*piVar7 != piVar7 + 2) {
        FUN_001e6db0((int *)*piVar7);
      }
    }
  }
  if (piVar8 != (int *)0x0) {
    FUN_001e6db0(piVar8);
  }
  puVar4 = (undefined4 *)param_1[1];
  if (puVar4 != (undefined4 *)param_1[2]) {
    *puVar4 = local_2c;
    param_1[1] = (int)(puVar4 + 1);
    *(undefined1 *)(param_1 + 0xf) = 0;
    return;
  }
  FUN_001a8340(param_1,puVar4,&local_2c);
  *(undefined1 *)(param_1 + 0xf) = 0;
  return;
}

