
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool merge_got_with(Mips_output_data_got<64,_false> * this,
   Mips_got_info<64,_false> * from, Mips_relobj<64,_false> * object, Mips_got_info<64,_false> * to,
   Mips_output_data_got<64,_false> * this) */

bool __thiscall
anon_unknown.dwarf_d7d43e::Mips_output_data_got<64,_false>::merge_got_with
          (Mips_output_data_got<64,_false> *this,Mips_got_info<64,_false> *from,
          Mips_relobj<64,_false> *object,Mips_got_info<64,_false> *to,
          Mips_output_data_got<64,_false> *this_1)

{
  byte bVar1;
  int *piVar2;
  byte *pbVar3;
  int iVar4;
  __node_base *p_Var5;
  int *piVar6;
  int *extraout_ECX;
  _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
  *this_00;
  uint uVar7;
  uint uVar8;
  int iVar9;
  int *piVar10;
  undefined8 uVar11;
  size_type in_stack_ffffffb0;
  Mips_got_info<64,_false> *in_stack_ffffffb4;
  Mips_got_entry<64,_false> *entry_00;
  Mips_got_entry<64,_false> *entry;
  Mips_got_entry<64,_false> *entry2;
  
  uVar11 = __x86_get_pc_thunk_di();
  iVar4 = (int)uVar11;
  uVar7 = from->page_gotno_ + extraout_ECX[1];
  uVar8 = uVar7;
  if (*(uint *)(iVar4 + 4) <= uVar7) {
    uVar8 = *(uint *)(iVar4 + 4);
  }
  iVar9 = from->tls_gotno_ + extraout_ECX[4];
  if ((from == (Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20)) && (iVar9 != 0)) {
    iVar4 = *(int *)(iVar4 + 8);
  }
  else {
    iVar4 = from->global_gotno_ + extraout_ECX[2];
  }
  if (0x1ffb < from->local_gotno_ + *extraout_ECX + iVar9 + uVar8 + iVar4) {
    return false;
  }
  piVar10 = (int *)extraout_ECX[0xf];
  if (piVar10 != (int *)0x0) {
    entry_00 = (Mips_got_entry<64,_false> *)&from->got_entries_;
    do {
      while( true ) {
        piVar2 = (int *)piVar10[1];
        uVar8 = piVar2[2];
        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                   *)(uVar8 + 0x40000);
        if ((char)piVar2[4] != '\x02') {
          if (uVar8 == 0xffffffff) {
            pbVar3 = *(byte **)piVar2[3];
            bVar1 = *pbVar3;
          }
          else {
            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];
            bVar1 = *pbVar3;
          }
          uVar7 = 0x1505;
          while (bVar1 != 0) {
            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;
            bVar1 = pbVar3[1];
            pbVar3 = pbVar3 + 1;
          }
          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);
        }
        p_Var5 = std::
                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
                 ::_M_find_before_node
                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,
                            (__hash_code)entry_00);
        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;
        piVar6 = (int *)operator_new(0x18);
        *piVar6 = *piVar2;
        piVar6[1] = piVar2[1];
        piVar6[2] = piVar2[2];
        piVar6[3] = piVar2[3];
        piVar6[4] = piVar2[4];
        piVar6[5] = piVar2[5];
        std::
        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
        ::
        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>
                  ();
        in_stack_ffffffb0 = 0x17ab89;
        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);
        piVar10 = (int *)*piVar10;
        if (piVar10 == (int *)0x0) goto LAB_0017ab93;
      }
      piVar10 = (int *)*piVar10;
    } while (piVar10 != (int *)0x0);
LAB_0017ab93:
    uVar7 = extraout_ECX[1] + from->page_gotno_;
  }
  from->page_gotno_ = uVar7;
  *(Mips_got_info<64,_false> **)
   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.
          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>
          ._M_impl._M_node.super__List_node_base + 4) = from;
  return true;
}



undefined4 FUN_0017aa20(int param_1,int *param_2)

{
  byte bVar1;
  int *piVar2;
  byte *pbVar3;
  int iVar4;
  int *piVar5;
  undefined1 *puVar6;
  int *extraout_ECX;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  undefined8 uVar10;
  
  uVar10 = FUN_00074f0a();
  iVar4 = (int)uVar10;
  uVar8 = param_2[1] + extraout_ECX[1];
  uVar7 = uVar8;
  if (*(uint *)(iVar4 + 4) <= uVar8) {
    uVar7 = *(uint *)(iVar4 + 4);
  }
  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {
    iVar4 = *(int *)(iVar4 + 8);
  }
  else {
    iVar4 = param_2[2] + extraout_ECX[2];
  }
  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {
    return 0;
  }
  piVar9 = (int *)extraout_ECX[0xf];
  if (piVar9 != (int *)0x0) {
    do {
      while( true ) {
        piVar2 = (int *)piVar9[1];
        uVar8 = piVar2[2];
        uVar7 = uVar8 + 0x40000;
        if ((char)piVar2[4] != '\x02') {
          if (uVar8 == 0xffffffff) {
            pbVar3 = *(byte **)piVar2[3];
            bVar1 = *pbVar3;
          }
          else {
            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];
            bVar1 = *pbVar3;
          }
          puVar6 = &DAT_00001505;
          while (bVar1 != 0) {
            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);
            bVar1 = pbVar3[1];
            pbVar3 = pbVar3 + 1;
          }
          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;
        }
        piVar5 = (int *)FUN_0016fa70(uVar7);
        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;
        piVar5 = (int *)FUN_003ac4d0(0x18);
        *piVar5 = *piVar2;
        piVar5[1] = piVar2[1];
        piVar5[2] = piVar2[2];
        piVar5[3] = piVar2[3];
        piVar5[4] = piVar2[4];
        piVar5[5] = piVar2[5];
        FUN_0017a790();
        FUN_001752b0();
        piVar9 = (int *)*piVar9;
        if (piVar9 == (int *)0x0) goto LAB_0017ab93;
      }
      piVar9 = (int *)*piVar9;
    } while (piVar9 != (int *)0x0);
LAB_0017ab93:
    uVar8 = extraout_ECX[1] + param_2[1];
  }
  param_2[1] = uVar8;
  *(int **)(param_1 + 0x1ec) = param_2;
  return 1;
}


PUSH EBP
PUSH EDI
CALL 0x00074f0a
ADD EDI,0x46f5d9
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV EBP,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x8],EDI
MOV ESI,dword ptr [EBP + 0x4]
ADD ESI,dword ptr [ECX + 0x4]
MOV EDI,ESI
CMP dword ptr [EAX + 0x4],ESI
CMOVBE EDI,dword ptr [EAX + 0x4]
MOV EBX,dword ptr [EBP]
ADD EBX,dword ptr [ECX]
MOV dword ptr [ESP + 0x4],EDI
MOV EDI,dword ptr [EBP + 0x10]
ADD EDI,dword ptr [ECX + 0x10]
ADD EBX,EDI
ADD EBX,dword ptr [ESP + 0x4]
CMP EBP,EDX
JNZ 0x0017aa6a
TEST EDI,EDI
JNZ 0x0017abc0
MOV EAX,dword ptr [EBP + 0x8]
ADD EAX,dword ptr [ECX + 0x8]
ADD EBX,EAX
XOR EAX,EAX
CMP EBX,0x1ffb
JBE 0x0017aa88
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ECX + 0x3c]
TEST EDI,EDI
JZ 0x0017ab9d
LEA EAX,[EBP + 0x34]
MOV dword ptr [ESP + 0x14],ECX
MOV dword ptr [ESP + 0x4],EAX
LEA EAX,[ESP + 0x28]
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[ESP + 0x18]
MOV dword ptr [ESP + 0x10],EAX
JMP 0x0017aaf4
MOV EDX,dword ptr [EAX + 0x4]
MOV EAX,0x1505
CMP byte ptr [EDX],0x0
JNZ 0x0017ab1e
MOV ECX,dword ptr [ESI]
SHL ECX,0x10
XOR ECX,EBX
XOR ECX,EAX
MOV EAX,ECX
XOR EDX,EDX
SUB ESP,0x4
DIV dword ptr [EBP + 0x38]
PUSH ECX
MOV ECX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x0016fa70
POP EDX
POP ECX
TEST EAX,EAX
JZ 0x0017ab38
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JZ 0x0017ab38
MOV EDI,dword ptr [EDI]
TEST EDI,EDI
JZ 0x0017ab93
MOV ESI,dword ptr [EDI + 0x4]
MOV EBX,dword ptr [ESI + 0x8]
CMP byte ptr [ESI + 0x10],0x2
MOV dword ptr [ESP + 0x28],ESI
LEA ECX,[EBX + 0x40000]
JZ 0x0017aac6
MOV EAX,dword ptr [ESI + 0xc]
CMP EBX,-0x1
JNZ 0x0017aab0
MOV EDX,dword ptr [EAX]
MOV EAX,0x1505
CMP byte ptr [EDX],0x0
JZ 0x0017aabd
MOV ECX,EAX
ADD EDX,0x1
SHL ECX,0x5
ADD EAX,ECX
MOVZX ECX,byte ptr [EDX + -0x1]
ADD EAX,ECX
CMP byte ptr [EDX],0x0
JZ 0x0017aabd
JMP 0x0017ab1e
SUB ESP,0xc
PUSH 0x18
MOV EBX,dword ptr [ESP + 0x18]
CALL 0x003ac4d0
MOV EDX,dword ptr [ESI]
MOV dword ptr [ESP + 0x3c],EAX
ADD ESP,0x10
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [ESI + 0x4]
LEA ECX,[ESP + 0x2c]
MOV dword ptr [EAX + 0x4],EDX
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [EAX + 0x8],EDX
MOV EDX,dword ptr [ESI + 0xc]
MOV dword ptr [EAX + 0xc],EDX
MOV EDX,dword ptr [ESI + 0x10]
MOV dword ptr [EAX + 0x10],EDX
MOV EDX,dword ptr [ESI + 0x14]
MOV dword ptr [EAX + 0x14],EDX
MOV EDX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0x10]
CALL 0x0017a790
MOV EDX,ESI
MOV EAX,EBP
CALL 0x001752b0
MOV EDI,dword ptr [EDI]
TEST EDI,EDI
JNZ 0x0017aaf4
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [EAX + 0x4]
ADD ESI,dword ptr [EBP + 0x4]
MOV EAX,dword ptr [ESP + 0x50]
MOV dword ptr [EBP + 0x4],ESI
MOV dword ptr [EAX + 0x1ec],EBP
ADD ESP,0x3c
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
ADD EBX,dword ptr [EAX + 0x8]
JMP 0x0017aa72
(translation_unit "undefined4 FUN_0017aa20(int param_1,int *param_2)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_0017aa20(int param_1,int *param_2)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}" type_identifier (function_declarator "FUN_0017aa20(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (expression_statement "uVar10 = FUN_00074f0a();" (assignment_expression "uVar10 = FUN_00074f0a()" identifier = (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = (int)uVar10;" (assignment_expression "iVar4 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar8 = param_2[1] + extraout_ECX[1];" (assignment_expression "uVar8 = param_2[1] + extraout_ECX[1]" identifier = (binary_expression "param_2[1] + extraout_ECX[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) (if_statement "if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }" if (parenthesized_expression "(*(uint *)(iVar4 + 4) <= uVar8)" ( (binary_expression "*(uint *)(iVar4 + 4) <= uVar8" (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n    uVar7 = *(uint *)(iVar4 + 4);\n  }" { (expression_statement "uVar7 = *(uint *)(iVar4 + 4);" (assignment_expression "uVar7 = *(uint *)(iVar4 + 4)" identifier = (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" if (parenthesized_expression "((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0))" ( (binary_expression "(param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)" (parenthesized_expression "(param_2 == (int *)((ulonglong)uVar10 >> 0x20))" ( (binary_expression "param_2 == (int *)((ulonglong)uVar10 >> 0x20)" identifier == (cast_expression "(int *)((ulonglong)uVar10 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" ( (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) && (parenthesized_expression "(param_2[4] + extraout_ECX[4] != 0)" ( (binary_expression "param_2[4] + extraout_ECX[4] != 0" (binary_expression "param_2[4] + extraout_ECX[4]" (subscript_expression "param_2[4]" identifier [ number_literal ]) + (subscript_expression "extraout_ECX[4]" identifier [ number_literal ])) != number_literal) ))) )) (compound_statement "{\n    iVar4 = *(int *)(iVar4 + 8);\n  }" { (expression_statement "iVar4 = *(int *)(iVar4 + 8);" (assignment_expression "iVar4 = *(int *)(iVar4 + 8)" identifier = (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" else (compound_statement "{\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" { (expression_statement "iVar4 = param_2[2] + extraout_ECX[2];" (assignment_expression "iVar4 = param_2[2] + extraout_ECX[2]" identifier = (binary_expression "param_2[2] + extraout_ECX[2]" (subscript_expression "param_2[2]" identifier [ number_literal ]) + (subscript_expression "extraout_ECX[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }" if (parenthesized_expression "(0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4)" ( (binary_expression "0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4" number_literal < (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4" (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7" (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4]" (binary_expression "*param_2 + *extraout_ECX + param_2[4]" (binary_expression "*param_2 + *extraout_ECX" (pointer_expression "*param_2" * identifier) + (pointer_expression "*extraout_ECX" * identifier)) + (subscript_expression "param_2[4]" identifier [ number_literal ])) + (subscript_expression "extraout_ECX[4]" identifier [ number_literal ])) + identifier) + identifier)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar9 = (int *)extraout_ECX[0xf];" (assignment_expression "piVar9 = (int *)extraout_ECX[0xf]" identifier = (cast_expression "(int *)extraout_ECX[0xf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "extraout_ECX[0xf]" identifier [ number_literal ]))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }" { (do_statement "do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);" do (compound_statement "{\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    }" { (while_statement "while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }" { (expression_statement "piVar2 = (int *)piVar9[1];" (assignment_expression "piVar2 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = piVar2[2];" (assignment_expression "uVar8 = piVar2[2]" identifier = (subscript_expression "piVar2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = uVar8 + 0x40000;" (assignment_expression "uVar7 = uVar8 + 0x40000" identifier = (binary_expression "uVar8 + 0x40000" identifier + number_literal)) ;) (if_statement "if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }" if (parenthesized_expression "((char)piVar2[4] != '\x02')" ( (binary_expression "(char)piVar2[4] != '\x02'" (cast_expression "(char)piVar2[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar2[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }" { (if_statement "if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }" { (expression_statement "pbVar3 = *(byte **)piVar2[3];" (assignment_expression "pbVar3 = *(byte **)piVar2[3]" identifier = (pointer_expression "*(byte **)piVar2[3]" * (cast_expression "(byte **)piVar2[3]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])))) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) }) (else_clause "else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" else (compound_statement "{\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" { (expression_statement "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];" (assignment_expression "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1]" identifier = (cast_expression "(byte *)((undefined4 *)piVar2[3])[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "((undefined4 *)piVar2[3])[1]" (parenthesized_expression "((undefined4 *)piVar2[3])" ( (cast_expression "(undefined4 *)piVar2[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])) )) [ number_literal ]))) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) }))) (expression_statement "puVar6 = &DAT_00001505;" (assignment_expression "puVar6 = &DAT_00001505" identifier = (pointer_expression "&DAT_00001505" & identifier)) ;) (while_statement "while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" { (expression_statement "puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);" (assignment_expression "puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3)" identifier = (cast_expression "(undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 * 0x21 + (uint)*pbVar3)" ( (binary_expression "(int)puVar6 * 0x21 + (uint)*pbVar3" (binary_expression "(int)puVar6 * 0x21" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (binary_expression "(uint)*pbVar3" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) ;) (expression_statement "bVar1 = pbVar3[1];" (assignment_expression "bVar1 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;" (assignment_expression "uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6" identifier = (binary_expression "*piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6" (binary_expression "*piVar2 << 0x10 ^ uVar8" (binary_expression "*piVar2 << 0x10" (pointer_expression "*piVar2" * identifier) << number_literal) ^ identifier) ^ (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (expression_statement "piVar5 = (int *)FUN_0016fa70(uVar7);" (assignment_expression "piVar5 = (int *)FUN_0016fa70(uVar7)" identifier = (cast_expression "(int *)FUN_0016fa70(uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0016fa70(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 0))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 0)" (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar5 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar5 = (int *)FUN_003ac4d0(0x18);" (assignment_expression "piVar5 = (int *)FUN_003ac4d0(0x18)" identifier = (cast_expression "(int *)FUN_003ac4d0(0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "piVar5[1] = piVar2[1];" (assignment_expression "piVar5[1] = piVar2[1]" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[2] = piVar2[2];" (assignment_expression "piVar5[2] = piVar2[2]" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (subscript_expression "piVar2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar5[3] = piVar2[3];" (assignment_expression "piVar5[3] = piVar2[3]" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = (subscript_expression "piVar2[3]" identifier [ number_literal ])) ;) (expression_statement "piVar5[4] = piVar2[4];" (assignment_expression "piVar5[4] = piVar2[4]" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = (subscript_expression "piVar2[4]" identifier [ number_literal ])) ;) (expression_statement "piVar5[5] = piVar2[5];" (assignment_expression "piVar5[5] = piVar2[5]" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (subscript_expression "piVar2[5]" identifier [ number_literal ])) ;) (expression_statement "FUN_0017a790();" (call_expression "FUN_0017a790()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001752b0();" (call_expression "FUN_001752b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0017ab93;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017ab93;" goto statement_identifier ;)) })) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];" statement_identifier : (expression_statement "uVar8 = extraout_ECX[1] + param_2[1];" (assignment_expression "uVar8 = extraout_ECX[1] + param_2[1]" identifier = (binary_expression "extraout_ECX[1] + param_2[1]" (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]) + (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;)) })) (expression_statement "param_2[1] = uVar8;" (assignment_expression "param_2[1] = uVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(param_1 + 0x1ec) = param_2;" (assignment_expression "*(int **)(param_1 + 0x1ec) = param_2" (pointer_expression "*(int **)(param_1 + 0x1ec)" * (cast_expression "(int **)(param_1 + 0x1ec)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1ec)" ( (binary_expression "param_1 + 0x1ec" identifier + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Enum "DT": Some values do not have unique names */\n/* DWARF original prototype: bool merge_got_with(Mips_output_data_got<64,_false> * this,\n   Mips_got_info<64,_false> * from, Mips_relobj<64,_false> * object, Mips_got_info<64,_false> * to,\n   Mips_output_data_got<64,_false> * this) */\n\nbool __thiscall\nanon_unknown.dwarf_d7d43e::Mips_output_data_got<64,_false>::merge_got_with\n          (Mips_output_data_got<64,_false> *this,Mips_got_info<64,_false> *from,\n          Mips_relobj<64,_false> *object,Mips_got_info<64,_false> *to,\n          Mips_output_data_got<64,_false> *this_1)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  __node_base *p_Var5;\n  int *piVar6;\n  int *extraout_ECX;\n  _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n  *this_00;\n  uint uVar7;\n  uint uVar8;\n  int iVar9;\n  int *piVar10;\n  undefined8 uVar11;\n  size_type in_stack_ffffffb0;\n  Mips_got_info<64,_false> *in_stack_ffffffb4;\n  Mips_got_entry<64,_false> *entry_00;\n  Mips_got_entry<64,_false> *entry;\n  Mips_got_entry<64,_false> *entry2;\n  \n  uVar11 = __x86_get_pc_thunk_di();\n  iVar4 = (int)uVar11;\n  uVar7 = from->page_gotno_ + extraout_ECX[1];\n  uVar8 = uVar7;\n  if (*(uint *)(iVar4 + 4) <= uVar7) {\n    uVar8 = *(uint *)(iVar4 + 4);\n  }\n  iVar9 = from->tls_gotno_ + extraout_ECX[4];\n  if ((from == (Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20)) && (iVar9 != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = from->global_gotno_ + extraout_ECX[2];\n  }\n  if (0x1ffb < from->local_gotno_ + *extraout_ECX + iVar9 + uVar8 + iVar4) {\n    return false;\n  }\n  piVar10 = (int *)extraout_ECX[0xf];\n  if (piVar10 != (int *)0x0) {\n    entry_00 = (Mips_got_entry<64,_false> *)&from->got_entries_;\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar10[1];\n        uVar8 = piVar2[2];\n        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }\n        p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);\n        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;\n        piVar6 = (int *)operator_new(0x18);\n        *piVar6 = *piVar2;\n        piVar6[1] = piVar2[1];\n        piVar6[2] = piVar2[2];\n        piVar6[3] = piVar2[3];\n        piVar6[4] = piVar2[4];\n        piVar6[5] = piVar2[5];\n        std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();\n        in_stack_ffffffb0 = 0x17ab89;\n        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);\n        piVar10 = (int *)*piVar10;\n        if (piVar10 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar10 = (int *)*piVar10;\n    } while (piVar10 != (int *)0x0);\nLAB_0017ab93:\n    uVar7 = extraout_ECX[1] + from->page_gotno_;\n  }\n  from->page_gotno_ = uVar7;\n  *(Mips_got_info<64,_false> **)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4) = from;\n  return true;\n}\n\n" comment comment comment (declaration "bool __thiscall\nanon_unknown.dwarf_d7d43e::Mips_output_data_got<64,_false>::merge_got_with\n          (Mips_output_data_got<64,_false> *this,Mips_got_info<64,_false> *from,\n          Mips_relobj<64,_false> *object,Mips_got_info<64,_false> *to,\n          Mips_output_data_got<64,_false> *this_1)\n\n{\n  byte bVar1;" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "anon_unknown.dwarf_d7d43e::" identifier . identifier : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::merge_got_with\n          (Mips_output_data_got<64,_false> *this,Mips_got_info<64,_false> *from,\n          Mips_relobj<64,_false> *object,Mips_got_info<64,_false> *to,\n          Mips_output_data_got<64,_false> *this_1)\n\n{\n  byte" identifier > : : (function_declarator "merge_got_with\n          (Mips_output_data_got<64,_false> *this,Mips_got_info<64,_false> *from,\n          Mips_relobj<64,_false> *object,Mips_got_info<64,_false> *to,\n          Mips_output_data_got<64,_false> *this_1)" identifier (parameter_list "(Mips_output_data_got<64,_false> *this,Mips_got_info<64,_false> *from,\n          Mips_relobj<64,_false> *object,Mips_got_info<64,_false> *to,\n          Mips_output_data_got<64,_false> *this_1)" ( (parameter_declaration "Mips_output_data_got" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this" type_identifier (ERROR ">" >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "Mips_got_info" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *from" type_identifier (ERROR ">" >) (pointer_declarator "*from" * identifier)) , (parameter_declaration "Mips_relobj" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *object" type_identifier (ERROR ">" >) (pointer_declarator "*object" * identifier)) , (parameter_declaration "Mips_got_info" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *to" type_identifier (ERROR ">" >) (pointer_declarator "*to" * identifier)) , (parameter_declaration "Mips_output_data_got" type_identifier) (ERROR "<64" < number_literal) , (parameter_declaration "_false> *this_1" type_identifier (ERROR ">" >) (pointer_declarator "*this_1" * identifier)) ))) { identifier) identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "__node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (ERROR "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64" (binary_expression "_Hashtable<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Mips_got_entry" : : identifier) < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*,_(anonymous_namespace)" * (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))))) (ERROR "::Mips_got_entry" : : identifier) < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*,_std" * (ERROR "," ,) identifier)) (ERROR "::allocator" : : identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Mips_got_entry" : : identifier) < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*>,_std" * (ERROR ">," > ,) identifier)) : : identifier : : identifier , type_identifier (parenthesized_declarator "(anonymous_namespace)" ( identifier )) : : identifier < number_literal , (binary_expression "_false>,_(anonymous_namespace)" identifier > (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (binary_expression "Mips_got_entry_hash<64" identifier < number_literal) , (binary_expression "_false>,_std" identifier > (ERROR "," ,) identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n  *this_00;" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n  *this_00;" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n  *this_00;" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_true,_true>_>\n  *this_00;" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_true,_true>_>\n  *this_00;" (comma_expression "_Hashtable_traits<true,_true,_true>_>\n  *this_00" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n  *this_00" identifier , (binary_expression "_true>_>\n  *this_00" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*this_00" * identifier)))) ;))))) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "undefined8 uVar11;" type_identifier identifier ;) (declaration "size_type in_stack_ffffffb0;" type_identifier identifier ;) (expression_statement "Mips_got_info<64,_false> *in_stack_ffffffb4;" (update_expression "Mips_got_info<64,_false> *in_stack_ffffffb4" (binary_expression "Mips_got_info<64,_false> *in_stack_ffffffb4" (binary_expression "Mips_got_info<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*in_stack_ffffffb4" * identifier)) --) ;) (expression_statement "Mips_got_entry<64,_false> *entry_00;" (update_expression "Mips_got_entry<64,_false> *entry_00" (binary_expression "Mips_got_entry<64,_false> *entry_00" (binary_expression "Mips_got_entry<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*entry_00" * identifier)) --) ;) (expression_statement "Mips_got_entry<64,_false> *entry;" (update_expression "Mips_got_entry<64,_false> *entry" (binary_expression "Mips_got_entry<64,_false> *entry" (binary_expression "Mips_got_entry<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*entry" * identifier)) --) ;) (expression_statement "Mips_got_entry<64,_false> *entry2;" (update_expression "Mips_got_entry<64,_false> *entry2" (binary_expression "Mips_got_entry<64,_false> *entry2" (binary_expression "Mips_got_entry<64" identifier < number_literal) (ERROR ",_false" , identifier) > (pointer_expression "*entry2" * identifier)) --) ;) (expression_statement "uVar11 = __x86_get_pc_thunk_di();" (assignment_expression "uVar11 = __x86_get_pc_thunk_di()" identifier = (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = (int)uVar11;" (assignment_expression "iVar4 = (int)uVar11" identifier = (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar7 = from->page_gotno_ + extraout_ECX[1];" (assignment_expression "uVar7 = from->page_gotno_ + extraout_ECX[1]" identifier = (binary_expression "from->page_gotno_ + extraout_ECX[1]" (field_expression "from->page_gotno_" identifier -> field_identifier) + (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = uVar7;" (assignment_expression "uVar8 = uVar7" identifier = identifier) ;) (if_statement "if (*(uint *)(iVar4 + 4) <= uVar7) {\n    uVar8 = *(uint *)(iVar4 + 4);\n  }" if (parenthesized_expression "(*(uint *)(iVar4 + 4) <= uVar7)" ( (binary_expression "*(uint *)(iVar4 + 4) <= uVar7" (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n    uVar8 = *(uint *)(iVar4 + 4);\n  }" { (expression_statement "uVar8 = *(uint *)(iVar4 + 4);" (assignment_expression "uVar8 = *(uint *)(iVar4 + 4)" identifier = (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) })) (expression_statement "iVar9 = from->tls_gotno_ + extraout_ECX[4];" (assignment_expression "iVar9 = from->tls_gotno_ + extraout_ECX[4]" identifier = (binary_expression "from->tls_gotno_ + extraout_ECX[4]" (field_expression "from->tls_gotno_" identifier -> field_identifier) + (subscript_expression "extraout_ECX[4]" identifier [ number_literal ]))) ;) (if_statement "if ((from == (Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20)) && (iVar9 != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = from->global_gotno_ + extraout_ECX[2];\n  }" if (parenthesized_expression "((from == (Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20)) && (iVar9 != 0))" ( (binary_expression "(from == (Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20)) && (iVar9 != 0)" (parenthesized_expression "(from == (Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20))" ( (binary_expression "from == (Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20)" identifier == (call_expression "(Mips_got_info<64,_false> *)((ulonglong)uVar11 >> 0x20)" (parenthesized_expression "(Mips_got_info<64,_false> *)" ( (comma_expression "Mips_got_info<64,_false> *" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> *" identifier > (pointer_expression "*" * identifier))) )) (argument_list "((ulonglong)uVar11 >> 0x20)" ( (binary_expression "(ulonglong)uVar11 >> 0x20" (cast_expression "(ulonglong)uVar11" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) && (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    iVar4 = *(int *)(iVar4 + 8);\n  }" { (expression_statement "iVar4 = *(int *)(iVar4 + 8);" (assignment_expression "iVar4 = *(int *)(iVar4 + 8)" identifier = (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar4 = from->global_gotno_ + extraout_ECX[2];\n  }" else (compound_statement "{\n    iVar4 = from->global_gotno_ + extraout_ECX[2];\n  }" { (expression_statement "iVar4 = from->global_gotno_ + extraout_ECX[2];" (assignment_expression "iVar4 = from->global_gotno_ + extraout_ECX[2]" identifier = (binary_expression "from->global_gotno_ + extraout_ECX[2]" (field_expression "from->global_gotno_" identifier -> field_identifier) + (subscript_expression "extraout_ECX[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (0x1ffb < from->local_gotno_ + *extraout_ECX + iVar9 + uVar8 + iVar4) {\n    return false;\n  }" if (parenthesized_expression "(0x1ffb < from->local_gotno_ + *extraout_ECX + iVar9 + uVar8 + iVar4)" ( (binary_expression "0x1ffb < from->local_gotno_ + *extraout_ECX + iVar9 + uVar8 + iVar4" number_literal < (binary_expression "from->local_gotno_ + *extraout_ECX + iVar9 + uVar8 + iVar4" (binary_expression "from->local_gotno_ + *extraout_ECX + iVar9 + uVar8" (binary_expression "from->local_gotno_ + *extraout_ECX + iVar9" (binary_expression "from->local_gotno_ + *extraout_ECX" (field_expression "from->local_gotno_" identifier -> field_identifier) + (pointer_expression "*extraout_ECX" * identifier)) + identifier) + identifier) + identifier)) )) (compound_statement "{\n    return false;\n  }" { (return_statement "return false;" return false ;) })) (expression_statement "piVar10 = (int *)extraout_ECX[0xf];" (assignment_expression "piVar10 = (int *)extraout_ECX[0xf]" identifier = (cast_expression "(int *)extraout_ECX[0xf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "extraout_ECX[0xf]" identifier [ number_literal ]))) ;) (if_statement "if (piVar10 != (int *)0x0) {\n    entry_00 = (Mips_got_entry<64,_false> *)&from->got_entries_;\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar10[1];\n        uVar8 = piVar2[2];\n        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }\n        p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);\n        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;\n        piVar6 = (int *)operator_new(0x18);\n        *piVar6 = *piVar2;\n        piVar6[1] = piVar2[1];\n        piVar6[2] = piVar2[2];\n        piVar6[3] = piVar2[3];\n        piVar6[4] = piVar2[4];\n        piVar6[5] = piVar2[5];\n        std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();\n        in_stack_ffffffb0 = 0x17ab89;\n        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);\n        piVar10 = (int *)*piVar10;\n        if (piVar10 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar10 = (int *)*piVar10;\n    } while (piVar10 != (int *)0x0);\nLAB_0017ab93:\n    uVar7 = extraout_ECX[1] + from->page_gotno_;\n  }" if (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    entry_00 = (Mips_got_entry<64,_false> *)&from->got_entries_;\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar10[1];\n        uVar8 = piVar2[2];\n        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }\n        p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);\n        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;\n        piVar6 = (int *)operator_new(0x18);\n        *piVar6 = *piVar2;\n        piVar6[1] = piVar2[1];\n        piVar6[2] = piVar2[2];\n        piVar6[3] = piVar2[3];\n        piVar6[4] = piVar2[4];\n        piVar6[5] = piVar2[5];\n        std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();\n        in_stack_ffffffb0 = 0x17ab89;\n        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);\n        piVar10 = (int *)*piVar10;\n        if (piVar10 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar10 = (int *)*piVar10;\n    } while (piVar10 != (int *)0x0);\nLAB_0017ab93:\n    uVar7 = extraout_ECX[1] + from->page_gotno_;\n  }" { (expression_statement "entry_00 = (Mips_got_entry<64,_false> *)&from->got_entries_;" (assignment_expression "entry_00 = (Mips_got_entry<64,_false> *)&from->got_entries_" identifier = (binary_expression "(Mips_got_entry<64,_false> *)&from->got_entries_" (parenthesized_expression "(Mips_got_entry<64,_false> *)" ( (comma_expression "Mips_got_entry<64,_false> *" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false> *" identifier > (pointer_expression "*" * identifier))) )) & (field_expression "from->got_entries_" identifier -> field_identifier))) ;) (do_statement "do {\n      while( true ) {\n        piVar2 = (int *)piVar10[1];\n        uVar8 = piVar2[2];\n        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }\n        p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);\n        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;\n        piVar6 = (int *)operator_new(0x18);\n        *piVar6 = *piVar2;\n        piVar6[1] = piVar2[1];\n        piVar6[2] = piVar2[2];\n        piVar6[3] = piVar2[3];\n        piVar6[4] = piVar2[4];\n        piVar6[5] = piVar2[5];\n        std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();\n        in_stack_ffffffb0 = 0x17ab89;\n        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);\n        piVar10 = (int *)*piVar10;\n        if (piVar10 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar10 = (int *)*piVar10;\n    } while (piVar10 != (int *)0x0);" do (compound_statement "{\n      while( true ) {\n        piVar2 = (int *)piVar10[1];\n        uVar8 = piVar2[2];\n        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }\n        p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);\n        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;\n        piVar6 = (int *)operator_new(0x18);\n        *piVar6 = *piVar2;\n        piVar6[1] = piVar2[1];\n        piVar6[2] = piVar2[2];\n        piVar6[3] = piVar2[3];\n        piVar6[4] = piVar2[4];\n        piVar6[5] = piVar2[5];\n        std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();\n        in_stack_ffffffb0 = 0x17ab89;\n        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);\n        piVar10 = (int *)*piVar10;\n        if (piVar10 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar10 = (int *)*piVar10;\n    }" { (while_statement "while( true ) {\n        piVar2 = (int *)piVar10[1];\n        uVar8 = piVar2[2];\n        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }\n        p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);\n        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;\n        piVar6 = (int *)operator_new(0x18);\n        *piVar6 = *piVar2;\n        piVar6[1] = piVar2[1];\n        piVar6[2] = piVar2[2];\n        piVar6[3] = piVar2[3];\n        piVar6[4] = piVar2[4];\n        piVar6[5] = piVar2[5];\n        std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();\n        in_stack_ffffffb0 = 0x17ab89;\n        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);\n        piVar10 = (int *)*piVar10;\n        if (piVar10 == (int *)0x0) goto LAB_0017ab93;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar2 = (int *)piVar10[1];\n        uVar8 = piVar2[2];\n        this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }\n        p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);\n        if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;\n        piVar6 = (int *)operator_new(0x18);\n        *piVar6 = *piVar2;\n        piVar6[1] = piVar2[1];\n        piVar6[2] = piVar2[2];\n        piVar6[3] = piVar2[3];\n        piVar6[4] = piVar2[4];\n        piVar6[5] = piVar2[5];\n        std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();\n        in_stack_ffffffb0 = 0x17ab89;\n        Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);\n        piVar10 = (int *)*piVar10;\n        if (piVar10 == (int *)0x0) goto LAB_0017ab93;\n      }" { (expression_statement "piVar2 = (int *)piVar10[1];" (assignment_expression "piVar2 = (int *)piVar10[1]" identifier = (cast_expression "(int *)piVar10[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar10[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = piVar2[2];" (assignment_expression "uVar8 = piVar2[2]" identifier = (subscript_expression "piVar2[2]" identifier [ number_literal ])) ;) (expression_statement "this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000);" (assignment_expression "this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000)" identifier = (call_expression "(_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)(uVar8 + 0x40000)" (parenthesized_expression "(_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                   *)" ( (ERROR "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64" (binary_expression "_Hashtable<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Mips_got_entry" : : identifier) < number_literal) , (binary_expression "_false>*,_(anonymous_namespace)" identifier > (pointer_expression "*,_(anonymous_namespace)" * (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))))) : : (comma_expression "Mips_got_entry<64,_false>*,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) : : (comma_expression "Mips_got_entry<64,_false>*>,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*>,_std" identifier > (pointer_expression "*>,_std" * (ERROR ">," > ,) identifier))) : : identifier : : (comma_expression "_Identity,_(anonymous_namespace)" identifier , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips_got_entry_eq<64,_false>,_(anonymous_namespace)" (binary_expression "Mips_got_entry_eq<64" identifier < number_literal) , (binary_expression "_false>,_(anonymous_namespace)" identifier > (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))))) : : (comma_expression "Mips_got_entry_hash<64,_false>,_std" (binary_expression "Mips_got_entry_hash<64" identifier < number_literal) , (binary_expression "_false>,_std" identifier > (ERROR "," ,) identifier)) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<true,_true,_true>_>\n                   *" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                   *" identifier , (binary_expression "_true>_>\n                   *" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*" * identifier)))) )) (argument_list "(uVar8 + 0x40000)" ( (binary_expression "uVar8 + 0x40000" identifier + number_literal) )))) ;) (if_statement "if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }" if (parenthesized_expression "((char)piVar2[4] != '\x02')" ( (binary_expression "(char)piVar2[4] != '\x02'" (cast_expression "(char)piVar2[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar2[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          uVar7 = 0x1505;\n          while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);\n        }" { (if_statement "if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }" { (expression_statement "pbVar3 = *(byte **)piVar2[3];" (assignment_expression "pbVar3 = *(byte **)piVar2[3]" identifier = (pointer_expression "*(byte **)piVar2[3]" * (cast_expression "(byte **)piVar2[3]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])))) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) }) (else_clause "else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" else (compound_statement "{\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" { (expression_statement "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];" (assignment_expression "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1]" identifier = (cast_expression "(byte *)((undefined4 *)piVar2[3])[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "((undefined4 *)piVar2[3])[1]" (parenthesized_expression "((undefined4 *)piVar2[3])" ( (cast_expression "(undefined4 *)piVar2[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])) )) [ number_literal ]))) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) }))) (expression_statement "uVar7 = 0x1505;" (assignment_expression "uVar7 = 0x1505" identifier = number_literal) ;) (while_statement "while (bVar1 != 0) {\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            uVar7 = uVar7 * 0x21 + (uint)*pbVar3;\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" { (expression_statement "uVar7 = uVar7 * 0x21 + (uint)*pbVar3;" (assignment_expression "uVar7 = uVar7 * 0x21 + (uint)*pbVar3" identifier = (binary_expression "uVar7 * 0x21 + (uint)*pbVar3" (binary_expression "uVar7 * 0x21" identifier * number_literal) + (binary_expression "(uint)*pbVar3" (parenthesized_expression "(uint)" ( identifier )) * identifier))) ;) (expression_statement "bVar1 = pbVar3[1];" (assignment_expression "bVar1 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7);" (assignment_expression "this_00 = (_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7)" identifier = (call_expression "(_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)(*piVar2 << 0x10 ^ uVar8 ^ uVar7)" (parenthesized_expression "(_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                     *)" ( (ERROR "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::" (comma_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)" (binary_expression "_Hashtable<(anonymous_namespace)::Mips_got_entry<64" (binary_expression "_Hashtable<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) (ERROR "::Mips_got_entry" : : identifier) < number_literal) , (binary_expression "_false>*,_(anonymous_namespace)" identifier > (pointer_expression "*,_(anonymous_namespace)" * (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))))) : : (comma_expression "Mips_got_entry<64,_false>*,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) : : (comma_expression "Mips_got_entry<64,_false>*>,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*>,_std" identifier > (pointer_expression "*>,_std" * (ERROR ">," > ,) identifier))) : : identifier : : (comma_expression "_Identity,_(anonymous_namespace)" identifier , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips_got_entry_eq<64,_false>,_(anonymous_namespace)" (binary_expression "Mips_got_entry_eq<64" identifier < number_literal) , (binary_expression "_false>,_(anonymous_namespace)" identifier > (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))))) : : (comma_expression "Mips_got_entry_hash<64,_false>,_std" (binary_expression "Mips_got_entry_hash<64" identifier < number_literal) , (binary_expression "_false>,_std" identifier > (ERROR "," ,) identifier)) : : identifier : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) : : identifier : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) : : identifier : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) : : identifier : :) (comma_expression "_Hashtable_traits<true,_true,_true>_>\n                     *" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                     *" identifier , (binary_expression "_true>_>\n                     *" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*" * identifier)))) )) (argument_list "(*piVar2 << 0x10 ^ uVar8 ^ uVar7)" ( (binary_expression "*piVar2 << 0x10 ^ uVar8 ^ uVar7" (binary_expression "*piVar2 << 0x10 ^ uVar8" (binary_expression "*piVar2 << 0x10" (pointer_expression "*piVar2" * identifier) << number_literal) ^ identifier) ^ identifier) )))) ;) })) (ERROR "p_Var5 = std::\n                 _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::" (assignment_expression "p_Var5 = std" identifier = identifier) : : (binary_expression "_Hashtable<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) : : (comma_expression "Mips_got_entry<64,_false>*,_(anonymous_namespace)" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*,_(anonymous_namespace)" identifier > (pointer_expression "*,_(anonymous_namespace)" * (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))))) : : (comma_expression "Mips_got_entry<64,_false>*,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) : : (comma_expression "Mips_got_entry<64,_false>*>,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*>,_std" identifier > (pointer_expression "*>,_std" * (ERROR ">," > ,) identifier))) : :) (labeled_statement "__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);" statement_identifier (ERROR "::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std:" : : (comma_expression "_Identity,_(anonymous_namespace)" identifier , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips_got_entry_eq<64,_false>,_(anonymous_namespace)" (binary_expression "Mips_got_entry_eq<64" identifier < number_literal) , (binary_expression "_false>,_(anonymous_namespace)" identifier > (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))))) : : (comma_expression "Mips_got_entry_hash<64,_false>,_std" (binary_expression "Mips_got_entry_hash<64" identifier < number_literal) , (binary_expression "_false>,_std" identifier > (ERROR "," ,) identifier)) :) : (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00);" (comma_expression "_Hashtable_traits<true,_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00)" identifier , (binary_expression "_true>_>\n                 ::_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00)" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) (call_expression "_M_find_before_node\n                           (this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00)" identifier (argument_list "(this_00,in_stack_ffffffb0,(key_type *)in_stack_ffffffb4,\n                            (__hash_code)entry_00)" ( identifier , identifier , (cast_expression "(key_type *)in_stack_ffffffb4" ( (type_descriptor "key_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(__hash_code)entry_00" ( (type_descriptor "__hash_code" type_identifier) ) identifier) )))))) ;)))))) (if_statement "if ((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)) break;" if (parenthesized_expression "((p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0))" ( (binary_expression "(p_Var5 != (__node_base *)0x0) && (p_Var5->_M_nxt != (_Hash_node_base *)0x0)" (parenthesized_expression "(p_Var5 != (__node_base *)0x0)" ( (binary_expression "p_Var5 != (__node_base *)0x0" identifier != (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(p_Var5->_M_nxt != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var5->_M_nxt != (_Hash_node_base *)0x0" (field_expression "p_Var5->_M_nxt" identifier -> field_identifier) != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar6 = (int *)operator_new(0x18);" (assignment_expression "piVar6 = (int *)operator_new(0x18)" identifier = (cast_expression "(int *)operator_new(0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "operator_new(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*piVar6 = *piVar2;" (assignment_expression "*piVar6 = *piVar2" (pointer_expression "*piVar6" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "piVar6[1] = piVar2[1];" (assignment_expression "piVar6[1] = piVar2[1]" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar6[2] = piVar2[2];" (assignment_expression "piVar6[2] = piVar2[2]" (subscript_expression "piVar6[2]" identifier [ number_literal ]) = (subscript_expression "piVar2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar6[3] = piVar2[3];" (assignment_expression "piVar6[3] = piVar2[3]" (subscript_expression "piVar6[3]" identifier [ number_literal ]) = (subscript_expression "piVar2[3]" identifier [ number_literal ])) ;) (expression_statement "piVar6[4] = piVar2[4];" (assignment_expression "piVar6[4] = piVar2[4]" (subscript_expression "piVar6[4]" identifier [ number_literal ]) = (subscript_expression "piVar2[4]" identifier [ number_literal ])) ;) (expression_statement "piVar6[5] = piVar2[5];" (assignment_expression "piVar6[5] = piVar2[5]" (subscript_expression "piVar6[5]" identifier [ number_literal ]) = (subscript_expression "piVar2[5]" identifier [ number_literal ])) ;) (labeled_statement "std::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std::__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::\n        _Hashtable<(anonymous_namespace)::Mips_got_entry<64,_false>*,_(anonymous_namespace)::Mips_got_entry<64,_false>*,_std::allocator<(anonymous_namespace)::Mips_got_entry<64,_false>*>,_std:" : : (binary_expression "_Hashtable<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) : : (comma_expression "Mips_got_entry<64,_false>*,_(anonymous_namespace)" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*,_(anonymous_namespace)" identifier > (pointer_expression "*,_(anonymous_namespace)" * (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))))) : : (comma_expression "Mips_got_entry<64,_false>*,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*,_std" identifier > (pointer_expression "*,_std" * (ERROR "," ,) identifier))) : : (binary_expression "allocator<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) : : (comma_expression "Mips_got_entry<64,_false>*>,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*>,_std" identifier > (pointer_expression "*>,_std" * (ERROR ">," > ,) identifier))) :) : (labeled_statement "__detail::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::_Identity,_(anonymous_namespace)::Mips_got_entry_eq<64,_false>,_(anonymous_namespace)::Mips_got_entry_hash<64,_false>,_std:" : : (comma_expression "_Identity,_(anonymous_namespace)" identifier , (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) : : (comma_expression "Mips_got_entry_eq<64,_false>,_(anonymous_namespace)" (binary_expression "Mips_got_entry_eq<64" identifier < number_literal) , (binary_expression "_false>,_(anonymous_namespace)" identifier > (ERROR "," ,) (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))))) : : (comma_expression "Mips_got_entry_hash<64,_false>,_std" (binary_expression "Mips_got_entry_hash<64" identifier < number_literal) , (binary_expression "_false>,_std" identifier > (ERROR "," ,) identifier)) :) : (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::_Mod_range_hashing,_std:" : : (comma_expression "_Mod_range_hashing,_std" identifier , identifier) :) : (labeled_statement "__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::_Default_ranged_hash,_std:" : : (comma_expression "_Default_ranged_hash,_std" identifier , identifier) :) : (labeled_statement "__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)::Mips_got_entry<64,_false>*_const&,_std:" : : (comma_expression "_Hashtable_traits<true,_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)" (binary_expression "_Hashtable_traits<true" identifier < true) , (comma_expression "_true,_true>_>\n        ::\n        _M_insert<(anonymous_namespace)" identifier , (binary_expression "_true>_>\n        ::\n        _M_insert<(anonymous_namespace)" (binary_expression "_true>_>\n        ::\n        _M_insert" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier) < (parenthesized_expression "(anonymous_namespace)" ( identifier ))))) : : (comma_expression "Mips_got_entry<64,_false>*_const&,_std" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*_const&,_std" (binary_expression "_false>*_const" identifier > (pointer_expression "*_const" * identifier)) & (ERROR "," ,) identifier)) :) : (labeled_statement "__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::_AllocNode<std::allocator<std:" : : (binary_expression "_AllocNode<std" identifier < identifier) : : (binary_expression "allocator<std" identifier < identifier) :) : (labeled_statement "__detail::_Hash_node<(anonymous_namespace)::Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" statement_identifier (ERROR "::_Hash_node<(anonymous_namespace):" : : (binary_expression "_Hash_node<(anonymous_namespace)" identifier < (parenthesized_expression "(anonymous_namespace)" ( identifier ))) :) : (expression_statement "Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ();" (comma_expression "Mips_got_entry<64,_false>*,_true>_>_>_>\n                  ()" (binary_expression "Mips_got_entry<64" identifier < number_literal) , (binary_expression "_false>*,_true>_>_>_>\n                  ()" (binary_expression "_false>*,_true>_>_>_" (binary_expression "_false>*,_true>_>_" (binary_expression "_false>*,_true>_" (binary_expression "_false>*,_true" identifier > (pointer_expression "*,_true" * (ERROR "," ,) identifier)) > identifier) > identifier) > identifier) > (parenthesized_expression "()" ( identifier )))) ;))))))))) (expression_statement "in_stack_ffffffb0 = 0x17ab89;" (assignment_expression "in_stack_ffffffb0 = 0x17ab89" identifier = number_literal) ;) (expression_statement "Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00);" (comma_expression "Mips_got_info<64,_false>::count_got_entry(in_stack_ffffffb4,entry_00)" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false>::count_got_entry(in_stack_ffffffb4,entry_00)" identifier > (ERROR "::" : :) (call_expression "count_got_entry(in_stack_ffffffb4,entry_00)" identifier (argument_list "(in_stack_ffffffb4,entry_00)" ( identifier , identifier ))))) ;) (expression_statement "piVar10 = (int *)*piVar10;" (assignment_expression "piVar10 = (int *)*piVar10" identifier = (cast_expression "(int *)*piVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) (if_statement "if (piVar10 == (int *)0x0) goto LAB_0017ab93;" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017ab93;" goto statement_identifier ;)) })) (expression_statement "piVar10 = (int *)*piVar10;" (assignment_expression "piVar10 = (int *)*piVar10" identifier = (cast_expression "(int *)*piVar10" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar10" * identifier))) ;) }) while (parenthesized_expression "(piVar10 != (int *)0x0)" ( (binary_expression "piVar10 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_0017ab93:\n    uVar7 = extraout_ECX[1] + from->page_gotno_;" statement_identifier : (expression_statement "uVar7 = extraout_ECX[1] + from->page_gotno_;" (assignment_expression "uVar7 = extraout_ECX[1] + from->page_gotno_" identifier = (binary_expression "extraout_ECX[1] + from->page_gotno_" (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]) + (field_expression "from->page_gotno_" identifier -> field_identifier))) ;)) })) (expression_statement "from->page_gotno_ = uVar7;" (assignment_expression "from->page_gotno_ = uVar7" (field_expression "from->page_gotno_" identifier -> field_identifier) = identifier) ;) (expression_statement "*(Mips_got_info<64,_false> **)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4) = from;" (pointer_expression "*(Mips_got_info<64,_false> **)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4) = from" * (parenthesized_expression "(Mips_got_info<64,_false> **)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4) = from" ( (comma_expression "Mips_got_info<64,_false> **)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4) = from" (binary_expression "Mips_got_info<64" identifier < number_literal) , (binary_expression "_false> **)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4) = from" identifier > (assignment_expression "**)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4) = from" (pointer_expression "**)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4)" * (pointer_expression "*)\n   ((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4)" * (ERROR ")" )) (parenthesized_expression "((int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4)" ( (ERROR "(int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold::Free_list::Free_list_node,_std::allocator<gold::Free_list::" (comma_expression "(int)&this[3].super_Output_data_got<64,_false>.free_list_.list_.\n          super__List_base<gold" (binary_expression "(int)&this[3].super_Output_data_got<64" (cast_expression "(int)&this[3].super_Output_data_got" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&this[3].super_Output_data_got" & (field_expression "this[3].super_Output_data_got" (subscript_expression "this[3]" identifier [ number_literal ]) . field_identifier))) < number_literal) , (binary_expression "_false>.free_list_.list_.\n          super__List_base<gold" (field_expression "_false>.free_list_.list_.\n          super__List_base" (field_expression "_false>.free_list_.list_" (field_expression "_false>.free_list_" identifier (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) < identifier)) : : identifier : : (comma_expression "Free_list_node,_std" identifier , identifier) : : (binary_expression "allocator<gold" identifier < identifier) : : identifier : :) (binary_expression "Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base + 4" (field_expression "Free_list_node>_>\n          ._M_impl._M_node.super__List_node_base" (field_expression "Free_list_node>_>\n          ._M_impl._M_node" (field_expression "Free_list_node>_>\n          ._M_impl" (binary_expression "Free_list_node>_" identifier > identifier) (ERROR ">" >) . field_identifier) . field_identifier) . field_identifier) + number_literal) )))) = identifier))) ))) ;) (return_statement "return true;" return true ;) (ERROR "}" }))
(translation_unit "undefined4 FUN_0017aa20(int param_1,int *param_2)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_0017aa20(int param_1,int *param_2)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}" type_identifier (function_declarator "FUN_0017aa20(int param_1,int *param_2)" identifier (parameter_list "(int param_1,int *param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *extraout_ECX;" primitive_type (pointer_declarator "*extraout_ECX" * identifier) ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (expression_statement "uVar10 = FUN_00074f0a();" (assignment_expression "uVar10 = FUN_00074f0a()" identifier = (call_expression "FUN_00074f0a()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar4 = (int)uVar10;" (assignment_expression "iVar4 = (int)uVar10" identifier = (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar8 = param_2[1] + extraout_ECX[1];" (assignment_expression "uVar8 = param_2[1] + extraout_ECX[1]" identifier = (binary_expression "param_2[1] + extraout_ECX[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" identifier = identifier) ;) (if_statement "if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }" if (parenthesized_expression "(*(uint *)(iVar4 + 4) <= uVar8)" ( (binary_expression "*(uint *)(iVar4 + 4) <= uVar8" (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n    uVar7 = *(uint *)(iVar4 + 4);\n  }" { (expression_statement "uVar7 = *(uint *)(iVar4 + 4);" (assignment_expression "uVar7 = *(uint *)(iVar4 + 4)" identifier = (pointer_expression "*(uint *)(iVar4 + 4)" * (cast_expression "(uint *)(iVar4 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) ))))) ;) })) (if_statement "if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" if (parenthesized_expression "((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0))" ( (binary_expression "(param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)" (parenthesized_expression "(param_2 == (int *)((ulonglong)uVar10 >> 0x20))" ( (binary_expression "param_2 == (int *)((ulonglong)uVar10 >> 0x20)" identifier == (cast_expression "(int *)((ulonglong)uVar10 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" ( (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) && (parenthesized_expression "(param_2[4] + extraout_ECX[4] != 0)" ( (binary_expression "param_2[4] + extraout_ECX[4] != 0" (binary_expression "param_2[4] + extraout_ECX[4]" (subscript_expression "param_2[4]" identifier [ number_literal ]) + (subscript_expression "extraout_ECX[4]" identifier [ number_literal ])) != number_literal) ))) )) (compound_statement "{\n    iVar4 = *(int *)(iVar4 + 8);\n  }" { (expression_statement "iVar4 = *(int *)(iVar4 + 8);" (assignment_expression "iVar4 = *(int *)(iVar4 + 8)" identifier = (pointer_expression "*(int *)(iVar4 + 8)" * (cast_expression "(int *)(iVar4 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) ))))) ;) }) (else_clause "else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" else (compound_statement "{\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" { (expression_statement "iVar4 = param_2[2] + extraout_ECX[2];" (assignment_expression "iVar4 = param_2[2] + extraout_ECX[2]" identifier = (binary_expression "param_2[2] + extraout_ECX[2]" (subscript_expression "param_2[2]" identifier [ number_literal ]) + (subscript_expression "extraout_ECX[2]" identifier [ number_literal ]))) ;) }))) (if_statement "if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }" if (parenthesized_expression "(0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4)" ( (binary_expression "0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4" number_literal < (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4" (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7" (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4]" (binary_expression "*param_2 + *extraout_ECX + param_2[4]" (binary_expression "*param_2 + *extraout_ECX" (pointer_expression "*param_2" * identifier) + (pointer_expression "*extraout_ECX" * identifier)) + (subscript_expression "param_2[4]" identifier [ number_literal ])) + (subscript_expression "extraout_ECX[4]" identifier [ number_literal ])) + identifier) + identifier)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar9 = (int *)extraout_ECX[0xf];" (assignment_expression "piVar9 = (int *)extraout_ECX[0xf]" identifier = (cast_expression "(int *)extraout_ECX[0xf]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "extraout_ECX[0xf]" identifier [ number_literal ]))) ;) (if_statement "if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }" if (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }" { (do_statement "do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);" do (compound_statement "{\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    }" { (while_statement "while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }" { (expression_statement "piVar2 = (int *)piVar9[1];" (assignment_expression "piVar2 = (int *)piVar9[1]" identifier = (cast_expression "(int *)piVar9[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) ;) (expression_statement "uVar8 = piVar2[2];" (assignment_expression "uVar8 = piVar2[2]" identifier = (subscript_expression "piVar2[2]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = uVar8 + 0x40000;" (assignment_expression "uVar7 = uVar8 + 0x40000" identifier = (binary_expression "uVar8 + 0x40000" identifier + number_literal)) ;) (if_statement "if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }" if (parenthesized_expression "((char)piVar2[4] != '\x02')" ( (binary_expression "(char)piVar2[4] != '\x02'" (cast_expression "(char)piVar2[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar2[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }" { (if_statement "if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" if (parenthesized_expression "(uVar8 == 0xffffffff)" ( (binary_expression "uVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }" { (expression_statement "pbVar3 = *(byte **)piVar2[3];" (assignment_expression "pbVar3 = *(byte **)piVar2[3]" identifier = (pointer_expression "*(byte **)piVar2[3]" * (cast_expression "(byte **)piVar2[3]" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])))) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) }) (else_clause "else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" else (compound_statement "{\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" { (expression_statement "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];" (assignment_expression "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1]" identifier = (cast_expression "(byte *)((undefined4 *)piVar2[3])[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "((undefined4 *)piVar2[3])[1]" (parenthesized_expression "((undefined4 *)piVar2[3])" ( (cast_expression "(undefined4 *)piVar2[3]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar2[3]" identifier [ number_literal ])) )) [ number_literal ]))) ;) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" identifier = (pointer_expression "*pbVar3" * identifier)) ;) }))) (expression_statement "puVar6 = &DAT_00001505;" (assignment_expression "puVar6 = &DAT_00001505" identifier = (pointer_expression "&DAT_00001505" & identifier)) ;) (while_statement "while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" { (expression_statement "puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);" (assignment_expression "puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3)" identifier = (cast_expression "(undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar6 * 0x21 + (uint)*pbVar3)" ( (binary_expression "(int)puVar6 * 0x21 + (uint)*pbVar3" (binary_expression "(int)puVar6 * 0x21" (cast_expression "(int)puVar6" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (binary_expression "(uint)*pbVar3" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) ;) (expression_statement "bVar1 = pbVar3[1];" (assignment_expression "bVar1 = pbVar3[1]" identifier = (subscript_expression "pbVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;" (assignment_expression "uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6" identifier = (binary_expression "*piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6" (binary_expression "*piVar2 << 0x10 ^ uVar8" (binary_expression "*piVar2 << 0x10" (pointer_expression "*piVar2" * identifier) << number_literal) ^ identifier) ^ (cast_expression "(uint)puVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) })) (expression_statement "piVar5 = (int *)FUN_0016fa70(uVar7);" (assignment_expression "piVar5 = (int *)FUN_0016fa70(uVar7)" identifier = (cast_expression "(int *)FUN_0016fa70(uVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0016fa70(uVar7)" identifier (argument_list "(uVar7)" ( identifier ))))) ;) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;" if (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 0))" ( (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 0)" (parenthesized_expression "(piVar5 != (int *)0x0)" ( (binary_expression "piVar5 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*piVar5 != 0)" ( (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" * identifier) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "piVar5 = (int *)FUN_003ac4d0(0x18);" (assignment_expression "piVar5 = (int *)FUN_003ac4d0(0x18)" identifier = (cast_expression "(int *)FUN_003ac4d0(0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_003ac4d0(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" * identifier) = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "piVar5[1] = piVar2[1];" (assignment_expression "piVar5[1] = piVar2[1]" (subscript_expression "piVar5[1]" identifier [ number_literal ]) = (subscript_expression "piVar2[1]" identifier [ number_literal ])) ;) (expression_statement "piVar5[2] = piVar2[2];" (assignment_expression "piVar5[2] = piVar2[2]" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = (subscript_expression "piVar2[2]" identifier [ number_literal ])) ;) (expression_statement "piVar5[3] = piVar2[3];" (assignment_expression "piVar5[3] = piVar2[3]" (subscript_expression "piVar5[3]" identifier [ number_literal ]) = (subscript_expression "piVar2[3]" identifier [ number_literal ])) ;) (expression_statement "piVar5[4] = piVar2[4];" (assignment_expression "piVar5[4] = piVar2[4]" (subscript_expression "piVar5[4]" identifier [ number_literal ]) = (subscript_expression "piVar2[4]" identifier [ number_literal ])) ;) (expression_statement "piVar5[5] = piVar2[5];" (assignment_expression "piVar5[5] = piVar2[5]" (subscript_expression "piVar5[5]" identifier [ number_literal ]) = (subscript_expression "piVar2[5]" identifier [ number_literal ])) ;) (expression_statement "FUN_0017a790();" (call_expression "FUN_0017a790()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001752b0();" (call_expression "FUN_001752b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0017ab93;" if (parenthesized_expression "(piVar9 == (int *)0x0)" ( (binary_expression "piVar9 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0017ab93;" goto statement_identifier ;)) })) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" identifier = (cast_expression "(int *)*piVar9" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar9" * identifier))) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];" statement_identifier : (expression_statement "uVar8 = extraout_ECX[1] + param_2[1];" (assignment_expression "uVar8 = extraout_ECX[1] + param_2[1]" identifier = (binary_expression "extraout_ECX[1] + param_2[1]" (subscript_expression "extraout_ECX[1]" identifier [ number_literal ]) + (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;)) })) (expression_statement "param_2[1] = uVar8;" (assignment_expression "param_2[1] = uVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int **)(param_1 + 0x1ec) = param_2;" (assignment_expression "*(int **)(param_1 + 0x1ec) = param_2" (pointer_expression "*(int **)(param_1 + 0x1ec)" * (cast_expression "(int **)(param_1 + 0x1ec)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x1ec)" ( (binary_expression "param_1 + 0x1ec" identifier + number_literal) )))) = identifier) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (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 (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) )) && (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression (binary_expression (binary_expression (binary_expression (binary_expression (pointer_expression * IDENT) + (pointer_expression * IDENT)) + (subscript_expression IDENT [ LIT ])) + (subscript_expression IDENT [ LIT ])) + IDENT) + IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (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 *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (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 * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ])))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )) [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (pointer_expression * IDENT) << LIT) ^ IDENT) ^ (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (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)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;)) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0017aa20(int param_1,int *param_2)\n\n{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_0017aa20(int param_1,int *param_2)" (identifier "FUN_0017aa20") (parameter_list "(int param_1,int *param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  int *piVar2;\n  byte *pbVar3;\n  int iVar4;\n  int *piVar5;\n  undefined1 *puVar6;\n  int *extraout_ECX;\n  uint uVar7;\n  uint uVar8;\n  int *piVar9;\n  undefined8 uVar10;\n  \n  uVar10 = FUN_00074f0a();\n  iVar4 = (int)uVar10;\n  uVar8 = param_2[1] + extraout_ECX[1];\n  uVar7 = uVar8;\n  if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }\n  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }\n  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }\n  piVar9 = (int *)extraout_ECX[0xf];\n  if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }\n  param_2[1] = uVar8;\n  *(int **)(param_1 + 0x1ec) = param_2;\n  return 1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int *extraout_ECX;" (primitive_type "int") (pointer_declarator "*extraout_ECX" (* "*") (identifier "extraout_ECX")) (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "undefined8 uVar10;" (type_identifier "undefined8") (identifier "uVar10") (; ";")) (expression_statement "uVar10 = FUN_00074f0a();" (assignment_expression "uVar10 = FUN_00074f0a()" (identifier "uVar10") (= "=") (call_expression "FUN_00074f0a()" (identifier "FUN_00074f0a") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar4 = (int)uVar10;" (assignment_expression "iVar4 = (int)uVar10" (identifier "iVar4") (= "=") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10"))) (; ";")) (expression_statement "uVar8 = param_2[1] + extraout_ECX[1];" (assignment_expression "uVar8 = param_2[1] + extraout_ECX[1]" (identifier "uVar8") (= "=") (binary_expression "param_2[1] + extraout_ECX[1]" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (subscript_expression "extraout_ECX[1]" (identifier "extraout_ECX") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar7 = uVar8;" (assignment_expression "uVar7 = uVar8" (identifier "uVar7") (= "=") (identifier "uVar8")) (; ";")) (if_statement "if (*(uint *)(iVar4 + 4) <= uVar8) {\n    uVar7 = *(uint *)(iVar4 + 4);\n  }" (if "if") (parenthesized_expression "(*(uint *)(iVar4 + 4) <= uVar8)" (( "(") (binary_expression "*(uint *)(iVar4 + 4) <= uVar8" (pointer_expression "*(uint *)(iVar4 + 4)" (* "*") (cast_expression "(uint *)(iVar4 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n    uVar7 = *(uint *)(iVar4 + 4);\n  }" ({ "{") (expression_statement "uVar7 = *(uint *)(iVar4 + 4);" (assignment_expression "uVar7 = *(uint *)(iVar4 + 4)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(iVar4 + 4)" (* "*") (cast_expression "(uint *)(iVar4 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (} "}"))) (if_statement "if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {\n    iVar4 = *(int *)(iVar4 + 8);\n  }\n  else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" (if "if") (parenthesized_expression "((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0))" (( "(") (binary_expression "(param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)" (parenthesized_expression "(param_2 == (int *)((ulonglong)uVar10 >> 0x20))" (( "(") (binary_expression "param_2 == (int *)((ulonglong)uVar10 >> 0x20)" (identifier "param_2") (== "==") (cast_expression "(int *)((ulonglong)uVar10 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar10 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar10 >> 0x20" (cast_expression "(ulonglong)uVar10" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar10")) (>> ">>") (number_literal "0x20")) () ")")))) () ")")) (&& "&&") (parenthesized_expression "(param_2[4] + extraout_ECX[4] != 0)" (( "(") (binary_expression "param_2[4] + extraout_ECX[4] != 0" (binary_expression "param_2[4] + extraout_ECX[4]" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (+ "+") (subscript_expression "extraout_ECX[4]" (identifier "extraout_ECX") ([ "[") (number_literal "4") (] "]"))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar4 = *(int *)(iVar4 + 8);\n  }" ({ "{") (expression_statement "iVar4 = *(int *)(iVar4 + 8);" (assignment_expression "iVar4 = *(int *)(iVar4 + 8)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar4 + 8)" (* "*") (cast_expression "(int *)(iVar4 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" (else "else") (compound_statement "{\n    iVar4 = param_2[2] + extraout_ECX[2];\n  }" ({ "{") (expression_statement "iVar4 = param_2[2] + extraout_ECX[2];" (assignment_expression "iVar4 = param_2[2] + extraout_ECX[2]" (identifier "iVar4") (= "=") (binary_expression "param_2[2] + extraout_ECX[2]" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (+ "+") (subscript_expression "extraout_ECX[2]" (identifier "extraout_ECX") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")))) (if_statement "if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4)" (( "(") (binary_expression "0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4" (number_literal "0x1ffb") (< "<") (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4" (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7" (binary_expression "*param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4]" (binary_expression "*param_2 + *extraout_ECX + param_2[4]" (binary_expression "*param_2 + *extraout_ECX" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (pointer_expression "*extraout_ECX" (* "*") (identifier "extraout_ECX"))) (+ "+") (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]"))) (+ "+") (subscript_expression "extraout_ECX[4]" (identifier "extraout_ECX") ([ "[") (number_literal "4") (] "]"))) (+ "+") (identifier "uVar7")) (+ "+") (identifier "iVar4"))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "piVar9 = (int *)extraout_ECX[0xf];" (assignment_expression "piVar9 = (int *)extraout_ECX[0xf]" (identifier "piVar9") (= "=") (cast_expression "(int *)extraout_ECX[0xf]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "extraout_ECX[0xf]" (identifier "extraout_ECX") ([ "[") (number_literal "0xf") (] "]")))) (; ";")) (if_statement "if (piVar9 != (int *)0x0) {\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }" (if "if") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);\nLAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];\n  }" ({ "{") (do_statement "do {\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    } while (piVar9 != (int *)0x0);" (do "do") (compound_statement "{\n      while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }\n      piVar9 = (int *)*piVar9;\n    }" ({ "{") (while_statement "while( true ) {\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        piVar2 = (int *)piVar9[1];\n        uVar8 = piVar2[2];\n        uVar7 = uVar8 + 0x40000;\n        if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }\n        piVar5 = (int *)FUN_0016fa70(uVar7);\n        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;\n        piVar5 = (int *)FUN_003ac4d0(0x18);\n        *piVar5 = *piVar2;\n        piVar5[1] = piVar2[1];\n        piVar5[2] = piVar2[2];\n        piVar5[3] = piVar2[3];\n        piVar5[4] = piVar2[4];\n        piVar5[5] = piVar2[5];\n        FUN_0017a790();\n        FUN_001752b0();\n        piVar9 = (int *)*piVar9;\n        if (piVar9 == (int *)0x0) goto LAB_0017ab93;\n      }" ({ "{") (expression_statement "piVar2 = (int *)piVar9[1];" (assignment_expression "piVar2 = (int *)piVar9[1]" (identifier "piVar2") (= "=") (cast_expression "(int *)piVar9[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "uVar8 = piVar2[2];" (assignment_expression "uVar8 = piVar2[2]" (identifier "uVar8") (= "=") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar7 = uVar8 + 0x40000;" (assignment_expression "uVar7 = uVar8 + 0x40000" (identifier "uVar7") (= "=") (binary_expression "uVar8 + 0x40000" (identifier "uVar8") (+ "+") (number_literal "0x40000"))) (; ";")) (if_statement "if ((char)piVar2[4] != '\x02') {\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }" (if "if") (parenthesized_expression "((char)piVar2[4] != '\x02')" (( "(") (binary_expression "(char)piVar2[4] != '\x02'" (cast_expression "(char)piVar2[4]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar2[4]" (identifier "piVar2") ([ "[") (number_literal "4") (] "]"))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n          if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }\n          puVar6 = &DAT_00001505;\n          while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }\n          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;\n        }" ({ "{") (if_statement "if (uVar8 == 0xffffffff) {\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }\n          else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" (if "if") (parenthesized_expression "(uVar8 == 0xffffffff)" (( "(") (binary_expression "uVar8 == 0xffffffff" (identifier "uVar8") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n            pbVar3 = *(byte **)piVar2[3];\n            bVar1 = *pbVar3;\n          }" ({ "{") (expression_statement "pbVar3 = *(byte **)piVar2[3];" (assignment_expression "pbVar3 = *(byte **)piVar2[3]" (identifier "pbVar3") (= "=") (pointer_expression "*(byte **)piVar2[3]" (* "*") (cast_expression "(byte **)piVar2[3]" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]"))))) (; ";")) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" (identifier "bVar1") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (} "}")) (else_clause "else {\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" (else "else") (compound_statement "{\n            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];\n            bVar1 = *pbVar3;\n          }" ({ "{") (expression_statement "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];" (assignment_expression "pbVar3 = (byte *)((undefined4 *)piVar2[3])[1]" (identifier "pbVar3") (= "=") (cast_expression "(byte *)((undefined4 *)piVar2[3])[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "((undefined4 *)piVar2[3])[1]" (parenthesized_expression "((undefined4 *)piVar2[3])" (( "(") (cast_expression "(undefined4 *)piVar2[3]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]"))) () ")")) ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "bVar1 = *pbVar3;" (assignment_expression "bVar1 = *pbVar3" (identifier "bVar1") (= "=") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3"))) (; ";")) (} "}")))) (expression_statement "puVar6 = &DAT_00001505;" (assignment_expression "puVar6 = &DAT_00001505" (identifier "puVar6") (= "=") (pointer_expression "&DAT_00001505" (& "&") (identifier "DAT_00001505"))) (; ";")) (while_statement "while (bVar1 != 0) {\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" (while "while") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);\n            bVar1 = pbVar3[1];\n            pbVar3 = pbVar3 + 1;\n          }" ({ "{") (expression_statement "puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);" (assignment_expression "puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar6 * 0x21 + (uint)*pbVar3)" (( "(") (binary_expression "(int)puVar6 * 0x21 + (uint)*pbVar3" (binary_expression "(int)puVar6 * 0x21" (cast_expression "(int)puVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar6")) (* "*") (number_literal "0x21")) (+ "+") (binary_expression "(uint)*pbVar3" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar3"))) () ")")))) (; ";")) (expression_statement "bVar1 = pbVar3[1];" (assignment_expression "bVar1 = pbVar3[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar3[1]" (identifier "pbVar3") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" (identifier "pbVar3") (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;" (assignment_expression "uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6" (identifier "uVar7") (= "=") (binary_expression "*piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6" (binary_expression "*piVar2 << 0x10 ^ uVar8" (binary_expression "*piVar2 << 0x10" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (<< "<<") (number_literal "0x10")) (^ "^") (identifier "uVar8")) (^ "^") (cast_expression "(uint)puVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar6")))) (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)FUN_0016fa70(uVar7);" (assignment_expression "piVar5 = (int *)FUN_0016fa70(uVar7)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_0016fa70(uVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0016fa70(uVar7)" (identifier "FUN_0016fa70") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")"))))) (; ";")) (if_statement "if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;" (if "if") (parenthesized_expression "((piVar5 != (int *)0x0) && (*piVar5 != 0))" (( "(") (binary_expression "(piVar5 != (int *)0x0) && (*piVar5 != 0)" (parenthesized_expression "(piVar5 != (int *)0x0)" (( "(") (binary_expression "piVar5 != (int *)0x0" (identifier "piVar5") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar5 != 0)" (( "(") (binary_expression "*piVar5 != 0" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "piVar5 = (int *)FUN_003ac4d0(0x18);" (assignment_expression "piVar5 = (int *)FUN_003ac4d0(0x18)" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_003ac4d0(0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_003ac4d0(0x18)" (identifier "FUN_003ac4d0") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*piVar5 = *piVar2;" (assignment_expression "*piVar5 = *piVar2" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "piVar5[1] = piVar2[1];" (assignment_expression "piVar5[1] = piVar2[1]" (subscript_expression "piVar5[1]" (identifier "piVar5") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "piVar2[1]" (identifier "piVar2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar5[2] = piVar2[2];" (assignment_expression "piVar5[2] = piVar2[2]" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "piVar2[2]" (identifier "piVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "piVar5[3] = piVar2[3];" (assignment_expression "piVar5[3] = piVar2[3]" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (= "=") (subscript_expression "piVar2[3]" (identifier "piVar2") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "piVar5[4] = piVar2[4];" (assignment_expression "piVar5[4] = piVar2[4]" (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "piVar2[4]" (identifier "piVar2") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "piVar5[5] = piVar2[5];" (assignment_expression "piVar5[5] = piVar2[5]" (subscript_expression "piVar5[5]" (identifier "piVar5") ([ "[") (number_literal "5") (] "]")) (= "=") (subscript_expression "piVar2[5]" (identifier "piVar2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "FUN_0017a790();" (call_expression "FUN_0017a790()" (identifier "FUN_0017a790") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_001752b0();" (call_expression "FUN_001752b0()" (identifier "FUN_001752b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" (identifier "piVar9") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (if_statement "if (piVar9 == (int *)0x0) goto LAB_0017ab93;" (if "if") (parenthesized_expression "(piVar9 == (int *)0x0)" (( "(") (binary_expression "piVar9 == (int *)0x0" (identifier "piVar9") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0017ab93;" (goto "goto") (statement_identifier "LAB_0017ab93") (; ";"))) (} "}"))) (expression_statement "piVar9 = (int *)*piVar9;" (assignment_expression "piVar9 = (int *)*piVar9" (identifier "piVar9") (= "=") (cast_expression "(int *)*piVar9" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar9" (* "*") (identifier "piVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (labeled_statement "LAB_0017ab93:\n    uVar8 = extraout_ECX[1] + param_2[1];" (statement_identifier "LAB_0017ab93") (: ":") (expression_statement "uVar8 = extraout_ECX[1] + param_2[1];" (assignment_expression "uVar8 = extraout_ECX[1] + param_2[1]" (identifier "uVar8") (= "=") (binary_expression "extraout_ECX[1] + param_2[1]" (subscript_expression "extraout_ECX[1]" (identifier "extraout_ECX") ([ "[") (number_literal "1") (] "]")) (+ "+") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";"))) (} "}"))) (expression_statement "param_2[1] = uVar8;" (assignment_expression "param_2[1] = uVar8" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (expression_statement "*(int **)(param_1 + 0x1ec) = param_2;" (assignment_expression "*(int **)(param_1 + 0x1ec) = param_2" (pointer_expression "*(int **)(param_1 + 0x1ec)" (* "*") (cast_expression "(int **)(param_1 + 0x1ec)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x1ec)" (( "(") (binary_expression "param_1 + 0x1ec" (identifier "param_1") (+ "+") (number_literal "0x1ec")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* WARNING: Type propagation algorithm not settling */
/* WARNING: Enum "DT": Some values do not have unique names */
/* DWARF original prototype: bool merge_got_with(Mips_output_data_got<64,_false> * this,
   Mips_got_info<64,_false> * from, Mips_relobj<64,_false> * object, Mips_got_info<64,_false> * to,
   Mips_output_data_got<64,_false> * this) */

bool __thiscall
anon_unknown.dwarf_d7d43e::Mips_output_data_got<64,var_10>::merge_got_with
          (Mips_output_data_got<64,var_10> *this,var_4<64,var_10> *var_9,
          Mips_relobj<64,var_10> *object,var_4<64,var_10> *to,
          Mips_output_data_got<64,var_10> *this_1)

{
  type_1 var_14;
  int *piVar2;
  type_1 *var_15;
  int var_7;
  type_2 *var_17;
  int *piVar6;
  int *extraout_ECX;
  _Hashtable<(anonymous_namespace)::var_5<64,var_10>*,var_3(anonymous_namespace)::var_5<64,var_10>*,_std::allocator<(anonymous_namespace)::var_5<64,var_10>*>,_std::__detail::_Identity,var_3(anonymous_namespace)::Mips_got_entry_eq<64,var_10>,var_3(anonymous_namespace)::Mips_got_entry_hash<64,var_10>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_1<true,var_2,var_2>var_3>
  *this_00;
  type_3 var_8;
  type_3 var_12;
  int var_11;
  int *var_13;
  type_4 uVar11;
  type_5 in_stack_ffffffb0;
  var_4<64,var_10> *in_stack_ffffffb4;
  var_5<64,var_10> *entry_00;
  var_5<64,var_10> *entry;
  var_5<64,var_10> *entry2;
  
  uVar11 = var_6();
  var_7 = (int)uVar11;
  var_8 = var_9->page_gotno_ + extraout_ECX[1];
  var_12 = var_8;
  if (*(type_3 *)(var_7 + 4) <= var_8) {
    var_12 = *(type_3 *)(var_7 + 4);
  }
  var_11 = var_9->tls_gotno_ + extraout_ECX[4];
  if ((var_9 == (var_4<64,var_10> *)((type_6)uVar11 >> 0x20)) && (var_11 != 0)) {
    var_7 = *(int *)(var_7 + 8);
  }
  else {
    var_7 = var_9->global_gotno_ + extraout_ECX[2];
  }
  if (0x1ffb < var_9->local_gotno_ + *extraout_ECX + var_11 + var_12 + var_7) {
    return false;
  }
  var_13 = (int *)extraout_ECX[0xf];
  if (var_13 != (int *)0x0) {
    entry_00 = (var_5<64,var_10> *)&var_9->got_entries_;
    do {
      while( true ) {
        piVar2 = (int *)var_13[1];
        var_12 = piVar2[2];
        this_00 = (_Hashtable<(anonymous_namespace)::var_5<64,var_10>*,var_3(anonymous_namespace)::var_5<64,var_10>*,_std::allocator<(anonymous_namespace)::var_5<64,var_10>*>,_std::__detail::_Identity,var_3(anonymous_namespace)::Mips_got_entry_eq<64,var_10>,var_3(anonymous_namespace)::Mips_got_entry_hash<64,var_10>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_1<true,var_2,var_2>var_3>
                   *)(var_12 + 0x40000);
        if ((char)piVar2[4] != '\x02') {
          if (var_12 == 0xffffffff) {
            var_15 = *(type_1 **)piVar2[3];
            var_14 = *var_15;
          }
          else {
            var_15 = (type_1 *)((type_7 *)piVar2[3])[1];
            var_14 = *var_15;
          }
          var_8 = 0x1505;
          while (var_14 != 0) {
            var_8 = var_8 * 0x21 + (type_3)*var_15;
            var_14 = var_15[1];
            var_15 = var_15 + 1;
          }
          this_00 = (_Hashtable<(anonymous_namespace)::var_5<64,var_10>*,var_3(anonymous_namespace)::var_5<64,var_10>*,_std::allocator<(anonymous_namespace)::var_5<64,var_10>*>,_std::__detail::_Identity,var_3(anonymous_namespace)::Mips_got_entry_eq<64,var_10>,var_3(anonymous_namespace)::Mips_got_entry_hash<64,var_10>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_1<true,var_2,var_2>var_3>
                     *)(*piVar2 << 0x10 ^ var_12 ^ var_8);
        }
        var_17 = std::
                 _Hashtable<(anonymous_namespace)::var_5<64,var_10>*,var_3(anonymous_namespace)::var_5<64,var_10>*,_std::allocator<(anonymous_namespace)::var_5<64,var_10>*>,_std::__detail::_Identity,var_3(anonymous_namespace)::Mips_got_entry_eq<64,var_10>,var_3(anonymous_namespace)::Mips_got_entry_hash<64,var_10>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_1<true,var_2,var_2>var_3>
                 ::var_16
                           (this_00,in_stack_ffffffb0,(type_8 *)in_stack_ffffffb4,
                            (type_9)entry_00);
        if ((var_17 != (type_2 *)0x0) && (var_17->_M_nxt != (type_10 *)0x0)) break;
        piVar6 = (int *)var_18(0x18);
        *piVar6 = *piVar2;
        piVar6[1] = piVar2[1];
        piVar6[2] = piVar2[2];
        piVar6[3] = piVar2[3];
        piVar6[4] = piVar2[4];
        piVar6[5] = piVar2[5];
        std::
        _Hashtable<(anonymous_namespace)::var_5<64,var_10>*,var_3(anonymous_namespace)::var_5<64,var_10>*,_std::allocator<(anonymous_namespace)::var_5<64,var_10>*>,_std::__detail::_Identity,var_3(anonymous_namespace)::Mips_got_entry_eq<64,var_10>,var_3(anonymous_namespace)::Mips_got_entry_hash<64,var_10>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_1<true,var_2,var_2>var_3>
        ::
        _M_insert<(anonymous_namespace)::var_5<64,var_10>*_const&,_std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<(anonymous_namespace)::var_5<64,var_10>*,var_2>var_3>var_3>var_3>
                  ();
        in_stack_ffffffb0 = 0x17ab89;
        var_4<64,var_10>::var_19(in_stack_ffffffb4,entry_00);
        var_13 = (int *)*var_13;
        if (var_13 == (int *)0x0) goto LAB_0017ab93;
      }
      var_13 = (int *)*var_13;
    } while (var_13 != (int *)0x0);
LAB_0017ab93:
    var_8 = extraout_ECX[1] + var_9->page_gotno_;
  }
  var_9->page_gotno_ = var_8;
  *(var_4<64,var_10> **)
   ((int)&this[3].super_Output_data_got<64,var_10>.free_list_.list_.
          super__List_base<gold::Free_list::var_20,_std::allocator<gold::Free_list::var_20>var_3>
          ._M_impl._M_node.super__List_node_base + 4) = var_9;
  return true;
}


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

undefined4 MASKED(int param_1,int *param_2)

{
  byte bVar1;
  int *piVar2;
  byte *pbVar3;
  int iVar4;
  int *piVar5;
  undefined1 *puVar6;
  int *extraout_ECX;
  uint uVar7;
  uint uVar8;
  int *piVar9;
  undefined8 uVar10;
  
  uVar10 = FUN_00074f0a();
  iVar4 = (int)uVar10;
  uVar8 = param_2[1] + extraout_ECX[1];
  uVar7 = uVar8;
  if (*(uint *)(iVar4 + 4) <= uVar8) {
    uVar7 = *(uint *)(iVar4 + 4);
  }
  if ((param_2 == (int *)((ulonglong)uVar10 >> 0x20)) && (param_2[4] + extraout_ECX[4] != 0)) {
    iVar4 = *(int *)(iVar4 + 8);
  }
  else {
    iVar4 = param_2[2] + extraout_ECX[2];
  }
  if (0x1ffb < *param_2 + *extraout_ECX + param_2[4] + extraout_ECX[4] + uVar7 + iVar4) {
    return 0;
  }
  piVar9 = (int *)extraout_ECX[0xf];
  if (piVar9 != (int *)0x0) {
    do {
      while( true ) {
        piVar2 = (int *)piVar9[1];
        uVar8 = piVar2[2];
        uVar7 = uVar8 + 0x40000;
        if ((char)piVar2[4] != '\x02') {
          if (uVar8 == 0xffffffff) {
            pbVar3 = *(byte **)piVar2[3];
            bVar1 = *pbVar3;
          }
          else {
            pbVar3 = (byte *)((undefined4 *)piVar2[3])[1];
            bVar1 = *pbVar3;
          }
          puVar6 = &DAT_00001505;
          while (bVar1 != 0) {
            puVar6 = (undefined1 *)((int)puVar6 * 0x21 + (uint)*pbVar3);
            bVar1 = pbVar3[1];
            pbVar3 = pbVar3 + 1;
          }
          uVar7 = *piVar2 << 0x10 ^ uVar8 ^ (uint)puVar6;
        }
        piVar5 = (int *)FUN_0016fa70(uVar7);
        if ((piVar5 != (int *)0x0) && (*piVar5 != 0)) break;
        piVar5 = (int *)FUN_003ac4d0(0x18);
        *piVar5 = *piVar2;
        piVar5[1] = piVar2[1];
        piVar5[2] = piVar2[2];
        piVar5[3] = piVar2[3];
        piVar5[4] = piVar2[4];
        piVar5[5] = piVar2[5];
        FUN_0017a790();
        FUN_001752b0();
        piVar9 = (int *)*piVar9;
        if (piVar9 == (int *)0x0) goto LAB_0017ab93;
      }
      piVar9 = (int *)*piVar9;
    } while (piVar9 != (int *)0x0);
LAB_0017ab93:
    uVar8 = extraout_ECX[1] + param_2[1];
  }
  param_2[1] = uVar8;
  *(int **)(param_1 + 0x1ec) = param_2;
  return 1;
}

