
/* DWARF original prototype: const_iterator
   find(_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
   * this, key_type * __k) */

const_iterator __thiscall
std::
_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
::find(_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
       *this,key_type *__k)

{
  __node_base *p_Var1;
  ulong __code;
  
  __code = (ulong)__k->sym_ ^ (ulong)__k->object_ ^ __k->addend_ ^ (ulong)__k->locsym_;
  p_Var1 = _M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);
  if ((p_Var1 != (__node_base *)0x0) && ((__node_type *)p_Var1->_M_nxt != (__node_type *)0x0)) {
    return (const_iterator)
           (_Node_iterator_base<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_true>
            )p_Var1->_M_nxt;
  }
  return (const_iterator)(__node_type *)0x0;
}



long FUN_001d8ff0(long param_1,ulong *param_2)

{
  long *plVar1;
  
  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^
                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);
  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {
    return *plVar1;
  }
  return 0;
}


MOV EAX,dword ptr [RSI + 0x18]
MOV RCX,qword ptr [RSI]
XOR EDX,EDX
XOR RCX,qword ptr [RSI + 0x8]
XOR RCX,qword ptr [RSI + 0x10]
XOR RCX,RAX
MOV RAX,RCX
DIV qword ptr [RDI + 0x8]
MOV R8,RDX
MOV RDX,RSI
MOV RSI,R8
CALL 0x001d8f70
TEST RAX,RAX
JZ 0x001d9030
MOV RAX,qword ptr [RAX]
TEST RAX,RAX
JZ 0x001d9030
RET
XOR EAX,EAX
RET
(translation_unit "long FUN_001d8ff0(long param_1,ulong *param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_001d8ff0(long param_1,ulong *param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001d8ff0(long param_1,ulong *param_2)" identifier (parameter_list "(long param_1,ulong *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (expression_statement "plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);" (assignment_expression "plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" identifier = (cast_expression "(long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" identifier (argument_list "(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" ( identifier , (binary_expression "(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8)" (parenthesized_expression "(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3])" ( (binary_expression "*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]" (binary_expression "*param_2 ^ param_2[1] ^ param_2[2]" (binary_expression "*param_2 ^ param_2[1]" (pointer_expression "*param_2" * identifier) ^ (subscript_expression "param_2[1]" identifier [ number_literal ])) ^ (subscript_expression "param_2[2]" identifier [ number_literal ])) ^ (cast_expression "(ulong)(uint)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)param_2[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])))) )) % (pointer_expression "*(ulong *)(param_1 + 8)" * (cast_expression "(ulong *)(param_1 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) , identifier ))))) ;) (if_statement "if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }" if (parenthesized_expression "((plVar1 != (long *)0x0) && (*plVar1 != 0))" ( (binary_expression "(plVar1 != (long *)0x0) && (*plVar1 != 0)" (parenthesized_expression "(plVar1 != (long *)0x0)" ( (binary_expression "plVar1 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*plVar1 != 0)" ( (binary_expression "*plVar1 != 0" (pointer_expression "*plVar1" * identifier) != number_literal) ))) )) (compound_statement "{\n    return *plVar1;\n  }" { (return_statement "return *plVar1;" return (pointer_expression "*plVar1" * identifier) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* DWARF original prototype: const_iterator\n   find(_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n   * this, key_type * __k) */\n\nconst_iterator __thiscall\nstd::\n_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n::find(_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n       *this,key_type *__k)\n\n{\n  __node_base *p_Var1;\n  ulong __code;\n  \n  __code = (ulong)__k->sym_ ^ (ulong)__k->object_ ^ __k->addend_ ^ (ulong)__k->locsym_;\n  p_Var1 = _M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);\n  if ((p_Var1 != (__node_base *)0x0) && ((__node_type *)p_Var1->_M_nxt != (__node_type *)0x0)) {\n    return (const_iterator)\n           (_Node_iterator_base<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_true>\n            )p_Var1->_M_nxt;\n  }\n  return (const_iterator)(__node_type *)0x0;\n}\n\n" comment (declaration "const_iterator __thiscall\nstd::\n_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n::find(_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>\n       *this,key_type *__k)\n\n{\n  __node_base *p_Var1;" type_identifier (ms_call_modifier "__thiscall" __thiscall) (ERROR "std::\n_Hashtable<(anonymous_namespace)::" identifier : : identifier < ( identifier ) : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::" identifier > : :) identifier , (ERROR "_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::" identifier : : identifier < (function_declarator "const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier) , (function_declarator "_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier (ERROR ">," > ,) identifier (ERROR "::" : :) identifier (ERROR "<" <) identifier (ERROR "::" : :) identifier (ERROR "<" <) (call_expression "const_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier) , (function_declarator "_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier (ERROR ">" >) identifier (ERROR ">," > ,) identifier (ERROR "::" : :) identifier (ERROR "::" : :) identifier) , identifier : : identifier < ( identifier ) : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::" identifier > : :) identifier (ERROR ">,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash" > , (function_declarator "_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier)) , (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<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::" identifier > identifier > : : (function_declarator "find(_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key" identifier (parameter_list "(_Hashtable<(anonymous_namespace)" ( (parameter_declaration "_Hashtable<(anonymous_namespace" type_identifier (ERROR "<(" < () identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier) , identifier : : identifier < (function_declarator "const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier) , (function_declarator "_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier (ERROR ">," > ,) identifier (ERROR "::" : :) identifier (ERROR "<" <) identifier (ERROR "::" : :) identifier (ERROR "<" <) (call_expression "const_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier) , (function_declarator "_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier (ERROR ">" >) identifier (ERROR ">," > ,) identifier (ERROR "::" : :) identifier (ERROR "::" : :) identifier) , identifier : : identifier < ( identifier ) : :) identifier (ERROR "<64" < number_literal) , (ERROR "_false>::" identifier > : :) identifier (ERROR ">,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash" > , (function_declarator "_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash" identifier (parameter_list "(anonymous_namespace)" ( (parameter_declaration "anonymous_namespace" type_identifier) )) (ERROR "::" : :) identifier (ERROR "<64," < number_literal ,) identifier (ERROR ">::" > : :) identifier)) , (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>_>" identifier > identifier >) (pointer_declarator "*this" * identifier) , (ERROR "key_type *__k)\n\n{\n  __node_base" identifier (pointer_declarator "*__k" * identifier) ) { identifier) (pointer_declarator "*p_Var1" * identifier) ;) (declaration "ulong __code;" type_identifier identifier ;) (expression_statement "__code = (ulong)__k->sym_ ^ (ulong)__k->object_ ^ __k->addend_ ^ (ulong)__k->locsym_;" (assignment_expression "__code = (ulong)__k->sym_ ^ (ulong)__k->object_ ^ __k->addend_ ^ (ulong)__k->locsym_" identifier = (binary_expression "(ulong)__k->sym_ ^ (ulong)__k->object_ ^ __k->addend_ ^ (ulong)__k->locsym_" (binary_expression "(ulong)__k->sym_ ^ (ulong)__k->object_ ^ __k->addend_" (binary_expression "(ulong)__k->sym_ ^ (ulong)__k->object_" (cast_expression "(ulong)__k->sym_" ( (type_descriptor "ulong" type_identifier) ) (field_expression "__k->sym_" identifier -> field_identifier)) ^ (cast_expression "(ulong)__k->object_" ( (type_descriptor "ulong" type_identifier) ) (field_expression "__k->object_" identifier -> field_identifier))) ^ (field_expression "__k->addend_" identifier -> field_identifier)) ^ (cast_expression "(ulong)__k->locsym_" ( (type_descriptor "ulong" type_identifier) ) (field_expression "__k->locsym_" identifier -> field_identifier)))) ;) (expression_statement "p_Var1 = _M_find_before_node(this,__code % this->_M_bucket_count,__k,__code);" (assignment_expression "p_Var1 = _M_find_before_node(this,__code % this->_M_bucket_count,__k,__code)" identifier = (call_expression "_M_find_before_node(this,__code % this->_M_bucket_count,__k,__code)" identifier (argument_list "(this,__code % this->_M_bucket_count,__k,__code)" ( identifier , (binary_expression "__code % this->_M_bucket_count" identifier % (field_expression "this->_M_bucket_count" identifier -> field_identifier)) , identifier , identifier )))) ;) (if_statement "if ((p_Var1 != (__node_base *)0x0) && ((__node_type *)p_Var1->_M_nxt != (__node_type *)0x0)) {\n    return (const_iterator)\n           (_Node_iterator_base<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_true>\n            )p_Var1->_M_nxt;\n  }" if (parenthesized_expression "((p_Var1 != (__node_base *)0x0) && ((__node_type *)p_Var1->_M_nxt != (__node_type *)0x0))" ( (binary_expression "(p_Var1 != (__node_base *)0x0) && ((__node_type *)p_Var1->_M_nxt != (__node_type *)0x0)" (parenthesized_expression "(p_Var1 != (__node_base *)0x0)" ( (binary_expression "p_Var1 != (__node_base *)0x0" identifier != (cast_expression "(__node_base *)0x0" ( (type_descriptor "__node_base *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((__node_type *)p_Var1->_M_nxt != (__node_type *)0x0)" ( (binary_expression "(__node_type *)p_Var1->_M_nxt != (__node_type *)0x0" (cast_expression "(__node_type *)p_Var1->_M_nxt" ( (type_descriptor "__node_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "p_Var1->_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::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_true>\n            )p_Var1->_M_nxt;\n  }" { (return_statement "return (const_iterator)\n           (_Node_iterator_base<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_true>\n            )p_Var1->_M_nxt;" return (call_expression "(const_iterator)\n           (_Node_iterator_base<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_true>\n            )p_Var1->_M_nxt" (parenthesized_expression "(const_iterator)" ( identifier )) (argument_list "(_Node_iterator_base<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_true>\n            )p_Var1->_M_nxt" ( (binary_expression "_Node_iterator_base<std::pair<const_(anonymous_namespace)::Stub_table<64" (binary_expression "_Node_iterator_base<std::pair<const_(anonymous_namespace)" (binary_expression "_Node_iterator_base<std" identifier < identifier) (ERROR "::pair" : : identifier) < (call_expression "const_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier )))) (ERROR "::Stub_table" : : identifier) < number_literal) , (binary_expression "_false>::Plt_stub_key" identifier > (ERROR "::" : :) identifier) , (binary_expression "_(anonymous_namespace)::Stub_table<64" (call_expression "_(anonymous_namespace)" identifier (argument_list "(anonymous_namespace)" ( identifier ))) (ERROR "::Stub_table" : : identifier) < number_literal) , (binary_expression "_false>::Plt_stub_ent" identifier > (ERROR "::" : :) identifier) (ERROR ">" >) , (binary_expression "_true>\n            )p_Var1->_M_nxt" identifier > (ERROR ")" )) (field_expression "p_Var1->_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_001d8ff0(long param_1,ulong *param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_001d8ff0(long param_1,ulong *param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_001d8ff0(long param_1,ulong *param_2)" identifier (parameter_list "(long param_1,ulong *param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" { (declaration "long *plVar1;" (sized_type_specifier "long" long) (pointer_declarator "*plVar1" * identifier) ;) (expression_statement "plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);" (assignment_expression "plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" identifier = (cast_expression "(long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" identifier (argument_list "(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" ( identifier , (binary_expression "(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8)" (parenthesized_expression "(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3])" ( (binary_expression "*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]" (binary_expression "*param_2 ^ param_2[1] ^ param_2[2]" (binary_expression "*param_2 ^ param_2[1]" (pointer_expression "*param_2" * identifier) ^ (subscript_expression "param_2[1]" identifier [ number_literal ])) ^ (subscript_expression "param_2[2]" identifier [ number_literal ])) ^ (cast_expression "(ulong)(uint)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)param_2[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])))) )) % (pointer_expression "*(ulong *)(param_1 + 8)" * (cast_expression "(ulong *)(param_1 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) , identifier ))))) ;) (if_statement "if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }" if (parenthesized_expression "((plVar1 != (long *)0x0) && (*plVar1 != 0))" ( (binary_expression "(plVar1 != (long *)0x0) && (*plVar1 != 0)" (parenthesized_expression "(plVar1 != (long *)0x0)" ( (binary_expression "plVar1 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*plVar1 != 0)" ( (binary_expression "*plVar1 != 0" (pointer_expression "*plVar1" * identifier) != number_literal) ))) )) (compound_statement "{\n    return *plVar1;\n  }" { (return_statement "return *plVar1;" return (pointer_expression "*plVar1" * 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) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (pointer_expression * IDENT) ^ (subscript_expression IDENT [ LIT ])) ^ (subscript_expression IDENT [ LIT ])) ^ (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) )) % (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , 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 ( (binary_expression (pointer_expression * IDENT) != LIT) ))) )) (compound_statement { (return_statement return (pointer_expression * IDENT) ;) })) (return_statement return LIT ;) })))
(function_definition "long FUN_001d8ff0(long param_1,ulong *param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_001d8ff0(long param_1,ulong *param_2)" (identifier "FUN_001d8ff0") (parameter_list "(long param_1,ulong *param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "ulong *param_2" (type_identifier "ulong") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" ({ "{") (declaration "long *plVar1;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (expression_statement "plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);" (assignment_expression "plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" (identifier "plVar1") (= "=") (cast_expression "(long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" (identifier "FUN_001d8f70") (argument_list "(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2)" (( "(") (identifier "param_1") (, ",") (binary_expression "(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8)" (parenthesized_expression "(*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3])" (( "(") (binary_expression "*param_2 ^ param_2[1] ^ param_2[2] ^\n                                        (ulong)(uint)param_2[3]" (binary_expression "*param_2 ^ param_2[1] ^ param_2[2]" (binary_expression "*param_2 ^ param_2[1]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (^ "^") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (^ "^") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (^ "^") (cast_expression "(ulong)(uint)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(uint)param_2[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))))) () ")")) (% "%") (pointer_expression "*(ulong *)(param_1 + 8)" (* "*") (cast_expression "(ulong *)(param_1 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (, ",") (identifier "param_2") () ")"))))) (; ";")) (if_statement "if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }" (if "if") (parenthesized_expression "((plVar1 != (long *)0x0) && (*plVar1 != 0))" (( "(") (binary_expression "(plVar1 != (long *)0x0) && (*plVar1 != 0)" (parenthesized_expression "(plVar1 != (long *)0x0)" (( "(") (binary_expression "plVar1 != (long *)0x0" (identifier "plVar1") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*plVar1 != 0)" (( "(") (binary_expression "*plVar1 != 0" (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return *plVar1;\n  }" ({ "{") (return_statement "return *plVar1;" (return "return") (pointer_expression "*plVar1" (* "*") (identifier "plVar1")) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* DWARF original prototype: const_iterator
   find(_Hashtable<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>,_std::allocator<std::pair<const_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_ent>_>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key>,_(anonymous_namespace)::Stub_table<64,_false>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,_true>_>
   * this, key_type * __k) */

type_1 __thiscall
var_5::
_Hashtable<(anonymous_namespace)::Stub_table<64,var_7>::var_8,_std::pair<var_6(anonymous_namespace)::Stub_table<64,var_7>::var_8,var_9(anonymous_namespace)::Stub_table<64,var_7>::var_10>,_std::allocator<var_5::pair<var_6(anonymous_namespace)::Stub_table<64,var_7>::var_8,var_9(anonymous_namespace)::Stub_table<64,var_7>::var_10>var_9>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,var_7>::var_8>,var_9(anonymous_namespace)::Stub_table<64,var_7>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,var_7,var_11>var_9>
::find(_Hashtable<(anonymous_namespace)::Stub_table<64,var_7>::var_8,_std::pair<var_6(anonymous_namespace)::Stub_table<64,var_7>::var_8,var_9(anonymous_namespace)::Stub_table<64,var_7>::var_10>,_std::allocator<var_5::pair<var_6(anonymous_namespace)::Stub_table<64,var_7>::var_8,var_9(anonymous_namespace)::Stub_table<64,var_7>::var_10>var_9>,_std::__detail::_Select1st,_std::equal_to<(anonymous_namespace)::Stub_table<64,var_7>::var_8>,var_9(anonymous_namespace)::Stub_table<64,var_7>::Plt_stub_key_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,var_7,var_11>var_9>
       *this,key_type *__k)

{
  type_3 *var_3;
  type_2 var_2;
  
  var_2 = (type_2)__k->sym_ ^ (type_2)__k->object_ ^ __k->addend_ ^ (type_2)__k->locsym_;
  var_3 = var_1(this,var_2 % this->_M_bucket_count,__k,var_2);
  if ((var_3 != (type_3 *)0x0) && ((type_4 *)var_3->_M_nxt != (type_4 *)0x0)) {
    return (type_1)
           (var_4<var_5::pair<var_6(anonymous_namespace)::Stub_table<64,var_7>::var_8,var_9(anonymous_namespace)::Stub_table<64,var_7>::var_10>,var_11>
            )var_3->_M_nxt;
  }
  return (type_1)(type_4 *)0x0;
}


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

{
  long *plVar1;
  
  plVar1 = (long *)FUN_001d8f70(param_1,(*param_2 ^ param_2[1] ^ param_2[2] ^
                                        (ulong)(uint)param_2[3]) % *(ulong *)(param_1 + 8),param_2);
  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {
    return *plVar1;
  }
  return 0;
}

