
/* DWARF original prototype: void add_declaration(Gdb_index_info_reader * this, Dwarf_die * die,
   Dwarf_die * context) */

void __thiscall
gold::Gdb_index_info_reader::add_declaration
          (Gdb_index_info_reader *this,Dwarf_die *die,Dwarf_die *context)

{
  uint uVar1;
  _Hash_node_base *p_Var2;
  ulong uVar3;
  ulong uVar4;
  _Hash_node_base *p_Var5;
  __bucket_type p_Var6;
  __bucket_type p_Var7;
  _Hash_node_base *p_Var8;
  off_t local_48;
  _Hash_node_base *local_40;
  _Hash_node_base *local_38;
  
  p_Var5 = (_Hash_node_base *)die->name_;
  if (p_Var5 == (_Hash_node_base *)0x0) {
    Dwarf_die::set_name(die);
    p_Var5 = (_Hash_node_base *)die->name_;
  }
  p_Var8 = (_Hash_node_base *)0x0;
  if (context != (Dwarf_die *)0x0) {
    p_Var8 = (_Hash_node_base *)context->die_offset_;
  }
  if (die->attributes_read_ == false) {
    Dwarf_die::read_attributes(die);
    p_Var2 = (_Hash_node_base *)die->specification_;
    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;
    if (die->attributes_read_ == false) {
      Dwarf_die::read_attributes(die);
    }
  }
  else {
    p_Var2 = (_Hash_node_base *)die->specification_;
    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;
  }
  p_Var2 = (_Hash_node_base *)die->abstract_origin_;
joined_r0x001e762c:
  local_38 = p_Var5;
  local_40 = p_Var8;
  if (0 < (long)p_Var2) {
    uVar3 = (this->declarations_)._M_h._M_bucket_count;
    uVar4 = (ulong)p_Var2 % uVar3;
    p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4];
    if (p_Var7 != (__bucket_type)0x0) {
      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;
      p_Var8 = p_Var7->_M_nxt;
      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {
        p_Var8 = p_Var6->_M_nxt;
        if ((p_Var8 == (_Hash_node_base *)0x0) ||
           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))
        goto joined_r0x001e76a3;
      }
      p_Var5 = p_Var7->_M_nxt;
      if (p_Var5 != (_Hash_node_base *)0x0) {
        local_38 = p_Var5[3]._M_nxt;
        local_40 = p_Var5[2]._M_nxt;
      }
    }
  }
joined_r0x001e76a3:
  if (local_38 == (_Hash_node_base *)0x0) {
    local_38 = (_Hash_node_base *)0x3e1962;
    if (die->abbrev_code_ != (Abbrev_code *)0x0) {
      uVar1 = die->abbrev_code_->tag;
      local_38 = (_Hash_node_base *)0x3e1926;
      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {
        local_38 = (_Hash_node_base *)0x3e196c;
      }
    }
  }
  local_48 = die->die_offset_;
  std::
  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>
            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>
              *)&this->declarations_,&local_48);
  return;
}



void FUN_001e7580(long param_1,long param_2,long param_3)

{
  int iVar1;
  ulong uVar2;
  long *plVar3;
  long lVar4;
  ulong uVar5;
  char *pcVar6;
  ulong uVar7;
  long *plVar8;
  long *plVar9;
  undefined8 uVar10;
  undefined8 local_48;
  undefined8 local_40;
  char *local_38;
  
  pcVar6 = *(char **)(param_2 + 0x58);
  if (pcVar6 == (char *)0x0) {
    FUN_00303330(param_2);
    pcVar6 = *(char **)(param_2 + 0x58);
  }
  uVar10 = 0;
  if (param_3 != 0) {
    uVar10 = *(undefined8 *)(param_3 + 0x10);
  }
  if (*(char *)(param_2 + 0x50) == '\0') {
    FUN_00303310(param_2);
    uVar2 = *(ulong *)(param_2 + 0x80);
    if (uVar2 != 0) goto joined_r0x001e762c;
    if (*(char *)(param_2 + 0x50) == '\0') {
      FUN_00303310(param_2);
    }
  }
  else {
    uVar2 = *(ulong *)(param_2 + 0x80);
    if (uVar2 != 0) goto joined_r0x001e762c;
  }
  uVar2 = *(ulong *)(param_2 + 0x88);
joined_r0x001e762c:
  local_38 = pcVar6;
  local_40 = uVar10;
  if (0 < (long)uVar2) {
    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);
    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);
    if (plVar9 != (long *)0x0) {
      uVar7 = ((long *)*plVar9)[1];
      plVar3 = (long *)*plVar9;
      while (plVar8 = plVar3, uVar7 != uVar2) {
        plVar3 = (long *)*plVar8;
        if ((plVar3 == (long *)0x0) ||
           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))
        goto joined_r0x001e76a3;
      }
      lVar4 = *plVar9;
      if (lVar4 != 0) {
        local_38 = *(char **)(lVar4 + 0x18);
        local_40 = *(undefined8 *)(lVar4 + 0x10);
      }
    }
  }
joined_r0x001e76a3:
  if (local_38 == (char *)0x0) {
    local_38 = "(unknown)";
    if (*(int **)(param_2 + 0x30) != (int *)0x0) {
      iVar1 = **(int **)(param_2 + 0x30);
      local_38 = "(anonymous namespace)";
      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {
        local_38 = "(anonymous union)";
      }
    }
  }
  local_48 = *(undefined8 *)(param_2 + 0x10);
  FUN_001e9520(param_1 + 0x950,&local_48);
  return;
}


PUSH R13
PUSH R12
MOV R12,RDI
PUSH RBP
PUSH RBX
MOV RBX,RSI
SUB RSP,0x38
MOV RBP,qword ptr [RSI + 0x58]
TEST RBP,RBP
JZ 0x001e76f0
XOR R13D,R13D
TEST RDX,RDX
JZ 0x001e75a9
MOV R13,qword ptr [RDX + 0x10]
CMP byte ptr [RBX + 0x50],0x0
JZ 0x001e7600
MOV RCX,qword ptr [RBX + 0x80]
TEST RCX,RCX
JZ 0x001e7622
TEST RCX,RCX
JG 0x001e762e
TEST RBP,RBP
JZ 0x001e76a9
MOV RAX,qword ptr [RBX + 0x10]
LEA RSI,[RSP + 0x10]
MOV qword ptr [RSP + 0x18],R13
LEA RDI,[R12 + 0x950]
MOV qword ptr [RSP + 0x20],RBP
MOV qword ptr [RSP + 0x10],RAX
CALL 0x001e9520
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
RET
MOV RDI,RBX
CALL 0x00303310
MOV RCX,qword ptr [RBX + 0x80]
TEST RCX,RCX
JNZ 0x001e75bb
CMP byte ptr [RBX + 0x50],0x0
JNZ 0x001e7622
MOV RDI,RBX
CALL 0x00303310
MOV RCX,qword ptr [RBX + 0x88]
TEST RCX,RCX
JLE 0x001e75c0
MOV R8,qword ptr [R12 + 0x958]
MOV RAX,RCX
XOR EDX,EDX
DIV R8
MOV RAX,qword ptr [R12 + 0x950]
MOV R9,qword ptr [RAX + RDX*0x8]
MOV R10,RDX
TEST R9,R9
JZ 0x001e75c0
MOV RDI,qword ptr [R9]
MOV RSI,qword ptr [RDI + 0x8]
JMP 0x001e7687
MOV RAX,qword ptr [RDI]
TEST RAX,RAX
JZ 0x001e75c0
MOV RSI,qword ptr [RAX + 0x8]
MOV R9,RDI
XOR EDX,EDX
MOV RDI,RAX
MOV RAX,RSI
DIV R8
CMP R10,RDX
JNZ 0x001e75c0
CMP RSI,RCX
JNZ 0x001e7660
MOV RAX,qword ptr [R9]
TEST RAX,RAX
JZ 0x001e75c0
MOV RBP,qword ptr [RAX + 0x18]
MOV R13,qword ptr [RAX + 0x10]
TEST RBP,RBP
JNZ 0x001e75c9
MOV RAX,qword ptr [RBX + 0x30]
LEA RBP,[0x3e1962]
TEST RAX,RAX
JZ 0x001e75c9
MOV EAX,dword ptr [RAX]
LEA RBP,[0x3e1926]
CMP EAX,0x39
JZ 0x001e75c9
CMP EAX,0x17
LEA RBP,[0x3e1962]
LEA RAX,[0x3e196c]
CMOVZ RBP,RAX
JMP 0x001e75c9
MOV RDI,RSI
MOV qword ptr [RSP + 0x8],RDX
CALL 0x00303330
MOV RBP,qword ptr [RBX + 0x58]
MOV RDX,qword ptr [RSP + 0x8]
JMP 0x001e759d
(translation_unit "void FUN_001e7580(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}\n\n" (function_definition "void FUN_001e7580(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}" primitive_type (function_declarator "FUN_001e7580(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (expression_statement "pcVar6 = *(char **)(param_2 + 0x58);" (assignment_expression "pcVar6 = *(char **)(param_2 + 0x58)" identifier = (pointer_expression "*(char **)(param_2 + 0x58)" * (cast_expression "(char **)(param_2 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }" { (expression_statement "FUN_00303330(param_2);" (call_expression "FUN_00303330(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "pcVar6 = *(char **)(param_2 + 0x58);" (assignment_expression "pcVar6 = *(char **)(param_2 + 0x58)" identifier = (pointer_expression "*(char **)(param_2 + 0x58)" * (cast_expression "(char **)(param_2 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) ))))) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }" { (expression_statement "uVar10 = *(undefined8 *)(param_3 + 0x10);" (assignment_expression "uVar10 = *(undefined8 *)(param_3 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_3 + 0x10)" * (cast_expression "(undefined8 *)(param_3 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) ))))) ;) })) (if_statement "if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x50) == '\0'" (pointer_expression "*(char *)(param_2 + 0x50)" * (cast_expression "(char *)(param_2 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }" { (expression_statement "FUN_00303310(param_2);" (call_expression "FUN_00303310(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "uVar2 = *(ulong *)(param_2 + 0x80);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x80)" * (cast_expression "(ulong *)(param_2 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x80)" ( (binary_expression "param_2 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 != 0) goto joined_r0x001e762c;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x001e762c;" goto statement_identifier ;)) (if_statement "if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x50) == '\0'" (pointer_expression "*(char *)(param_2 + 0x50)" * (cast_expression "(char *)(param_2 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00303310(param_2);\n    }" { (expression_statement "FUN_00303310(param_2);" (call_expression "FUN_00303310(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) }) (else_clause "else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" else (compound_statement "{\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" { (expression_statement "uVar2 = *(ulong *)(param_2 + 0x80);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x80)" * (cast_expression "(ulong *)(param_2 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x80)" ( (binary_expression "param_2 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 != 0) goto joined_r0x001e762c;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x001e762c;" goto statement_identifier ;)) }))) (expression_statement "uVar2 = *(ulong *)(param_2 + 0x88);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x88)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x88)" * (cast_expression "(ulong *)(param_2 + 0x88)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x88)" ( (binary_expression "param_2 + 0x88" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x001e762c:\n  local_38 = pcVar6;" statement_identifier : (expression_statement "local_38 = pcVar6;" (assignment_expression "local_38 = pcVar6" identifier = identifier) ;)) (expression_statement "local_40 = uVar10;" (assignment_expression "local_40 = uVar10" identifier = identifier) ;) (if_statement "if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }" { (expression_statement "uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);" (assignment_expression "uVar5 = uVar2 % *(ulong *)(param_1 + 0x958)" identifier = (binary_expression "uVar2 % *(ulong *)(param_1 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_1 + 0x958)" * (cast_expression "(ulong *)(param_1 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x958)" ( (binary_expression "param_1 + 0x958" identifier + number_literal) )))))) ;) (expression_statement "plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);" (assignment_expression "plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" * (cast_expression "(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x950) + uVar5 * 8)" ( (binary_expression "*(long *)(param_1 + 0x950) + uVar5 * 8" (pointer_expression "*(long *)(param_1 + 0x950)" * (cast_expression "(long *)(param_1 + 0x950)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x950)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) )))) + (binary_expression "uVar5 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }" if (parenthesized_expression "(plVar9 != (long *)0x0)" ( (binary_expression "plVar9 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }" { (expression_statement "uVar7 = ((long *)*plVar9)[1];" (assignment_expression "uVar7 = ((long *)*plVar9)[1]" identifier = (subscript_expression "((long *)*plVar9)[1]" (parenthesized_expression "((long *)*plVar9)" ( (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar3 = (long *)*plVar9;" (assignment_expression "plVar3 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (while_statement "while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }" while (parenthesized_expression "(plVar8 = plVar3, uVar7 != uVar2)" ( (comma_expression "plVar8 = plVar3, uVar7 != uVar2" (assignment_expression "plVar8 = plVar3" identifier = identifier) , (binary_expression "uVar7 != uVar2" identifier != identifier)) )) (compound_statement "{\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }" { (expression_statement "plVar3 = (long *)*plVar8;" (assignment_expression "plVar3 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) (if_statement "if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;" if (parenthesized_expression "((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))" ( (binary_expression "(plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958))" (parenthesized_expression "(plVar3 == (long *)0x0)" ( (binary_expression "plVar3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958))" ( (comma_expression "uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" (assignment_expression "uVar7 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) , (comma_expression "plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" (assignment_expression "plVar9 = plVar8" identifier = identifier) , (binary_expression "uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" identifier != (binary_expression "uVar7 % *(ulong *)(param_1 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_1 + 0x958)" * (cast_expression "(ulong *)(param_1 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x958)" ( (binary_expression "param_1 + 0x958" identifier + number_literal) )))))))) ))) )) (goto_statement "goto joined_r0x001e76a3;" goto statement_identifier ;)) })) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (if_statement "if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }" { (expression_statement "local_38 = *(char **)(lVar4 + 0x18);" (assignment_expression "local_38 = *(char **)(lVar4 + 0x18)" identifier = (pointer_expression "*(char **)(lVar4 + 0x18)" * (cast_expression "(char **)(lVar4 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_40 = *(undefined8 *)(lVar4 + 0x10);" (assignment_expression "local_40 = *(undefined8 *)(lVar4 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(lVar4 + 0x10)" * (cast_expression "(undefined8 *)(lVar4 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) })) })) })) (labeled_statement "joined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" statement_identifier : (if_statement "if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" if (parenthesized_expression "(local_38 == (char *)0x0)" ( (binary_expression "local_38 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" { (expression_statement "local_38 = "(unknown)";" (assignment_expression "local_38 = "(unknown)"" identifier = (string_literal ""(unknown)"" " string_content ")) ;) (if_statement "if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }" if (parenthesized_expression "(*(int **)(param_2 + 0x30) != (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x30) != (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }" { (expression_statement "iVar1 = **(int **)(param_2 + 0x30);" (assignment_expression "iVar1 = **(int **)(param_2 + 0x30)" identifier = (pointer_expression "**(int **)(param_2 + 0x30)" * (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "local_38 = "(anonymous namespace)";" (assignment_expression "local_38 = "(anonymous namespace)"" identifier = (string_literal ""(anonymous namespace)"" " string_content ")) ;) (if_statement "if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }" if (parenthesized_expression "((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17))" ( (binary_expression "(iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)" (parenthesized_expression "(iVar1 != 0x39)" ( (binary_expression "iVar1 != 0x39" identifier != number_literal) )) && (parenthesized_expression "(local_38 = "(unknown)", iVar1 == 0x17)" ( (comma_expression "local_38 = "(unknown)", iVar1 == 0x17" (assignment_expression "local_38 = "(unknown)"" identifier = (string_literal ""(unknown)"" " string_content ")) , (binary_expression "iVar1 == 0x17" identifier == number_literal)) ))) )) (compound_statement "{\n        local_38 = "(anonymous union)";\n      }" { (expression_statement "local_38 = "(anonymous union)";" (assignment_expression "local_38 = "(anonymous union)"" identifier = (string_literal ""(anonymous union)"" " string_content ")) ;) })) })) }))) (expression_statement "local_48 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_48 = *(undefined8 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "FUN_001e9520(param_1 + 0x950,&local_48);" (call_expression "FUN_001e9520(param_1 + 0x950,&local_48)" identifier (argument_list "(param_1 + 0x950,&local_48)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) , (pointer_expression "&local_48" & identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void add_declaration(Gdb_index_info_reader * this, Dwarf_die * die,\n   Dwarf_die * context) */\n\nvoid __thiscall\ngold::Gdb_index_info_reader::add_declaration\n          (Gdb_index_info_reader *this,Dwarf_die *die,Dwarf_die *context)\n\n{\n  uint uVar1;\n  _Hash_node_base *p_Var2;\n  ulong uVar3;\n  ulong uVar4;\n  _Hash_node_base *p_Var5;\n  __bucket_type p_Var6;\n  __bucket_type p_Var7;\n  _Hash_node_base *p_Var8;\n  off_t local_48;\n  _Hash_node_base *local_40;\n  _Hash_node_base *local_38;\n  \n  p_Var5 = (_Hash_node_base *)die->name_;\n  if (p_Var5 == (_Hash_node_base *)0x0) {\n    Dwarf_die::set_name(die);\n    p_Var5 = (_Hash_node_base *)die->name_;\n  }\n  p_Var8 = (_Hash_node_base *)0x0;\n  if (context != (Dwarf_die *)0x0) {\n    p_Var8 = (_Hash_node_base *)context->die_offset_;\n  }\n  if (die->attributes_read_ == false) {\n    Dwarf_die::read_attributes(die);\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n    if (die->attributes_read_ == false) {\n      Dwarf_die::read_attributes(die);\n    }\n  }\n  else {\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n  }\n  p_Var2 = (_Hash_node_base *)die->abstract_origin_;\njoined_r0x001e762c:\n  local_38 = p_Var5;\n  local_40 = p_Var8;\n  if (0 < (long)p_Var2) {\n    uVar3 = (this->declarations_)._M_h._M_bucket_count;\n    uVar4 = (ulong)p_Var2 % uVar3;\n    p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4];\n    if (p_Var7 != (__bucket_type)0x0) {\n      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var7->_M_nxt;\n      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }\n      p_Var5 = p_Var7->_M_nxt;\n      if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (_Hash_node_base *)0x0) {\n    local_38 = (_Hash_node_base *)0x3e1962;\n    if (die->abbrev_code_ != (Abbrev_code *)0x0) {\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }\n  }\n  local_48 = die->die_offset_;\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,&local_48);\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Gdb_index_info_reader::add_declaration\n          (Gdb_index_info_reader *this,Dwarf_die *die,Dwarf_die *context)\n\n{\n  uint uVar1;\n  _Hash_node_base *p_Var2;\n  ulong uVar3;\n  ulong uVar4;\n  _Hash_node_base *p_Var5;\n  __bucket_type p_Var6;\n  __bucket_type p_Var7;\n  _Hash_node_base *p_Var8;\n  off_t local_48;\n  _Hash_node_base *local_40;\n  _Hash_node_base *local_38;\n  \n  p_Var5 = (_Hash_node_base *)die->name_;\n  if (p_Var5 == (_Hash_node_base *)0x0) {\n    Dwarf_die::set_name(die);\n    p_Var5 = (_Hash_node_base *)die->name_;\n  }\n  p_Var8 = (_Hash_node_base *)0x0;\n  if (context != (Dwarf_die *)0x0) {\n    p_Var8 = (_Hash_node_base *)context->die_offset_;\n  }\n  if (die->attributes_read_ == false) {\n    Dwarf_die::read_attributes(die);\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n    if (die->attributes_read_ == false) {\n      Dwarf_die::read_attributes(die);\n    }\n  }\n  else {\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n  }\n  p_Var2 = (_Hash_node_base *)die->abstract_origin_;\njoined_r0x001e762c:\n  local_38 = p_Var5;\n  local_40 = p_Var8;\n  if (0 < (long)p_Var2) {\n    uVar3 = (this->declarations_)._M_h._M_bucket_count;\n    uVar4 = (ulong)p_Var2 % uVar3;\n    p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4];\n    if (p_Var7 != (__bucket_type)0x0) {\n      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var7->_M_nxt;\n      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }\n      p_Var5 = p_Var7->_M_nxt;\n      if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (_Hash_node_base *)0x0) {\n    local_38 = (_Hash_node_base *)0x3e1962;\n    if (die->abbrev_code_ != (Abbrev_code *)0x0) {\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }\n  }\n  local_48 = die->die_offset_;\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,&local_48);\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Gdb_index_info_reader::" identifier : : identifier : :) (function_declarator "add_declaration\n          (Gdb_index_info_reader *this,Dwarf_die *die,Dwarf_die *context)" identifier (parameter_list "(Gdb_index_info_reader *this,Dwarf_die *die,Dwarf_die *context)" ( (parameter_declaration "Gdb_index_info_reader *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "Dwarf_die *die" type_identifier (pointer_declarator "*die" * identifier)) , (parameter_declaration "Dwarf_die *context" type_identifier (pointer_declarator "*context" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  _Hash_node_base *p_Var2;\n  ulong uVar3;\n  ulong uVar4;\n  _Hash_node_base *p_Var5;\n  __bucket_type p_Var6;\n  __bucket_type p_Var7;\n  _Hash_node_base *p_Var8;\n  off_t local_48;\n  _Hash_node_base *local_40;\n  _Hash_node_base *local_38;\n  \n  p_Var5 = (_Hash_node_base *)die->name_;\n  if (p_Var5 == (_Hash_node_base *)0x0) {\n    Dwarf_die::set_name(die);\n    p_Var5 = (_Hash_node_base *)die->name_;\n  }\n  p_Var8 = (_Hash_node_base *)0x0;\n  if (context != (Dwarf_die *)0x0) {\n    p_Var8 = (_Hash_node_base *)context->die_offset_;\n  }\n  if (die->attributes_read_ == false) {\n    Dwarf_die::read_attributes(die);\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n    if (die->attributes_read_ == false) {\n      Dwarf_die::read_attributes(die);\n    }\n  }\n  else {\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n  }\n  p_Var2 = (_Hash_node_base *)die->abstract_origin_;\njoined_r0x001e762c:\n  local_38 = p_Var5;\n  local_40 = p_Var8;\n  if (0 < (long)p_Var2) {\n    uVar3 = (this->declarations_)._M_h._M_bucket_count;\n    uVar4 = (ulong)p_Var2 % uVar3;\n    p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4];\n    if (p_Var7 != (__bucket_type)0x0) {\n      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var7->_M_nxt;\n      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }\n      p_Var5 = p_Var7->_M_nxt;\n      if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (_Hash_node_base *)0x0) {\n    local_38 = (_Hash_node_base *)0x3e1962;\n    if (die->abbrev_code_ != (Abbrev_code *)0x0) {\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }\n  }\n  local_48 = die->die_offset_;\n  std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,&local_48);\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "__bucket_type p_Var6;" type_identifier identifier ;) (declaration "__bucket_type p_Var7;" type_identifier identifier ;) (declaration "_Hash_node_base *p_Var8;" type_identifier (pointer_declarator "*p_Var8" * identifier) ;) (declaration "off_t local_48;" type_identifier identifier ;) (declaration "_Hash_node_base *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "_Hash_node_base *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (expression_statement "p_Var5 = (_Hash_node_base *)die->name_;" (assignment_expression "p_Var5 = (_Hash_node_base *)die->name_" identifier = (cast_expression "(_Hash_node_base *)die->name_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->name_" identifier -> field_identifier))) ;) (if_statement "if (p_Var5 == (_Hash_node_base *)0x0) {\n    Dwarf_die::set_name(die);\n    p_Var5 = (_Hash_node_base *)die->name_;\n  }" if (parenthesized_expression "(p_Var5 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var5 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    Dwarf_die::set_name(die);\n    p_Var5 = (_Hash_node_base *)die->name_;\n  }" { (labeled_statement "Dwarf_die::set_name(die);" statement_identifier : (ERROR ":" :) (expression_statement "set_name(die);" (call_expression "set_name(die)" identifier (argument_list "(die)" ( identifier ))) ;)) (expression_statement "p_Var5 = (_Hash_node_base *)die->name_;" (assignment_expression "p_Var5 = (_Hash_node_base *)die->name_" identifier = (cast_expression "(_Hash_node_base *)die->name_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->name_" identifier -> field_identifier))) ;) })) (expression_statement "p_Var8 = (_Hash_node_base *)0x0;" (assignment_expression "p_Var8 = (_Hash_node_base *)0x0" identifier = (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (context != (Dwarf_die *)0x0) {\n    p_Var8 = (_Hash_node_base *)context->die_offset_;\n  }" if (parenthesized_expression "(context != (Dwarf_die *)0x0)" ( (binary_expression "context != (Dwarf_die *)0x0" identifier != (cast_expression "(Dwarf_die *)0x0" ( (type_descriptor "Dwarf_die *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    p_Var8 = (_Hash_node_base *)context->die_offset_;\n  }" { (expression_statement "p_Var8 = (_Hash_node_base *)context->die_offset_;" (assignment_expression "p_Var8 = (_Hash_node_base *)context->die_offset_" identifier = (cast_expression "(_Hash_node_base *)context->die_offset_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "context->die_offset_" identifier -> field_identifier))) ;) })) (if_statement "if (die->attributes_read_ == false) {\n    Dwarf_die::read_attributes(die);\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n    if (die->attributes_read_ == false) {\n      Dwarf_die::read_attributes(die);\n    }\n  }\n  else {\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n  }" if (parenthesized_expression "(die->attributes_read_ == false)" ( (binary_expression "die->attributes_read_ == false" (field_expression "die->attributes_read_" identifier -> field_identifier) == false) )) (compound_statement "{\n    Dwarf_die::read_attributes(die);\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n    if (die->attributes_read_ == false) {\n      Dwarf_die::read_attributes(die);\n    }\n  }" { (labeled_statement "Dwarf_die::read_attributes(die);" statement_identifier : (ERROR ":" :) (expression_statement "read_attributes(die);" (call_expression "read_attributes(die)" identifier (argument_list "(die)" ( identifier ))) ;)) (expression_statement "p_Var2 = (_Hash_node_base *)die->specification_;" (assignment_expression "p_Var2 = (_Hash_node_base *)die->specification_" identifier = (cast_expression "(_Hash_node_base *)die->specification_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->specification_" identifier -> field_identifier))) ;) (if_statement "if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;" if (parenthesized_expression "(p_Var2 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var2 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto joined_r0x001e762c;" goto statement_identifier ;)) (if_statement "if (die->attributes_read_ == false) {\n      Dwarf_die::read_attributes(die);\n    }" if (parenthesized_expression "(die->attributes_read_ == false)" ( (binary_expression "die->attributes_read_ == false" (field_expression "die->attributes_read_" identifier -> field_identifier) == false) )) (compound_statement "{\n      Dwarf_die::read_attributes(die);\n    }" { (labeled_statement "Dwarf_die::read_attributes(die);" statement_identifier : (ERROR ":" :) (expression_statement "read_attributes(die);" (call_expression "read_attributes(die)" identifier (argument_list "(die)" ( identifier ))) ;)) })) }) (else_clause "else {\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n  }" else (compound_statement "{\n    p_Var2 = (_Hash_node_base *)die->specification_;\n    if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;\n  }" { (expression_statement "p_Var2 = (_Hash_node_base *)die->specification_;" (assignment_expression "p_Var2 = (_Hash_node_base *)die->specification_" identifier = (cast_expression "(_Hash_node_base *)die->specification_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->specification_" identifier -> field_identifier))) ;) (if_statement "if (p_Var2 != (_Hash_node_base *)0x0) goto joined_r0x001e762c;" if (parenthesized_expression "(p_Var2 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var2 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto joined_r0x001e762c;" goto statement_identifier ;)) }))) (expression_statement "p_Var2 = (_Hash_node_base *)die->abstract_origin_;" (assignment_expression "p_Var2 = (_Hash_node_base *)die->abstract_origin_" identifier = (cast_expression "(_Hash_node_base *)die->abstract_origin_" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "die->abstract_origin_" identifier -> field_identifier))) ;) (labeled_statement "joined_r0x001e762c:\n  local_38 = p_Var5;" statement_identifier : (expression_statement "local_38 = p_Var5;" (assignment_expression "local_38 = p_Var5" identifier = identifier) ;)) (expression_statement "local_40 = p_Var8;" (assignment_expression "local_40 = p_Var8" identifier = identifier) ;) (if_statement "if (0 < (long)p_Var2) {\n    uVar3 = (this->declarations_)._M_h._M_bucket_count;\n    uVar4 = (ulong)p_Var2 % uVar3;\n    p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4];\n    if (p_Var7 != (__bucket_type)0x0) {\n      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var7->_M_nxt;\n      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }\n      p_Var5 = p_Var7->_M_nxt;\n      if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }\n    }\n  }" if (parenthesized_expression "(0 < (long)p_Var2)" ( (binary_expression "0 < (long)p_Var2" number_literal < (cast_expression "(long)p_Var2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar3 = (this->declarations_)._M_h._M_bucket_count;\n    uVar4 = (ulong)p_Var2 % uVar3;\n    p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4];\n    if (p_Var7 != (__bucket_type)0x0) {\n      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var7->_M_nxt;\n      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }\n      p_Var5 = p_Var7->_M_nxt;\n      if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }\n    }\n  }" { (expression_statement "uVar3 = (this->declarations_)._M_h._M_bucket_count;" (assignment_expression "uVar3 = (this->declarations_)._M_h._M_bucket_count" identifier = (field_expression "(this->declarations_)._M_h._M_bucket_count" (field_expression "(this->declarations_)._M_h" (parenthesized_expression "(this->declarations_)" ( (field_expression "this->declarations_" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (expression_statement "uVar4 = (ulong)p_Var2 % uVar3;" (assignment_expression "uVar4 = (ulong)p_Var2 % uVar3" identifier = (binary_expression "(ulong)p_Var2 % uVar3" (cast_expression "(ulong)p_Var2" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4];" (assignment_expression "p_Var7 = (this->declarations_)._M_h._M_buckets[uVar4]" identifier = (subscript_expression "(this->declarations_)._M_h._M_buckets[uVar4]" (field_expression "(this->declarations_)._M_h._M_buckets" (field_expression "(this->declarations_)._M_h" (parenthesized_expression "(this->declarations_)" ( (field_expression "this->declarations_" identifier -> field_identifier) )) . field_identifier) . field_identifier) [ identifier ])) ;) (if_statement "if (p_Var7 != (__bucket_type)0x0) {\n      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var7->_M_nxt;\n      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }\n      p_Var5 = p_Var7->_M_nxt;\n      if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }\n    }" if (parenthesized_expression "(p_Var7 != (__bucket_type)0x0)" ( (binary_expression "p_Var7 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n      p_Var5 = p_Var7->_M_nxt[1]._M_nxt;\n      p_Var8 = p_Var7->_M_nxt;\n      while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }\n      p_Var5 = p_Var7->_M_nxt;\n      if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }\n    }" { (expression_statement "p_Var5 = p_Var7->_M_nxt[1]._M_nxt;" (assignment_expression "p_Var5 = p_Var7->_M_nxt[1]._M_nxt" identifier = (field_expression "p_Var7->_M_nxt[1]._M_nxt" (subscript_expression "p_Var7->_M_nxt[1]" (field_expression "p_Var7->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var8 = p_Var7->_M_nxt;" (assignment_expression "p_Var8 = p_Var7->_M_nxt" identifier = (field_expression "p_Var7->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (p_Var6 = p_Var8, p_Var5 != p_Var2) {\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }" while (parenthesized_expression "(p_Var6 = p_Var8, p_Var5 != p_Var2)" ( (comma_expression "p_Var6 = p_Var8, p_Var5 != p_Var2" (assignment_expression "p_Var6 = p_Var8" identifier = identifier) , (binary_expression "p_Var5 != p_Var2" identifier != identifier)) )) (compound_statement "{\n        p_Var8 = p_Var6->_M_nxt;\n        if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;\n      }" { (expression_statement "p_Var8 = p_Var6->_M_nxt;" (assignment_expression "p_Var8 = p_Var6->_M_nxt" identifier = (field_expression "p_Var6->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if ((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))\n        goto joined_r0x001e76a3;" if (parenthesized_expression "((p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3))" ( (binary_expression "(p_Var8 == (_Hash_node_base *)0x0) ||\n           (p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3)" (parenthesized_expression "(p_Var8 == (_Hash_node_base *)0x0)" ( (binary_expression "p_Var8 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3)" ( (comma_expression "p_Var5 = p_Var8[1]._M_nxt, p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3" (assignment_expression "p_Var5 = p_Var8[1]._M_nxt" identifier = (field_expression "p_Var8[1]._M_nxt" (subscript_expression "p_Var8[1]" identifier [ number_literal ]) . field_identifier)) , (comma_expression "p_Var7 = p_Var6, uVar4 != (ulong)p_Var5 % uVar3" (assignment_expression "p_Var7 = p_Var6" identifier = identifier) , (binary_expression "uVar4 != (ulong)p_Var5 % uVar3" identifier != (binary_expression "(ulong)p_Var5 % uVar3" (cast_expression "(ulong)p_Var5" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)))) ))) )) (goto_statement "goto joined_r0x001e76a3;" goto statement_identifier ;)) })) (expression_statement "p_Var5 = p_Var7->_M_nxt;" (assignment_expression "p_Var5 = p_Var7->_M_nxt" identifier = (field_expression "p_Var7->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if (p_Var5 != (_Hash_node_base *)0x0) {\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }" if (parenthesized_expression "(p_Var5 != (_Hash_node_base *)0x0)" ( (binary_expression "p_Var5 != (_Hash_node_base *)0x0" identifier != (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        local_38 = p_Var5[3]._M_nxt;\n        local_40 = p_Var5[2]._M_nxt;\n      }" { (expression_statement "local_38 = p_Var5[3]._M_nxt;" (assignment_expression "local_38 = p_Var5[3]._M_nxt" identifier = (field_expression "p_Var5[3]._M_nxt" (subscript_expression "p_Var5[3]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "local_40 = p_Var5[2]._M_nxt;" (assignment_expression "local_40 = p_Var5[2]._M_nxt" identifier = (field_expression "p_Var5[2]._M_nxt" (subscript_expression "p_Var5[2]" identifier [ number_literal ]) . field_identifier)) ;) })) })) })) (labeled_statement "joined_r0x001e76a3:\n  if (local_38 == (_Hash_node_base *)0x0) {\n    local_38 = (_Hash_node_base *)0x3e1962;\n    if (die->abbrev_code_ != (Abbrev_code *)0x0) {\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }\n  }" statement_identifier : (if_statement "if (local_38 == (_Hash_node_base *)0x0) {\n    local_38 = (_Hash_node_base *)0x3e1962;\n    if (die->abbrev_code_ != (Abbrev_code *)0x0) {\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }\n  }" if (parenthesized_expression "(local_38 == (_Hash_node_base *)0x0)" ( (binary_expression "local_38 == (_Hash_node_base *)0x0" identifier == (cast_expression "(_Hash_node_base *)0x0" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_38 = (_Hash_node_base *)0x3e1962;\n    if (die->abbrev_code_ != (Abbrev_code *)0x0) {\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }\n  }" { (expression_statement "local_38 = (_Hash_node_base *)0x3e1962;" (assignment_expression "local_38 = (_Hash_node_base *)0x3e1962" identifier = (cast_expression "(_Hash_node_base *)0x3e1962" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (die->abbrev_code_ != (Abbrev_code *)0x0) {\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }" if (parenthesized_expression "(die->abbrev_code_ != (Abbrev_code *)0x0)" ( (binary_expression "die->abbrev_code_ != (Abbrev_code *)0x0" (field_expression "die->abbrev_code_" identifier -> field_identifier) != (cast_expression "(Abbrev_code *)0x0" ( (type_descriptor "Abbrev_code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar1 = die->abbrev_code_->tag;\n      local_38 = (_Hash_node_base *)0x3e1926;\n      if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }\n    }" { (expression_statement "uVar1 = die->abbrev_code_->tag;" (assignment_expression "uVar1 = die->abbrev_code_->tag" identifier = (field_expression "die->abbrev_code_->tag" (field_expression "die->abbrev_code_" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "local_38 = (_Hash_node_base *)0x3e1926;" (assignment_expression "local_38 = (_Hash_node_base *)0x3e1926" identifier = (cast_expression "(_Hash_node_base *)0x3e1926" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)) {\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }" if (parenthesized_expression "((uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17))" ( (binary_expression "(uVar1 != 0x39) && (local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)" (parenthesized_expression "(uVar1 != 0x39)" ( (binary_expression "uVar1 != 0x39" identifier != number_literal) )) && (parenthesized_expression "(local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17)" ( (comma_expression "local_38 = (_Hash_node_base *)0x3e1962, uVar1 == 0x17" (assignment_expression "local_38 = (_Hash_node_base *)0x3e1962" identifier = (cast_expression "(_Hash_node_base *)0x3e1962" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) , (binary_expression "uVar1 == 0x17" identifier == number_literal)) ))) )) (compound_statement "{\n        local_38 = (_Hash_node_base *)0x3e196c;\n      }" { (expression_statement "local_38 = (_Hash_node_base *)0x3e196c;" (assignment_expression "local_38 = (_Hash_node_base *)0x3e196c" identifier = (cast_expression "(_Hash_node_base *)0x3e196c" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) }))) (expression_statement "local_48 = die->die_offset_;" (assignment_expression "local_48 = die->die_offset_" identifier = (field_expression "die->die_offset_" identifier -> field_identifier)) ;) (ERROR "std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std::pair<long_int,_gold::Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::" (comma_expression "std::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std" identifier (ERROR "::\n  _Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>" : : (comma_expression "_Hashtable<long_int,_std" (binary_expression "_Hashtable<long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>,_std" identifier (ERROR "::Declaration_pair>" : : identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>_>,_std" identifier (ERROR "::Declaration_pair>_>" : : (binary_expression "Declaration_pair>_" identifier > identifier) >) , identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<long_int>,_std" identifier (ERROR "::_Select1st,_std::equal_to<long_int>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<long_int" identifier < identifier) >) , identifier) : : (binary_expression "hash<long_int" identifier < identifier) >) , identifier) : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : identifier , identifier : : identifier : : (comma_expression "_Hashtable_traits<false,_false,_true>_>\n  ::_M_emplace<std" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n  ::_M_emplace<std" identifier , (binary_expression "_true>_>\n  ::_M_emplace<std" (binary_expression "_true>_>\n  ::_M_emplace" (binary_expression "_true>_" identifier > identifier) > (ERROR "::" : :) identifier) < identifier))) : : (comma_expression "pair<long_int,_gold" (binary_expression "pair<long_int" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std" identifier (ERROR "::Declaration_pair>_>\n            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::Gdb_index_info_reader::Declaration_pair>_>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>" : : (binary_expression "Declaration_pair>_" identifier > identifier) > ( ( (comma_expression "_Hashtable<long_int,_std" (binary_expression "_Hashtable<long_int" identifier < identifier) , identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>,_std" identifier (ERROR "::Declaration_pair>" : : identifier >) , identifier) : : (binary_expression "allocator<std" identifier < identifier) : : (comma_expression "pair<long_int_const,_gold" (binary_expression "pair<long_int_const" identifier < identifier) , identifier) : : (comma_expression "Gdb_index_info_reader::Declaration_pair>_>,_std" identifier (ERROR "::Declaration_pair>_>" : : (binary_expression "Declaration_pair>_" identifier > identifier) >) , identifier) : : (comma_expression "__detail::_Select1st,_std::equal_to<long_int>,_std" identifier (ERROR "::_Select1st,_std::equal_to<long_int>" : : (comma_expression "_Select1st,_std" identifier , identifier) : : (binary_expression "equal_to<long_int" identifier < identifier) >) , identifier) : : (binary_expression "hash<long_int" identifier < identifier) >) , identifier) : :) (labeled_statement "__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,&local_48);" 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<false,_false,_true>_>\n              *)&this->declarations_,&local_48);" 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<false,_false,_true>_>\n              *)&this->declarations_,&local_48);" statement_identifier (ERROR "::_Prime_rehash_policy,_std:" : : (comma_expression "_Prime_rehash_policy,_std" identifier , identifier) :) : (labeled_statement "__detail::_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,&local_48);" statement_identifier : (ERROR ":" :) (expression_statement "_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,&local_48);" (comma_expression "_Hashtable_traits<false,_false,_true>_>\n              *)&this->declarations_,&local_48" (binary_expression "_Hashtable_traits<false" identifier < false) , (comma_expression "_false,_true>_>\n              *)&this->declarations_,&local_48" identifier , (comma_expression "_true>_>\n              *)&this->declarations_,&local_48" (binary_expression "_true>_>\n              *)&this->declarations_" (binary_expression "_true>_" identifier > identifier) > (pointer_expression "*)&this->declarations_" * (ERROR ")" )) (pointer_expression "&this->declarations_" & (field_expression "this->declarations_" identifier -> field_identifier)))) , (pointer_expression "&local_48" & identifier)))) (ERROR ")" )) ;))))) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001e7580(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}\n\n" (function_definition "void FUN_001e7580(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}" primitive_type (function_declarator "FUN_001e7580(long param_1,long param_2,long param_3)" identifier (parameter_list "(long param_1,long param_2,long param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (expression_statement "pcVar6 = *(char **)(param_2 + 0x58);" (assignment_expression "pcVar6 = *(char **)(param_2 + 0x58)" identifier = (pointer_expression "*(char **)(param_2 + 0x58)" * (cast_expression "(char **)(param_2 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) ))))) ;) (if_statement "if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }" { (expression_statement "FUN_00303330(param_2);" (call_expression "FUN_00303330(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "pcVar6 = *(char **)(param_2 + 0x58);" (assignment_expression "pcVar6 = *(char **)(param_2 + 0x58)" identifier = (pointer_expression "*(char **)(param_2 + 0x58)" * (cast_expression "(char **)(param_2 + 0x58)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x58)" ( (binary_expression "param_2 + 0x58" identifier + number_literal) ))))) ;) })) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }" { (expression_statement "uVar10 = *(undefined8 *)(param_3 + 0x10);" (assignment_expression "uVar10 = *(undefined8 *)(param_3 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_3 + 0x10)" * (cast_expression "(undefined8 *)(param_3 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x10)" ( (binary_expression "param_3 + 0x10" identifier + number_literal) ))))) ;) })) (if_statement "if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x50) == '\0'" (pointer_expression "*(char *)(param_2 + 0x50)" * (cast_expression "(char *)(param_2 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }" { (expression_statement "FUN_00303310(param_2);" (call_expression "FUN_00303310(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "uVar2 = *(ulong *)(param_2 + 0x80);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x80)" * (cast_expression "(ulong *)(param_2 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x80)" ( (binary_expression "param_2 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 != 0) goto joined_r0x001e762c;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x001e762c;" goto statement_identifier ;)) (if_statement "if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }" if (parenthesized_expression "(*(char *)(param_2 + 0x50) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x50) == '\0'" (pointer_expression "*(char *)(param_2 + 0x50)" * (cast_expression "(char *)(param_2 + 0x50)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x50)" ( (binary_expression "param_2 + 0x50" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      FUN_00303310(param_2);\n    }" { (expression_statement "FUN_00303310(param_2);" (call_expression "FUN_00303310(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) })) }) (else_clause "else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" else (compound_statement "{\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" { (expression_statement "uVar2 = *(ulong *)(param_2 + 0x80);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x80)" * (cast_expression "(ulong *)(param_2 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x80)" ( (binary_expression "param_2 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (uVar2 != 0) goto joined_r0x001e762c;" if (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x001e762c;" goto statement_identifier ;)) }))) (expression_statement "uVar2 = *(ulong *)(param_2 + 0x88);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x88)" identifier = (pointer_expression "*(ulong *)(param_2 + 0x88)" * (cast_expression "(ulong *)(param_2 + 0x88)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x88)" ( (binary_expression "param_2 + 0x88" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x001e762c:\n  local_38 = pcVar6;" statement_identifier : (expression_statement "local_38 = pcVar6;" (assignment_expression "local_38 = pcVar6" identifier = identifier) ;)) (expression_statement "local_40 = uVar10;" (assignment_expression "local_40 = uVar10" identifier = identifier) ;) (if_statement "if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }" if (parenthesized_expression "(0 < (long)uVar2)" ( (binary_expression "0 < (long)uVar2" number_literal < (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )) (compound_statement "{\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }" { (expression_statement "uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);" (assignment_expression "uVar5 = uVar2 % *(ulong *)(param_1 + 0x958)" identifier = (binary_expression "uVar2 % *(ulong *)(param_1 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_1 + 0x958)" * (cast_expression "(ulong *)(param_1 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x958)" ( (binary_expression "param_1 + 0x958" identifier + number_literal) )))))) ;) (expression_statement "plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);" (assignment_expression "plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" * (cast_expression "(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_1 + 0x950) + uVar5 * 8)" ( (binary_expression "*(long *)(param_1 + 0x950) + uVar5 * 8" (pointer_expression "*(long *)(param_1 + 0x950)" * (cast_expression "(long *)(param_1 + 0x950)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x950)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) )))) + (binary_expression "uVar5 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }" if (parenthesized_expression "(plVar9 != (long *)0x0)" ( (binary_expression "plVar9 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }" { (expression_statement "uVar7 = ((long *)*plVar9)[1];" (assignment_expression "uVar7 = ((long *)*plVar9)[1]" identifier = (subscript_expression "((long *)*plVar9)[1]" (parenthesized_expression "((long *)*plVar9)" ( (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar3 = (long *)*plVar9;" (assignment_expression "plVar3 = (long *)*plVar9" identifier = (cast_expression "(long *)*plVar9" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar9" * identifier))) ;) (while_statement "while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }" while (parenthesized_expression "(plVar8 = plVar3, uVar7 != uVar2)" ( (comma_expression "plVar8 = plVar3, uVar7 != uVar2" (assignment_expression "plVar8 = plVar3" identifier = identifier) , (binary_expression "uVar7 != uVar2" identifier != identifier)) )) (compound_statement "{\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }" { (expression_statement "plVar3 = (long *)*plVar8;" (assignment_expression "plVar3 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) (if_statement "if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;" if (parenthesized_expression "((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))" ( (binary_expression "(plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958))" (parenthesized_expression "(plVar3 == (long *)0x0)" ( (binary_expression "plVar3 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958))" ( (comma_expression "uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" (assignment_expression "uVar7 = plVar3[1]" identifier = (subscript_expression "plVar3[1]" identifier [ number_literal ])) , (comma_expression "plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" (assignment_expression "plVar9 = plVar8" identifier = identifier) , (binary_expression "uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" identifier != (binary_expression "uVar7 % *(ulong *)(param_1 + 0x958)" identifier % (pointer_expression "*(ulong *)(param_1 + 0x958)" * (cast_expression "(ulong *)(param_1 + 0x958)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x958)" ( (binary_expression "param_1 + 0x958" identifier + number_literal) )))))))) ))) )) (goto_statement "goto joined_r0x001e76a3;" goto statement_identifier ;)) })) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (if_statement "if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }" if (parenthesized_expression "(lVar4 != 0)" ( (binary_expression "lVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }" { (expression_statement "local_38 = *(char **)(lVar4 + 0x18);" (assignment_expression "local_38 = *(char **)(lVar4 + 0x18)" identifier = (pointer_expression "*(char **)(lVar4 + 0x18)" * (cast_expression "(char **)(lVar4 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "local_40 = *(undefined8 *)(lVar4 + 0x10);" (assignment_expression "local_40 = *(undefined8 *)(lVar4 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(lVar4 + 0x10)" * (cast_expression "(undefined8 *)(lVar4 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x10)" ( (binary_expression "lVar4 + 0x10" identifier + number_literal) ))))) ;) })) })) })) (labeled_statement "joined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" statement_identifier : (if_statement "if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" if (parenthesized_expression "(local_38 == (char *)0x0)" ( (binary_expression "local_38 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" { (expression_statement "local_38 = "(unknown)";" (assignment_expression "local_38 = "(unknown)"" identifier = (string_literal ""(unknown)"" " string_content ")) ;) (if_statement "if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }" if (parenthesized_expression "(*(int **)(param_2 + 0x30) != (int *)0x0)" ( (binary_expression "*(int **)(param_2 + 0x30) != (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }" { (expression_statement "iVar1 = **(int **)(param_2 + 0x30);" (assignment_expression "iVar1 = **(int **)(param_2 + 0x30)" identifier = (pointer_expression "**(int **)(param_2 + 0x30)" * (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) )))))) ;) (expression_statement "local_38 = "(anonymous namespace)";" (assignment_expression "local_38 = "(anonymous namespace)"" identifier = (string_literal ""(anonymous namespace)"" " string_content ")) ;) (if_statement "if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }" if (parenthesized_expression "((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17))" ( (binary_expression "(iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)" (parenthesized_expression "(iVar1 != 0x39)" ( (binary_expression "iVar1 != 0x39" identifier != number_literal) )) && (parenthesized_expression "(local_38 = "(unknown)", iVar1 == 0x17)" ( (comma_expression "local_38 = "(unknown)", iVar1 == 0x17" (assignment_expression "local_38 = "(unknown)"" identifier = (string_literal ""(unknown)"" " string_content ")) , (binary_expression "iVar1 == 0x17" identifier == number_literal)) ))) )) (compound_statement "{\n        local_38 = "(anonymous union)";\n      }" { (expression_statement "local_38 = "(anonymous union)";" (assignment_expression "local_38 = "(anonymous union)"" identifier = (string_literal ""(anonymous union)"" " string_content ")) ;) })) })) }))) (expression_statement "local_48 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_48 = *(undefined8 *)(param_2 + 0x10)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0x10)" * (cast_expression "(undefined8 *)(param_2 + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "FUN_001e9520(param_1 + 0x950,&local_48);" (call_expression "FUN_001e9520(param_1 + 0x950,&local_48)" identifier (argument_list "(param_1 + 0x950,&local_48)" ( (binary_expression "param_1 + 0x950" identifier + number_literal) , (pointer_expression "&local_48" & identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) }) (else_clause else (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 IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (binary_expression IDENT % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))))) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (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 *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (string_literal " string_content ")) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (pointer_expression & IDENT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001e7580(long param_1,long param_2,long param_3)\n\n{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001e7580(long param_1,long param_2,long param_3)" (identifier "FUN_001e7580") (parameter_list "(long param_1,long param_2,long param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  ulong uVar2;\n  long *plVar3;\n  long lVar4;\n  ulong uVar5;\n  char *pcVar6;\n  ulong uVar7;\n  long *plVar8;\n  long *plVar9;\n  undefined8 uVar10;\n  undefined8 local_48;\n  undefined8 local_40;\n  char *local_38;\n  \n  pcVar6 = *(char **)(param_2 + 0x58);\n  if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }\n  uVar10 = 0;\n  if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }\n  if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }\n  uVar2 = *(ulong *)(param_2 + 0x88);\njoined_r0x001e762c:\n  local_38 = pcVar6;\n  local_40 = uVar10;\n  if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }\njoined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }\n  local_48 = *(undefined8 *)(param_2 + 0x10);\n  FUN_001e9520(param_1 + 0x950,&local_48);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "ulong uVar2;" (type_identifier "ulong") (identifier "uVar2") (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "long *plVar9;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar9" (* "*") (identifier "plVar9")) (; ";")) (declaration "undefined8 uVar10;" (type_identifier "undefined8") (identifier "uVar10") (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "undefined8 local_40;" (type_identifier "undefined8") (identifier "local_40") (; ";")) (declaration "char *local_38;" (primitive_type "char") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (expression_statement "pcVar6 = *(char **)(param_2 + 0x58);" (assignment_expression "pcVar6 = *(char **)(param_2 + 0x58)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(param_2 + 0x58)" (* "*") (cast_expression "(char **)(param_2 + 0x58)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x58)" (( "(") (binary_expression "param_2 + 0x58" (identifier "param_2") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (if_statement "if (pcVar6 == (char *)0x0) {\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }" (if "if") (parenthesized_expression "(pcVar6 == (char *)0x0)" (( "(") (binary_expression "pcVar6 == (char *)0x0" (identifier "pcVar6") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_00303330(param_2);\n    pcVar6 = *(char **)(param_2 + 0x58);\n  }" ({ "{") (expression_statement "FUN_00303330(param_2);" (call_expression "FUN_00303330(param_2)" (identifier "FUN_00303330") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (expression_statement "pcVar6 = *(char **)(param_2 + 0x58);" (assignment_expression "pcVar6 = *(char **)(param_2 + 0x58)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(param_2 + 0x58)" (* "*") (cast_expression "(char **)(param_2 + 0x58)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x58)" (( "(") (binary_expression "param_2 + 0x58" (identifier "param_2") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_3 != 0) {\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar10 = *(undefined8 *)(param_3 + 0x10);\n  }" ({ "{") (expression_statement "uVar10 = *(undefined8 *)(param_3 + 0x10);" (assignment_expression "uVar10 = *(undefined8 *)(param_3 + 0x10)" (identifier "uVar10") (= "=") (pointer_expression "*(undefined8 *)(param_3 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_3 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x10)" (( "(") (binary_expression "param_3 + 0x10" (identifier "param_3") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (*(char *)(param_2 + 0x50) == '\0') {\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }\n  else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x50) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x50) == '\0'" (pointer_expression "*(char *)(param_2 + 0x50)" (* "*") (cast_expression "(char *)(param_2 + 0x50)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x50)" (( "(") (binary_expression "param_2 + 0x50" (identifier "param_2") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    FUN_00303310(param_2);\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n    if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }\n  }" ({ "{") (expression_statement "FUN_00303310(param_2);" (call_expression "FUN_00303310(param_2)" (identifier "FUN_00303310") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (expression_statement "uVar2 = *(ulong *)(param_2 + 0x80);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x80)" (identifier "uVar2") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x80)" (* "*") (cast_expression "(ulong *)(param_2 + 0x80)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x80)" (( "(") (binary_expression "param_2 + 0x80" (identifier "param_2") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (uVar2 != 0) goto joined_r0x001e762c;" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x001e762c;" (goto "goto") (statement_identifier "joined_r0x001e762c") (; ";"))) (if_statement "if (*(char *)(param_2 + 0x50) == '\0') {\n      FUN_00303310(param_2);\n    }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x50) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x50) == '\0'" (pointer_expression "*(char *)(param_2 + 0x50)" (* "*") (cast_expression "(char *)(param_2 + 0x50)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x50)" (( "(") (binary_expression "param_2 + 0x50" (identifier "param_2") (+ "+") (number_literal "0x50")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      FUN_00303310(param_2);\n    }" ({ "{") (expression_statement "FUN_00303310(param_2);" (call_expression "FUN_00303310(param_2)" (identifier "FUN_00303310") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" (else "else") (compound_statement "{\n    uVar2 = *(ulong *)(param_2 + 0x80);\n    if (uVar2 != 0) goto joined_r0x001e762c;\n  }" ({ "{") (expression_statement "uVar2 = *(ulong *)(param_2 + 0x80);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x80)" (identifier "uVar2") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x80)" (* "*") (cast_expression "(ulong *)(param_2 + 0x80)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x80)" (( "(") (binary_expression "param_2 + 0x80" (identifier "param_2") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (uVar2 != 0) goto joined_r0x001e762c;" (if "if") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x001e762c;" (goto "goto") (statement_identifier "joined_r0x001e762c") (; ";"))) (} "}")))) (expression_statement "uVar2 = *(ulong *)(param_2 + 0x88);" (assignment_expression "uVar2 = *(ulong *)(param_2 + 0x88)" (identifier "uVar2") (= "=") (pointer_expression "*(ulong *)(param_2 + 0x88)" (* "*") (cast_expression "(ulong *)(param_2 + 0x88)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x88)" (( "(") (binary_expression "param_2 + 0x88" (identifier "param_2") (+ "+") (number_literal "0x88")) () ")"))))) (; ";")) (labeled_statement "joined_r0x001e762c:\n  local_38 = pcVar6;" (statement_identifier "joined_r0x001e762c") (: ":") (expression_statement "local_38 = pcVar6;" (assignment_expression "local_38 = pcVar6" (identifier "local_38") (= "=") (identifier "pcVar6")) (; ";"))) (expression_statement "local_40 = uVar10;" (assignment_expression "local_40 = uVar10" (identifier "local_40") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (0 < (long)uVar2) {\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(0 < (long)uVar2)" (( "(") (binary_expression "0 < (long)uVar2" (number_literal "0") (< "<") (cast_expression "(long)uVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar2"))) () ")")) (compound_statement "{\n    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);\n    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);\n    if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }\n  }" ({ "{") (expression_statement "uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);" (assignment_expression "uVar5 = uVar2 % *(ulong *)(param_1 + 0x958)" (identifier "uVar5") (= "=") (binary_expression "uVar2 % *(ulong *)(param_1 + 0x958)" (identifier "uVar2") (% "%") (pointer_expression "*(ulong *)(param_1 + 0x958)" (* "*") (cast_expression "(ulong *)(param_1 + 0x958)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x958)" (( "(") (binary_expression "param_1 + 0x958" (identifier "param_1") (+ "+") (number_literal "0x958")) () ")")))))) (; ";")) (expression_statement "plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);" (assignment_expression "plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" (identifier "plVar9") (= "=") (pointer_expression "*(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" (* "*") (cast_expression "(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_1 + 0x950) + uVar5 * 8)" (( "(") (binary_expression "*(long *)(param_1 + 0x950) + uVar5 * 8" (pointer_expression "*(long *)(param_1 + 0x950)" (* "*") (cast_expression "(long *)(param_1 + 0x950)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x950)" (( "(") (binary_expression "param_1 + 0x950" (identifier "param_1") (+ "+") (number_literal "0x950")) () ")")))) (+ "+") (binary_expression "uVar5 * 8" (identifier "uVar5") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (plVar9 != (long *)0x0) {\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }" (if "if") (parenthesized_expression "(plVar9 != (long *)0x0)" (( "(") (binary_expression "plVar9 != (long *)0x0" (identifier "plVar9") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar7 = ((long *)*plVar9)[1];\n      plVar3 = (long *)*plVar9;\n      while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }\n      lVar4 = *plVar9;\n      if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }\n    }" ({ "{") (expression_statement "uVar7 = ((long *)*plVar9)[1];" (assignment_expression "uVar7 = ((long *)*plVar9)[1]" (identifier "uVar7") (= "=") (subscript_expression "((long *)*plVar9)[1]" (parenthesized_expression "((long *)*plVar9)" (( "(") (cast_expression "(long *)*plVar9" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar3 = (long *)*plVar9;" (assignment_expression "plVar3 = (long *)*plVar9" (identifier "plVar3") (= "=") (cast_expression "(long *)*plVar9" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar9" (* "*") (identifier "plVar9")))) (; ";")) (while_statement "while (plVar8 = plVar3, uVar7 != uVar2) {\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }" (while "while") (parenthesized_expression "(plVar8 = plVar3, uVar7 != uVar2)" (( "(") (comma_expression "plVar8 = plVar3, uVar7 != uVar2" (assignment_expression "plVar8 = plVar3" (identifier "plVar8") (= "=") (identifier "plVar3")) (, ",") (binary_expression "uVar7 != uVar2" (identifier "uVar7") (!= "!=") (identifier "uVar2"))) () ")")) (compound_statement "{\n        plVar3 = (long *)*plVar8;\n        if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;\n      }" ({ "{") (expression_statement "plVar3 = (long *)*plVar8;" (assignment_expression "plVar3 = (long *)*plVar8" (identifier "plVar3") (= "=") (cast_expression "(long *)*plVar8" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar8" (* "*") (identifier "plVar8")))) (; ";")) (if_statement "if ((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))\n        goto joined_r0x001e76a3;" (if "if") (parenthesized_expression "((plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))" (( "(") (binary_expression "(plVar3 == (long *)0x0) ||\n           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958))" (parenthesized_expression "(plVar3 == (long *)0x0)" (( "(") (binary_expression "plVar3 == (long *)0x0" (identifier "plVar3") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958))" (( "(") (comma_expression "uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" (assignment_expression "uVar7 = plVar3[1]" (identifier "uVar7") (= "=") (subscript_expression "plVar3[1]" (identifier "plVar3") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" (assignment_expression "plVar9 = plVar8" (identifier "plVar9") (= "=") (identifier "plVar8")) (, ",") (binary_expression "uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)" (identifier "uVar5") (!= "!=") (binary_expression "uVar7 % *(ulong *)(param_1 + 0x958)" (identifier "uVar7") (% "%") (pointer_expression "*(ulong *)(param_1 + 0x958)" (* "*") (cast_expression "(ulong *)(param_1 + 0x958)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x958)" (( "(") (binary_expression "param_1 + 0x958" (identifier "param_1") (+ "+") (number_literal "0x958")) () ")")))))))) () ")"))) () ")")) (goto_statement "goto joined_r0x001e76a3;" (goto "goto") (statement_identifier "joined_r0x001e76a3") (; ";"))) (} "}"))) (expression_statement "lVar4 = *plVar9;" (assignment_expression "lVar4 = *plVar9" (identifier "lVar4") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (if_statement "if (lVar4 != 0) {\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }" (if "if") (parenthesized_expression "(lVar4 != 0)" (( "(") (binary_expression "lVar4 != 0" (identifier "lVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_38 = *(char **)(lVar4 + 0x18);\n        local_40 = *(undefined8 *)(lVar4 + 0x10);\n      }" ({ "{") (expression_statement "local_38 = *(char **)(lVar4 + 0x18);" (assignment_expression "local_38 = *(char **)(lVar4 + 0x18)" (identifier "local_38") (= "=") (pointer_expression "*(char **)(lVar4 + 0x18)" (* "*") (cast_expression "(char **)(lVar4 + 0x18)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "local_40 = *(undefined8 *)(lVar4 + 0x10);" (assignment_expression "local_40 = *(undefined8 *)(lVar4 + 0x10)" (identifier "local_40") (= "=") (pointer_expression "*(undefined8 *)(lVar4 + 0x10)" (* "*") (cast_expression "(undefined8 *)(lVar4 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x10)" (( "(") (binary_expression "lVar4 + 0x10" (identifier "lVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "joined_r0x001e76a3:\n  if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" (statement_identifier "joined_r0x001e76a3") (: ":") (if_statement "if (local_38 == (char *)0x0) {\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" (if "if") (parenthesized_expression "(local_38 == (char *)0x0)" (( "(") (binary_expression "local_38 == (char *)0x0" (identifier "local_38") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    local_38 = "(unknown)";\n    if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }\n  }" ({ "{") (expression_statement "local_38 = "(unknown)";" (assignment_expression "local_38 = "(unknown)"" (identifier "local_38") (= "=") (string_literal ""(unknown)"" (" """) (string_content "(unknown)") (" """))) (; ";")) (if_statement "if (*(int **)(param_2 + 0x30) != (int *)0x0) {\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }" (if "if") (parenthesized_expression "(*(int **)(param_2 + 0x30) != (int *)0x0)" (( "(") (binary_expression "*(int **)(param_2 + 0x30) != (int *)0x0" (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar1 = **(int **)(param_2 + 0x30);\n      local_38 = "(anonymous namespace)";\n      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }\n    }" ({ "{") (expression_statement "iVar1 = **(int **)(param_2 + 0x30);" (assignment_expression "iVar1 = **(int **)(param_2 + 0x30)" (identifier "iVar1") (= "=") (pointer_expression "**(int **)(param_2 + 0x30)" (* "*") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")")))))) (; ";")) (expression_statement "local_38 = "(anonymous namespace)";" (assignment_expression "local_38 = "(anonymous namespace)"" (identifier "local_38") (= "=") (string_literal ""(anonymous namespace)"" (" """) (string_content "(anonymous namespace)") (" """))) (; ";")) (if_statement "if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {\n        local_38 = "(anonymous union)";\n      }" (if "if") (parenthesized_expression "((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17))" (( "(") (binary_expression "(iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)" (parenthesized_expression "(iVar1 != 0x39)" (( "(") (binary_expression "iVar1 != 0x39" (identifier "iVar1") (!= "!=") (number_literal "0x39")) () ")")) (&& "&&") (parenthesized_expression "(local_38 = "(unknown)", iVar1 == 0x17)" (( "(") (comma_expression "local_38 = "(unknown)", iVar1 == 0x17" (assignment_expression "local_38 = "(unknown)"" (identifier "local_38") (= "=") (string_literal ""(unknown)"" (" """) (string_content "(unknown)") (" """))) (, ",") (binary_expression "iVar1 == 0x17" (identifier "iVar1") (== "==") (number_literal "0x17"))) () ")"))) () ")")) (compound_statement "{\n        local_38 = "(anonymous union)";\n      }" ({ "{") (expression_statement "local_38 = "(anonymous union)";" (assignment_expression "local_38 = "(anonymous union)"" (identifier "local_38") (= "=") (string_literal ""(anonymous union)"" (" """) (string_content "(anonymous union)") (" """))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "local_48 = *(undefined8 *)(param_2 + 0x10);" (assignment_expression "local_48 = *(undefined8 *)(param_2 + 0x10)" (identifier "local_48") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "FUN_001e9520(param_1 + 0x950,&local_48);" (call_expression "FUN_001e9520(param_1 + 0x950,&local_48)" (identifier "FUN_001e9520") (argument_list "(param_1 + 0x950,&local_48)" (( "(") (binary_expression "param_1 + 0x950" (identifier "param_1") (+ "+") (number_literal "0x950")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void add_declaration(Gdb_index_info_reader * this, Dwarf_die * die,
   Dwarf_die * context) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *die,type_2 *var_3)

{
  type_3 var_11;
  type_4 *var_5;
  type_5 var_6;
  type_5 var_9;
  type_4 *var_1;
  type_6 p_Var6;
  type_6 var_7;
  type_4 *var_8;
  type_7 local_48;
  type_4 *local_40;
  type_4 *var_10;
  
  var_1 = (type_4 *)die->name_;
  if (var_1 == (type_4 *)0x0) {
    Dwarf_die::var_2(die);
    var_1 = (type_4 *)die->name_;
  }
  var_8 = (type_4 *)0x0;
  if (var_3 != (type_2 *)0x0) {
    var_8 = (type_4 *)var_3->die_offset_;
  }
  if (die->attributes_read_ == false) {
    Dwarf_die::var_4(die);
    var_5 = (type_4 *)die->specification_;
    if (var_5 != (type_4 *)0x0) goto joined_r0x001e762c;
    if (die->attributes_read_ == false) {
      Dwarf_die::var_4(die);
    }
  }
  else {
    var_5 = (type_4 *)die->specification_;
    if (var_5 != (type_4 *)0x0) goto joined_r0x001e762c;
  }
  var_5 = (type_4 *)die->abstract_origin_;
joined_r0x001e762c:
  var_10 = var_1;
  local_40 = var_8;
  if (0 < (long)var_5) {
    var_6 = (this->declarations_)._M_h._M_bucket_count;
    var_9 = (type_5)var_5 % var_6;
    var_7 = (this->declarations_)._M_h._M_buckets[var_9];
    if (var_7 != (type_6)0x0) {
      var_1 = var_7->_M_nxt[1]._M_nxt;
      var_8 = var_7->_M_nxt;
      while (p_Var6 = var_8, var_1 != var_5) {
        var_8 = p_Var6->_M_nxt;
        if ((var_8 == (type_4 *)0x0) ||
           (var_1 = var_8[1]._M_nxt, var_7 = p_Var6, var_9 != (type_5)var_1 % var_6))
        goto joined_r0x001e76a3;
      }
      var_1 = var_7->_M_nxt;
      if (var_1 != (type_4 *)0x0) {
        var_10 = var_1[3]._M_nxt;
        local_40 = var_1[2]._M_nxt;
      }
    }
  }
joined_r0x001e76a3:
  if (var_10 == (type_4 *)0x0) {
    var_10 = (type_4 *)0x3e1962;
    if (die->abbrev_code_ != (type_8 *)0x0) {
      var_11 = die->abbrev_code_->tag;
      var_10 = (type_4 *)0x3e1926;
      if ((var_11 != 0x39) && (var_10 = (type_4 *)0x3e1962, var_11 == 0x17)) {
        var_10 = (type_4 *)0x3e196c;
      }
    }
  }
  local_48 = die->die_offset_;
  std::
  _Hashtable<long_int,_std::pair<long_int_const,_gold::type_1::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::type_1::Declaration_pair>var_14>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_12<false,_false,var_13>var_14>
  ::_M_emplace<std::pair<long_int,_gold::type_1::Declaration_pair>var_14>
            ((_Hashtable<long_int,_std::pair<long_int_const,_gold::type_1::Declaration_pair>,_std::allocator<std::pair<long_int_const,_gold::type_1::Declaration_pair>var_14>,_std::__detail::_Select1st,_std::equal_to<long_int>,_std::hash<long_int>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::var_12<false,_false,var_13>var_14>
              *)&this->declarations_,&local_48);
  return;
}


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

void MASKED(long param_1,long param_2,long param_3)

{
  int iVar1;
  ulong uVar2;
  long *plVar3;
  long lVar4;
  ulong uVar5;
  char *pcVar6;
  ulong uVar7;
  long *plVar8;
  long *plVar9;
  undefined8 uVar10;
  undefined8 local_48;
  undefined8 local_40;
  char *local_38;
  
  pcVar6 = *(char **)(param_2 + 0x58);
  if (pcVar6 == (char *)0x0) {
    FUN_00303330(param_2);
    pcVar6 = *(char **)(param_2 + 0x58);
  }
  uVar10 = 0;
  if (param_3 != 0) {
    uVar10 = *(undefined8 *)(param_3 + 0x10);
  }
  if (*(char *)(param_2 + 0x50) == '\0') {
    FUN_00303310(param_2);
    uVar2 = *(ulong *)(param_2 + 0x80);
    if (uVar2 != 0) goto joined_r0x001e762c;
    if (*(char *)(param_2 + 0x50) == '\0') {
      FUN_00303310(param_2);
    }
  }
  else {
    uVar2 = *(ulong *)(param_2 + 0x80);
    if (uVar2 != 0) goto joined_r0x001e762c;
  }
  uVar2 = *(ulong *)(param_2 + 0x88);
joined_r0x001e762c:
  local_38 = pcVar6;
  local_40 = uVar10;
  if (0 < (long)uVar2) {
    uVar5 = uVar2 % *(ulong *)(param_1 + 0x958);
    plVar9 = *(long **)(*(long *)(param_1 + 0x950) + uVar5 * 8);
    if (plVar9 != (long *)0x0) {
      uVar7 = ((long *)*plVar9)[1];
      plVar3 = (long *)*plVar9;
      while (plVar8 = plVar3, uVar7 != uVar2) {
        plVar3 = (long *)*plVar8;
        if ((plVar3 == (long *)0x0) ||
           (uVar7 = plVar3[1], plVar9 = plVar8, uVar5 != uVar7 % *(ulong *)(param_1 + 0x958)))
        goto joined_r0x001e76a3;
      }
      lVar4 = *plVar9;
      if (lVar4 != 0) {
        local_38 = *(char **)(lVar4 + 0x18);
        local_40 = *(undefined8 *)(lVar4 + 0x10);
      }
    }
  }
joined_r0x001e76a3:
  if (local_38 == (char *)0x0) {
    local_38 = "(unknown)";
    if (*(int **)(param_2 + 0x30) != (int *)0x0) {
      iVar1 = **(int **)(param_2 + 0x30);
      local_38 = "(anonymous namespace)";
      if ((iVar1 != 0x39) && (local_38 = "(unknown)", iVar1 == 0x17)) {
        local_38 = "(anonymous union)";
      }
    }
  }
  local_48 = *(undefined8 *)(param_2 + 0x10);
  FUN_001e9520(param_1 + 0x950,&local_48);
  return;
}

