
/* DWARF original prototype: const_iterator
   find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
   * this, key_type * __k) */

const_iterator __thiscall
std::
_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
::find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
       *this,key_type *__k)

{
  ulong uVar1;
  _Hash_node_base *p_Var2;
  int iVar3;
  _Hash_node_base *p_Var4;
  _Hash_node_base *p_Var5;
  ulong uVar6;
  __bucket_type p_Var7;
  __bucket_type p_Var8;
  
  p_Var4 = (_Hash_node_base *)_Hash_bytes((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907);
  uVar1 = this->_M_bucket_count;
  uVar6 = (ulong)p_Var4 % uVar1;
  p_Var8 = this->_M_buckets[uVar6];
  if (p_Var8 != (__bucket_type)0x0) {
    p_Var5 = p_Var8->_M_nxt[5]._M_nxt;
    p_Var2 = p_Var8->_M_nxt;
    while (((p_Var7 = p_Var2, p_Var4 != p_Var5 ||
            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||
           ((p_Var5 != (_Hash_node_base *)0x0 &&
            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))))
          ) {
      p_Var2 = p_Var7->_M_nxt;
      if (p_Var2 == (_Hash_node_base *)0x0) {
        return (const_iterator)(__node_type *)0x0;
      }
      p_Var5 = p_Var2[5]._M_nxt;
      p_Var8 = p_Var7;
      if (uVar6 != (ulong)p_Var5 % uVar1) {
        return (const_iterator)(__node_type *)0x0;
      }
    }
    if ((__node_type *)p_Var8->_M_nxt != (__node_type *)0x0) {
      return (const_iterator)
             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>
              )p_Var8->_M_nxt;
    }
  }
  return (const_iterator)(__node_type *)0x0;
}



long FUN_0019f480(long *param_1,undefined8 *param_2)

{
  ulong uVar1;
  long *plVar2;
  size_t __n;
  int iVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  long *plVar7;
  long *plVar8;
  
  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);
  uVar1 = param_1[1];
  uVar6 = uVar4 % uVar1;
  plVar8 = *(long **)(*param_1 + uVar6 * 8);
  if (plVar8 != (long *)0x0) {
    uVar5 = ((long *)*plVar8)[5];
    plVar2 = (long *)*plVar8;
    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||
           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {
      plVar2 = (long *)*plVar7;
      if (plVar2 == (long *)0x0) {
        return 0;
      }
      uVar5 = plVar2[5];
      plVar8 = plVar7;
      if (uVar6 != uVar5 % uVar1) {
        return 0;
      }
    }
    if (*plVar8 != 0) {
      return *plVar8;
    }
  }
  return 0;
}


PUSH R15
MOV EDX,0xc70f6907
PUSH R14
PUSH R13
MOV R13,RSI
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x8
MOV RSI,qword ptr [RSI + 0x8]
MOV RDI,qword ptr [R13]
CALL 0x002755d0
MOV RBP,qword ptr [RBX + 0x8]
XOR EDX,EDX
MOV R14,RAX
DIV RBP
MOV RAX,qword ptr [RBX]
MOV R12,qword ptr [RAX + RDX*0x8]
TEST R12,R12
JZ 0x0019f4ed
MOV RBX,qword ptr [R12]
MOV R15,RDX
MOV RCX,qword ptr [RBX + 0x28]
CMP R14,RCX
JZ 0x0019f500
MOV RAX,qword ptr [RBX]
TEST RAX,RAX
JZ 0x0019f4ed
MOV RCX,qword ptr [RAX + 0x28]
MOV R12,RBX
XOR EDX,EDX
MOV RBX,RAX
MOV RAX,RCX
DIV RBP
CMP R15,RDX
JZ 0x0019f4c9
ADD RSP,0x8
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RDX,qword ptr [R13 + 0x8]
CMP RDX,qword ptr [RBX + 0x10]
JNZ 0x0019f4ce
TEST RDX,RDX
JZ 0x0019f520
MOV RSI,qword ptr [RBX + 0x8]
MOV RDI,qword ptr [R13]
CALL 0x0013e840
TEST EAX,EAX
JNZ 0x0019f4ce
MOV RAX,qword ptr [R12]
TEST RAX,RAX
JZ 0x0019f4ed
ADD RSP,0x8
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
(translation_unit "long FUN_0019f480(long *param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_0019f480(long *param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0019f480(long *param_1,undefined8 *param_2)" identifier (parameter_list "(long *param_1,undefined8 *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (expression_statement "uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);" (assignment_expression "uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907)" identifier = (call_expression "FUN_002755d0(*param_2,param_2[1],0xc70f6907)" identifier (argument_list "(*param_2,param_2[1],0xc70f6907)" ( (pointer_expression "*param_2" * identifier) , (subscript_expression "param_2[1]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = uVar4 % uVar1;" (assignment_expression "uVar6 = uVar4 % uVar1" identifier = (binary_expression "uVar4 % uVar1" identifier % identifier)) ;) (expression_statement "plVar8 = *(long **)(*param_1 + uVar6 * 8);" (assignment_expression "plVar8 = *(long **)(*param_1 + uVar6 * 8)" identifier = (pointer_expression "*(long **)(*param_1 + uVar6 * 8)" * (cast_expression "(long **)(*param_1 + uVar6 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + uVar6 * 8)" ( (binary_expression "*param_1 + uVar6 * 8" (pointer_expression "*param_1" * identifier) + (binary_expression "uVar6 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }" if (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }" { (expression_statement "uVar5 = ((long *)*plVar8)[5];" (assignment_expression "uVar5 = ((long *)*plVar8)[5]" identifier = (subscript_expression "((long *)*plVar8)[5]" (parenthesized_expression "((long *)*plVar8)" ( (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar2 = (long *)*plVar8;" (assignment_expression "plVar2 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) (while_statement "while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }" while (parenthesized_expression "(((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))))" ( (parenthesized_expression "((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))" ( (binary_expression "(plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))" (parenthesized_expression "(plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2]))" ( (comma_expression "plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])" (assignment_expression "plVar7 = plVar2" identifier = identifier) , (binary_expression "uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])" (binary_expression "uVar4 != uVar5" identifier != identifier) || (parenthesized_expression "(__n = param_2[1], __n != plVar7[2])" ( (comma_expression "__n = param_2[1], __n != plVar7[2]" (assignment_expression "__n = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) , (binary_expression "__n != plVar7[2]" identifier != (subscript_expression "plVar7[2]" identifier [ number_literal ]))) )))) )) || (parenthesized_expression "((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))" ( (parenthesized_expression "(__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))" ( (binary_expression "__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)" (binary_expression "__n != 0" identifier != number_literal) && (parenthesized_expression "(iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)" ( (comma_expression "iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0" (assignment_expression "iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n)" identifier = (call_expression "memcmp((void *)*param_2,(void *)plVar7[1],__n)" identifier (argument_list "((void *)*param_2,(void *)plVar7[1],__n)" ( (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , (cast_expression "(void *)plVar7[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) )) (compound_statement "{\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }" { (expression_statement "plVar2 = (long *)*plVar7;" (assignment_expression "plVar2 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar2 == (long *)0x0) {\n        return 0;\n      }" if (parenthesized_expression "(plVar2 == (long *)0x0)" ( (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar5 = plVar2[5];" (assignment_expression "uVar5 = plVar2[5]" identifier = (subscript_expression "plVar2[5]" identifier [ number_literal ])) ;) (expression_statement "plVar8 = plVar7;" (assignment_expression "plVar8 = plVar7" identifier = identifier) ;) (if_statement "if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }" if (parenthesized_expression "(uVar6 != uVar5 % uVar1)" ( (binary_expression "uVar6 != uVar5 % uVar1" identifier != (binary_expression "uVar5 % uVar1" identifier % identifier)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (*plVar8 != 0) {\n      return *plVar8;\n    }" if (parenthesized_expression "(*plVar8 != 0)" ( (binary_expression "*plVar8 != 0" (pointer_expression "*plVar8" * identifier) != number_literal) )) (compound_statement "{\n      return *plVar8;\n    }" { (return_statement "return *plVar8;" return (pointer_expression "*plVar8" * identifier) ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: const_iterator\n   find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n   * this, key_type * __k) */\n\nconst_iterator __thiscall\nstd::\n_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n::find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n       *this,key_type *__k)\n\n{\n  ulong uVar1;\n  _Hash_node_base *p_Var2;\n  int iVar3;\n  _Hash_node_base *p_Var4;\n  _Hash_node_base *p_Var5;\n  ulong uVar6;\n  __bucket_type p_Var7;\n  __bucket_type p_Var8;\n  \n  p_Var4 = (_Hash_node_base *)_Hash_bytes((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907);\n  uVar1 = this->_M_bucket_count;\n  uVar6 = (ulong)p_Var4 % uVar1;\n  p_Var8 = this->_M_buckets[uVar6];\n  if (p_Var8 != (__bucket_type)0x0) {\n    p_Var5 = p_Var8->_M_nxt[5]._M_nxt;\n    p_Var2 = p_Var8->_M_nxt;\n    while (((p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||\n           ((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))))\n          ) {\n      p_Var2 = p_Var7->_M_nxt;\n      if (p_Var2 == (_Hash_node_base *)0x0) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n      p_Var5 = p_Var2[5]._M_nxt;\n      p_Var8 = p_Var7;\n      if (uVar6 != (ulong)p_Var5 % uVar1) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n    }\n    if ((__node_type *)p_Var8->_M_nxt != (__node_type *)0x0) {\n      return (const_iterator)\n             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt;\n    }\n  }\n  return (const_iterator)(__node_type *)0x0;\n}\n\n" comment (declaration "const_iterator __thiscall\nstd::\n_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n::find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n       *this,key_type *__k)\n\n{\n  ulong uVar1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\n_Hashtable<std::__cxx11::" identifier : : identifier < identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>" identifier : : identifier < primitive_type >) identifier (ERROR ">" >) , (ERROR "_std::__cxx11::" identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>" identifier : : identifier < primitive_type >) identifier (ERROR ">" >) , (ERROR "_std::allocator<std::__cxx11::" identifier : : identifier < identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>" identifier : : identifier < primitive_type > identifier >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::equal_to<std::__cxx11::" identifier : : identifier < identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>" identifier : : identifier < primitive_type > identifier >) identifier (ERROR ">" >) , (ERROR "_std::hash<std::__cxx11::" identifier : : identifier < identifier : : identifier : :) identifier (ERROR "<char" < primitive_type) , (ERROR "_std::" identifier : :) identifier (ERROR "<char>" < primitive_type >) , (ERROR "_std::allocator<char>_>" identifier : : identifier < primitive_type > identifier >) identifier (ERROR ">" >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_std::__detail::" identifier : : identifier : :) identifier (ERROR "<true" < true) , identifier , (ERROR "_true>_>\n::find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n       *this,key_type *__k)\n\n{\n  ulong" identifier > identifier > : : (function_declarator "find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n       *this,key_type *__k)" identifier (parameter_list "(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>\n       *this,key_type *__k)" ( (parameter_declaration "_Hashtable<std::__cxx11::basic_string" type_identifier (ERROR "<std::__cxx11::" < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__cxx11::basic_string" type_identifier (ERROR "::__cxx11::" : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_" type_identifier (ERROR "::allocator<char>" : : identifier < primitive_type >) identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::__cxx11::basic_string" type_identifier (ERROR "::allocator<std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_" type_identifier (ERROR "::allocator<char>_>" : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Identity" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::equal_to<std::__cxx11::basic_string" type_identifier (ERROR "::equal_to<std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_" type_identifier (ERROR "::allocator<char>_>" : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , (parameter_declaration "_std::hash<std::__cxx11::basic_string" type_identifier (ERROR "::hash<std::__cxx11::" : : identifier < identifier : : identifier : :) identifier) (ERROR "<char" < primitive_type) , (parameter_declaration "_std::char_traits" type_identifier (ERROR "::" : :) identifier) (ERROR "<char>" < primitive_type >) , (parameter_declaration "_std::allocator<char>_>_" type_identifier (ERROR "::allocator<char>_>" : : identifier < primitive_type > identifier >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Mod_range_hashing" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Default_ranged_hash" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Prime_rehash_policy" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_std::__detail::_Hashtable_traits" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) (ERROR "<true" < true) , (parameter_declaration "_true" type_identifier) , (parameter_declaration "_true>_>\n       *this" type_identifier (ERROR ">_>" > identifier >) (pointer_declarator "*this" * identifier)) , (parameter_declaration "key_type *__k" type_identifier (pointer_declarator "*__k" * identifier)) ))) { identifier) identifier ;) (declaration "_Hash_node_base *p_Var2;" type_identifier (pointer_declarator "*p_Var2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "_Hash_node_base *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "_Hash_node_base *p_Var5;" type_identifier (pointer_declarator "*p_Var5" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "__bucket_type p_Var7;" type_identifier identifier ;) (declaration "__bucket_type p_Var8;" type_identifier identifier ;) (expression_statement "p_Var4 = (_Hash_node_base *)_Hash_bytes((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907);" (assignment_expression "p_Var4 = (_Hash_node_base *)_Hash_bytes((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907)" identifier = (cast_expression "(_Hash_node_base *)_Hash_bytes((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907)" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "_Hash_bytes((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907)" identifier (argument_list "((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907)" ( (field_expression "(__k->_M_dataplus)._M_p" (parenthesized_expression "(__k->_M_dataplus)" ( (field_expression "__k->_M_dataplus" identifier -> field_identifier) )) . field_identifier) , (field_expression "__k->_M_string_length" identifier -> field_identifier) , number_literal ))))) ;) (expression_statement "uVar1 = this->_M_bucket_count;" (assignment_expression "uVar1 = this->_M_bucket_count" identifier = (field_expression "this->_M_bucket_count" identifier -> field_identifier)) ;) (expression_statement "uVar6 = (ulong)p_Var4 % uVar1;" (assignment_expression "uVar6 = (ulong)p_Var4 % uVar1" identifier = (binary_expression "(ulong)p_Var4 % uVar1" (cast_expression "(ulong)p_Var4" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) ;) (expression_statement "p_Var8 = this->_M_buckets[uVar6];" (assignment_expression "p_Var8 = this->_M_buckets[uVar6]" identifier = (subscript_expression "this->_M_buckets[uVar6]" (field_expression "this->_M_buckets" identifier -> field_identifier) [ identifier ])) ;) (if_statement "if (p_Var8 != (__bucket_type)0x0) {\n    p_Var5 = p_Var8->_M_nxt[5]._M_nxt;\n    p_Var2 = p_Var8->_M_nxt;\n    while (((p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||\n           ((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))))\n          ) {\n      p_Var2 = p_Var7->_M_nxt;\n      if (p_Var2 == (_Hash_node_base *)0x0) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n      p_Var5 = p_Var2[5]._M_nxt;\n      p_Var8 = p_Var7;\n      if (uVar6 != (ulong)p_Var5 % uVar1) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n    }\n    if ((__node_type *)p_Var8->_M_nxt != (__node_type *)0x0) {\n      return (const_iterator)\n             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt;\n    }\n  }" if (parenthesized_expression "(p_Var8 != (__bucket_type)0x0)" ( (binary_expression "p_Var8 != (__bucket_type)0x0" identifier != (cast_expression "(__bucket_type)0x0" ( (type_descriptor "__bucket_type" type_identifier) ) number_literal)) )) (compound_statement "{\n    p_Var5 = p_Var8->_M_nxt[5]._M_nxt;\n    p_Var2 = p_Var8->_M_nxt;\n    while (((p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||\n           ((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))))\n          ) {\n      p_Var2 = p_Var7->_M_nxt;\n      if (p_Var2 == (_Hash_node_base *)0x0) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n      p_Var5 = p_Var2[5]._M_nxt;\n      p_Var8 = p_Var7;\n      if (uVar6 != (ulong)p_Var5 % uVar1) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n    }\n    if ((__node_type *)p_Var8->_M_nxt != (__node_type *)0x0) {\n      return (const_iterator)\n             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt;\n    }\n  }" { (expression_statement "p_Var5 = p_Var8->_M_nxt[5]._M_nxt;" (assignment_expression "p_Var5 = p_Var8->_M_nxt[5]._M_nxt" identifier = (field_expression "p_Var8->_M_nxt[5]._M_nxt" (subscript_expression "p_Var8->_M_nxt[5]" (field_expression "p_Var8->_M_nxt" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var2 = p_Var8->_M_nxt;" (assignment_expression "p_Var2 = p_Var8->_M_nxt" identifier = (field_expression "p_Var8->_M_nxt" identifier -> field_identifier)) ;) (while_statement "while (((p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||\n           ((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))))\n          ) {\n      p_Var2 = p_Var7->_M_nxt;\n      if (p_Var2 == (_Hash_node_base *)0x0) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n      p_Var5 = p_Var2[5]._M_nxt;\n      p_Var8 = p_Var7;\n      if (uVar6 != (ulong)p_Var5 % uVar1) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n    }" while (parenthesized_expression "(((p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||\n           ((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))))\n          )" ( (parenthesized_expression "((p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||\n           ((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))))" ( (binary_expression "(p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)) ||\n           ((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0)))" (parenthesized_expression "(p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt))" ( (comma_expression "p_Var7 = p_Var2, p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)" (assignment_expression "p_Var7 = p_Var2" identifier = identifier) , (binary_expression "p_Var4 != p_Var5 ||\n            (p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)" (binary_expression "p_Var4 != p_Var5" identifier != identifier) || (parenthesized_expression "(p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt)" ( (comma_expression "p_Var5 = (_Hash_node_base *)__k->_M_string_length, p_Var5 != p_Var7[2]._M_nxt" (assignment_expression "p_Var5 = (_Hash_node_base *)__k->_M_string_length" identifier = (cast_expression "(_Hash_node_base *)__k->_M_string_length" ( (type_descriptor "_Hash_node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "__k->_M_string_length" identifier -> field_identifier))) , (binary_expression "p_Var5 != p_Var7[2]._M_nxt" identifier != (field_expression "p_Var7[2]._M_nxt" (subscript_expression "p_Var7[2]" identifier [ number_literal ]) . field_identifier))) )))) )) || (parenthesized_expression "((p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0)))" ( (parenthesized_expression "(p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0))" ( (binary_expression "p_Var5 != (_Hash_node_base *)0x0 &&\n            (iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0)" (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)) && (parenthesized_expression "(iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0)" ( (comma_expression "iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5), iVar3 != 0" (assignment_expression "iVar3 = memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5)" identifier = (call_expression "memcmp((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5)" identifier (argument_list "((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)p_Var5)" ( (field_expression "(__k->_M_dataplus)._M_p" (parenthesized_expression "(__k->_M_dataplus)" ( (field_expression "__k->_M_dataplus" identifier -> field_identifier) )) . field_identifier) , (field_expression "p_Var7[1]._M_nxt" (subscript_expression "p_Var7[1]" identifier [ number_literal ]) . field_identifier) , (cast_expression "(size_t)p_Var5" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) )) (compound_statement "{\n      p_Var2 = p_Var7->_M_nxt;\n      if (p_Var2 == (_Hash_node_base *)0x0) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n      p_Var5 = p_Var2[5]._M_nxt;\n      p_Var8 = p_Var7;\n      if (uVar6 != (ulong)p_Var5 % uVar1) {\n        return (const_iterator)(__node_type *)0x0;\n      }\n    }" { (expression_statement "p_Var2 = p_Var7->_M_nxt;" (assignment_expression "p_Var2 = p_Var7->_M_nxt" identifier = (field_expression "p_Var7->_M_nxt" identifier -> field_identifier)) ;) (if_statement "if (p_Var2 == (_Hash_node_base *)0x0) {\n        return (const_iterator)(__node_type *)0x0;\n      }" 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)) )) (compound_statement "{\n        return (const_iterator)(__node_type *)0x0;\n      }" { (return_statement "return (const_iterator)(__node_type *)0x0;" return (cast_expression "(const_iterator)(__node_type *)0x0" ( (type_descriptor "const_iterator" type_identifier) ) (cast_expression "(__node_type *)0x0" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "p_Var5 = p_Var2[5]._M_nxt;" (assignment_expression "p_Var5 = p_Var2[5]._M_nxt" identifier = (field_expression "p_Var2[5]._M_nxt" (subscript_expression "p_Var2[5]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "p_Var8 = p_Var7;" (assignment_expression "p_Var8 = p_Var7" identifier = identifier) ;) (if_statement "if (uVar6 != (ulong)p_Var5 % uVar1) {\n        return (const_iterator)(__node_type *)0x0;\n      }" if (parenthesized_expression "(uVar6 != (ulong)p_Var5 % uVar1)" ( (binary_expression "uVar6 != (ulong)p_Var5 % uVar1" identifier != (binary_expression "(ulong)p_Var5 % uVar1" (cast_expression "(ulong)p_Var5" ( (type_descriptor "ulong" type_identifier) ) identifier) % identifier)) )) (compound_statement "{\n        return (const_iterator)(__node_type *)0x0;\n      }" { (return_statement "return (const_iterator)(__node_type *)0x0;" return (cast_expression "(const_iterator)(__node_type *)0x0" ( (type_descriptor "const_iterator" type_identifier) ) (cast_expression "(__node_type *)0x0" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) (if_statement "if ((__node_type *)p_Var8->_M_nxt != (__node_type *)0x0) {\n      return (const_iterator)\n             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt;\n    }" if (parenthesized_expression "((__node_type *)p_Var8->_M_nxt != (__node_type *)0x0)" ( (binary_expression "(__node_type *)p_Var8->_M_nxt != (__node_type *)0x0" (cast_expression "(__node_type *)p_Var8->_M_nxt" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var8->_M_nxt" identifier -> field_identifier)) != (cast_expression "(__node_type *)0x0" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return (const_iterator)\n             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt;\n    }" { (return_statement "return (const_iterator)\n             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt;" return (call_expression "(const_iterator)\n             (_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt" (parenthesized_expression "(const_iterator)" ( identifier )) (argument_list "(_Node_iterator_base<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_true>\n              )p_Var8->_M_nxt" ( (binary_expression "_Node_iterator_base<std::__cxx11::basic_string<char" (binary_expression "_Node_iterator_base<std" identifier < identifier) (ERROR "::__cxx11::basic_string" : : identifier : : identifier) < identifier) , (ERROR "_std::" identifier : :) (binary_expression "char_traits<char" identifier < identifier) (ERROR ">" >) , (ERROR "_std::" identifier : :) (binary_expression "allocator<char>_>,_true>\n              )p_Var8->_M_nxt" (binary_expression "allocator<char>_>,_true" (binary_expression "allocator<char>_" (binary_expression "allocator<char" identifier < identifier) > identifier) > (ERROR "," ,) identifier) > (ERROR ")" )) (field_expression "p_Var8->_M_nxt" identifier -> field_identifier)) ))) ;) })) })) (return_statement "return (const_iterator)(__node_type *)0x0;" return (cast_expression "(const_iterator)(__node_type *)0x0" ( (type_descriptor "const_iterator" type_identifier) ) (cast_expression "(__node_type *)0x0" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (ERROR "}" }))
(translation_unit "long FUN_0019f480(long *param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_0019f480(long *param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0019f480(long *param_1,undefined8 *param_2)" identifier (parameter_list "(long *param_1,undefined8 *param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "long *plVar2;" (sized_type_specifier "long" long) (pointer_declarator "*plVar2" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "ulong uVar4;" type_identifier identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (expression_statement "uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);" (assignment_expression "uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907)" identifier = (call_expression "FUN_002755d0(*param_2,param_2[1],0xc70f6907)" identifier (argument_list "(*param_2,param_2[1],0xc70f6907)" ( (pointer_expression "*param_2" * identifier) , (subscript_expression "param_2[1]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = uVar4 % uVar1;" (assignment_expression "uVar6 = uVar4 % uVar1" identifier = (binary_expression "uVar4 % uVar1" identifier % identifier)) ;) (expression_statement "plVar8 = *(long **)(*param_1 + uVar6 * 8);" (assignment_expression "plVar8 = *(long **)(*param_1 + uVar6 * 8)" identifier = (pointer_expression "*(long **)(*param_1 + uVar6 * 8)" * (cast_expression "(long **)(*param_1 + uVar6 * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + uVar6 * 8)" ( (binary_expression "*param_1 + uVar6 * 8" (pointer_expression "*param_1" * identifier) + (binary_expression "uVar6 * 8" identifier * number_literal)) ))))) ;) (if_statement "if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }" if (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }" { (expression_statement "uVar5 = ((long *)*plVar8)[5];" (assignment_expression "uVar5 = ((long *)*plVar8)[5]" identifier = (subscript_expression "((long *)*plVar8)[5]" (parenthesized_expression "((long *)*plVar8)" ( (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier)) )) [ number_literal ])) ;) (expression_statement "plVar2 = (long *)*plVar8;" (assignment_expression "plVar2 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) (while_statement "while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }" while (parenthesized_expression "(((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))))" ( (parenthesized_expression "((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))" ( (binary_expression "(plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))" (parenthesized_expression "(plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2]))" ( (comma_expression "plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])" (assignment_expression "plVar7 = plVar2" identifier = identifier) , (binary_expression "uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])" (binary_expression "uVar4 != uVar5" identifier != identifier) || (parenthesized_expression "(__n = param_2[1], __n != plVar7[2])" ( (comma_expression "__n = param_2[1], __n != plVar7[2]" (assignment_expression "__n = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) , (binary_expression "__n != plVar7[2]" identifier != (subscript_expression "plVar7[2]" identifier [ number_literal ]))) )))) )) || (parenthesized_expression "((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))" ( (parenthesized_expression "(__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))" ( (binary_expression "__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)" (binary_expression "__n != 0" identifier != number_literal) && (parenthesized_expression "(iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)" ( (comma_expression "iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0" (assignment_expression "iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n)" identifier = (call_expression "memcmp((void *)*param_2,(void *)plVar7[1],__n)" identifier (argument_list "((void *)*param_2,(void *)plVar7[1],__n)" ( (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , (cast_expression "(void *)plVar7[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) ))) )) )) (compound_statement "{\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }" { (expression_statement "plVar2 = (long *)*plVar7;" (assignment_expression "plVar2 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar2 == (long *)0x0) {\n        return 0;\n      }" if (parenthesized_expression "(plVar2 == (long *)0x0)" ( (binary_expression "plVar2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar5 = plVar2[5];" (assignment_expression "uVar5 = plVar2[5]" identifier = (subscript_expression "plVar2[5]" identifier [ number_literal ])) ;) (expression_statement "plVar8 = plVar7;" (assignment_expression "plVar8 = plVar7" identifier = identifier) ;) (if_statement "if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }" if (parenthesized_expression "(uVar6 != uVar5 % uVar1)" ( (binary_expression "uVar6 != uVar5 % uVar1" identifier != (binary_expression "uVar5 % uVar1" identifier % identifier)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (*plVar8 != 0) {\n      return *plVar8;\n    }" if (parenthesized_expression "(*plVar8 != 0)" ( (binary_expression "*plVar8 != 0" (pointer_expression "*plVar8" * identifier) != number_literal) )) (compound_statement "{\n      return *plVar8;\n    }" { (return_statement "return *plVar8;" return (pointer_expression "*plVar8" * identifier) ;) })) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT % IDENT)) ;) (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 * IDENT) + (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 ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (binary_expression IDENT != (subscript_expression IDENT [ LIT ]))) )))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) ))) )) )) (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 IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT % IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return (pointer_expression * IDENT) ;) })) })) (return_statement return LIT ;) })))
(function_definition "long FUN_0019f480(long *param_1,undefined8 *param_2)\n\n{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_0019f480(long *param_1,undefined8 *param_2)" (identifier "FUN_0019f480") (parameter_list "(long *param_1,undefined8 *param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  ulong uVar1;\n  long *plVar2;\n  size_t __n;\n  int iVar3;\n  ulong uVar4;\n  ulong uVar5;\n  ulong uVar6;\n  long *plVar7;\n  long *plVar8;\n  \n  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);\n  uVar1 = param_1[1];\n  uVar6 = uVar4 % uVar1;\n  plVar8 = *(long **)(*param_1 + uVar6 * 8);\n  if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "long *plVar2;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar2" (* "*") (identifier "plVar2")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "ulong uVar4;" (type_identifier "ulong") (identifier "uVar4") (; ";")) (declaration "ulong uVar5;" (type_identifier "ulong") (identifier "uVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (expression_statement "uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);" (assignment_expression "uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907)" (identifier "uVar4") (= "=") (call_expression "FUN_002755d0(*param_2,param_2[1],0xc70f6907)" (identifier "FUN_002755d0") (argument_list "(*param_2,param_2[1],0xc70f6907)" (( "(") (pointer_expression "*param_2" (* "*") (identifier "param_2")) (, ",") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (, ",") (number_literal "0xc70f6907") () ")")))) (; ";")) (expression_statement "uVar1 = param_1[1];" (assignment_expression "uVar1 = param_1[1]" (identifier "uVar1") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar6 = uVar4 % uVar1;" (assignment_expression "uVar6 = uVar4 % uVar1" (identifier "uVar6") (= "=") (binary_expression "uVar4 % uVar1" (identifier "uVar4") (% "%") (identifier "uVar1"))) (; ";")) (expression_statement "plVar8 = *(long **)(*param_1 + uVar6 * 8);" (assignment_expression "plVar8 = *(long **)(*param_1 + uVar6 * 8)" (identifier "plVar8") (= "=") (pointer_expression "*(long **)(*param_1 + uVar6 * 8)" (* "*") (cast_expression "(long **)(*param_1 + uVar6 * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + uVar6 * 8)" (( "(") (binary_expression "*param_1 + uVar6 * 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (binary_expression "uVar6 * 8" (identifier "uVar6") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (if_statement "if (plVar8 != (long *)0x0) {\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }" (if "if") (parenthesized_expression "(plVar8 != (long *)0x0)" (( "(") (binary_expression "plVar8 != (long *)0x0" (identifier "plVar8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar5 = ((long *)*plVar8)[5];\n    plVar2 = (long *)*plVar8;\n    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }\n    if (*plVar8 != 0) {\n      return *plVar8;\n    }\n  }" ({ "{") (expression_statement "uVar5 = ((long *)*plVar8)[5];" (assignment_expression "uVar5 = ((long *)*plVar8)[5]" (identifier "uVar5") (= "=") (subscript_expression "((long *)*plVar8)[5]" (parenthesized_expression "((long *)*plVar8)" (( "(") (cast_expression "(long *)*plVar8" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar8" (* "*") (identifier "plVar8"))) () ")")) ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "plVar2 = (long *)*plVar8;" (assignment_expression "plVar2 = (long *)*plVar8" (identifier "plVar2") (= "=") (cast_expression "(long *)*plVar8" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar8" (* "*") (identifier "plVar8")))) (; ";")) (while_statement "while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }" (while "while") (parenthesized_expression "(((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))))" (( "(") (parenthesized_expression "((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))" (( "(") (binary_expression "(plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||\n           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))" (parenthesized_expression "(plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2]))" (( "(") (comma_expression "plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])" (assignment_expression "plVar7 = plVar2" (identifier "plVar7") (= "=") (identifier "plVar2")) (, ",") (binary_expression "uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])" (binary_expression "uVar4 != uVar5" (identifier "uVar4") (!= "!=") (identifier "uVar5")) (|| "||") (parenthesized_expression "(__n = param_2[1], __n != plVar7[2])" (( "(") (comma_expression "__n = param_2[1], __n != plVar7[2]" (assignment_expression "__n = param_2[1]" (identifier "__n") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (, ",") (binary_expression "__n != plVar7[2]" (identifier "__n") (!= "!=") (subscript_expression "plVar7[2]" (identifier "plVar7") ([ "[") (number_literal "2") (] "]")))) () ")")))) () ")")) (|| "||") (parenthesized_expression "((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)))" (( "(") (parenthesized_expression "(__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))" (( "(") (binary_expression "__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)" (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0)" (( "(") (comma_expression "iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0" (assignment_expression "iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n)" (identifier "iVar3") (= "=") (call_expression "memcmp((void *)*param_2,(void *)plVar7[1],__n)" (identifier "memcmp") (argument_list "((void *)*param_2,(void *)plVar7[1],__n)" (( "(") (cast_expression "(void *)*param_2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (cast_expression "(void *)plVar7[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "__n") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) () ")")) (compound_statement "{\n      plVar2 = (long *)*plVar7;\n      if (plVar2 == (long *)0x0) {\n        return 0;\n      }\n      uVar5 = plVar2[5];\n      plVar8 = plVar7;\n      if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }\n    }" ({ "{") (expression_statement "plVar2 = (long *)*plVar7;" (assignment_expression "plVar2 = (long *)*plVar7" (identifier "plVar2") (= "=") (cast_expression "(long *)*plVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (; ";")) (if_statement "if (plVar2 == (long *)0x0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(plVar2 == (long *)0x0)" (( "(") (binary_expression "plVar2 == (long *)0x0" (identifier "plVar2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar5 = plVar2[5];" (assignment_expression "uVar5 = plVar2[5]" (identifier "uVar5") (= "=") (subscript_expression "plVar2[5]" (identifier "plVar2") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "plVar8 = plVar7;" (assignment_expression "plVar8 = plVar7" (identifier "plVar8") (= "=") (identifier "plVar7")) (; ";")) (if_statement "if (uVar6 != uVar5 % uVar1) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(uVar6 != uVar5 % uVar1)" (( "(") (binary_expression "uVar6 != uVar5 % uVar1" (identifier "uVar6") (!= "!=") (binary_expression "uVar5 % uVar1" (identifier "uVar5") (% "%") (identifier "uVar1"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (if_statement "if (*plVar8 != 0) {\n      return *plVar8;\n    }" (if "if") (parenthesized_expression "(*plVar8 != 0)" (( "(") (binary_expression "*plVar8 != 0" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return *plVar8;\n    }" ({ "{") (return_statement "return *plVar8;" (return "return") (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* DWARF original prototype: const_iterator
   find(_Hashtable<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>,_std::allocator<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Identity,_std::equal_to<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::hash<std::__cxx11::basic_string<char,_std::char_traits<char>,_std::allocator<char>_>_>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_true,_true>_>
   * this, key_type * __k) */

type_1 __thiscall
var_11::
_Hashtable<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>,_std::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>,_std::var_14<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>var_15>,_std::__detail::_Identity,_std::equal_to<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>var_15>,_std::hash<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>var_15>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,var_16,var_16>var_15>
::find(_Hashtable<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>,_std::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>,_std::var_14<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>var_15>,_std::__detail::_Identity,_std::equal_to<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>var_15>,_std::hash<var_11::__cxx11::basic_string<char,_std::var_13<char>,_std::var_14<char>var_15>var_15>,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,var_16,var_16>var_15>
       *this,key_type *__k)

{
  type_3 var_2;
  type_2 *var_8;
  int var_7;
  type_2 *var_4;
  type_2 *var_5;
  type_3 var_9;
  type_4 p_Var7;
  type_4 var_3;
  
  var_4 = (type_2 *)var_1((__k->_M_dataplus)._M_p,__k->_M_string_length,0xc70f6907);
  var_2 = this->_M_bucket_count;
  var_9 = (type_3)var_4 % var_2;
  var_3 = this->_M_buckets[var_9];
  if (var_3 != (type_4)0x0) {
    var_5 = var_3->_M_nxt[5]._M_nxt;
    var_8 = var_3->_M_nxt;
    while (((p_Var7 = var_8, var_4 != var_5 ||
            (var_5 = (type_2 *)__k->_M_string_length, var_5 != p_Var7[2]._M_nxt)) ||
           ((var_5 != (type_2 *)0x0 &&
            (var_7 = var_6((__k->_M_dataplus)._M_p,p_Var7[1]._M_nxt,(size_t)var_5), var_7 != 0))))
          ) {
      var_8 = p_Var7->_M_nxt;
      if (var_8 == (type_2 *)0x0) {
        return (type_1)(type_5 *)0x0;
      }
      var_5 = var_8[5]._M_nxt;
      var_3 = p_Var7;
      if (var_9 != (type_3)var_5 % var_2) {
        return (type_1)(type_5 *)0x0;
      }
    }
    if ((type_5 *)var_3->_M_nxt != (type_5 *)0x0) {
      return (type_1)
             (var_10<var_11::__cxx11::basic_string<var_12,_std::var_13<var_12>,_std::var_14<var_12>var_15>,var_16>
              )var_3->_M_nxt;
    }
  }
  return (type_1)(type_5 *)0x0;
}


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

long MASKED(long *param_1,undefined8 *param_2)

{
  ulong uVar1;
  long *plVar2;
  size_t __n;
  int iVar3;
  ulong uVar4;
  ulong uVar5;
  ulong uVar6;
  long *plVar7;
  long *plVar8;
  
  uVar4 = FUN_002755d0(*param_2,param_2[1],0xc70f6907);
  uVar1 = param_1[1];
  uVar6 = uVar4 % uVar1;
  plVar8 = *(long **)(*param_1 + uVar6 * 8);
  if (plVar8 != (long *)0x0) {
    uVar5 = ((long *)*plVar8)[5];
    plVar2 = (long *)*plVar8;
    while (((plVar7 = plVar2, uVar4 != uVar5 || (__n = param_2[1], __n != plVar7[2])) ||
           ((__n != 0 && (iVar3 = memcmp((void *)*param_2,(void *)plVar7[1],__n), iVar3 != 0))))) {
      plVar2 = (long *)*plVar7;
      if (plVar2 == (long *)0x0) {
        return 0;
      }
      uVar5 = plVar2[5];
      plVar8 = plVar7;
      if (uVar6 != uVar5 % uVar1) {
        return 0;
      }
    }
    if (*plVar8 != 0) {
      return *plVar8;
    }
  }
  return 0;
}

