
/* DWARF original prototype: const_iterator
   find(_Hashtable<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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;
  
  p_Var1 = _M_find_before_node(this,__k->hash_code % this->_M_bucket_count,__k,__k->hash_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_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_true>
            )p_Var1->_M_nxt;
  }
  return (const_iterator)(__node_type *)0x0;
}



long FUN_0021c550(long param_1,long param_2)

{
  long *plVar1;
  
  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2
                               );
  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {
    return *plVar1;
  }
  return 0;
}


SUB RSP,0x8
MOV RCX,qword ptr [RSI + 0x10]
XOR EDX,EDX
MOV RAX,RCX
DIV qword ptr [RDI + 0x8]
MOV R8,RDX
MOV RDX,RSI
MOV RSI,R8
CALL 0x0021c220
TEST RAX,RAX
JZ 0x0021c588
MOV RAX,qword ptr [RAX]
TEST RAX,RAX
JZ 0x0021c588
ADD RSP,0x8
RET
XOR EAX,EAX
ADD RSP,0x8
RET
(translation_unit "long FUN_0021c550(long param_1,long param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_0021c550(long param_1,long param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0021c550(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\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_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );" (assignment_expression "plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" identifier = (cast_expression "(long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" identifier (argument_list "(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" ( identifier , (binary_expression "*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8)" (pointer_expression "*(ulong *)(param_2 + 0x10)" * (cast_expression "(ulong *)(param_2 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" 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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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  \n  p_Var1 = _M_find_before_node(this,__k->hash_code % this->_M_bucket_count,__k,__k->hash_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_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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<gold::Stringpool_template<short_unsigned_int>::" identifier : : identifier < identifier : : identifier < identifier > : :) identifier , (ERROR "_std::pair<const_gold::Stringpool_template<short_unsigned_int>::" identifier : : identifier < identifier : : identifier < identifier > : :) identifier , identifier (ERROR ">" >) , (ERROR "_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::" identifier : : identifier < identifier : : identifier < identifier : : identifier < identifier > : :) identifier , identifier (ERROR ">_>" > identifier >) , (ERROR "_std::__detail::" identifier : : identifier : :) identifier , (ERROR "_gold::Stringpool_template<short_unsigned_int>::" identifier : : identifier < identifier > : :) identifier , (ERROR "_gold::Stringpool_template<short_unsigned_int>::" identifier : : identifier < identifier > : :) 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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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" identifier > identifier > : : (function_declarator "find(_Hashtable<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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)" identifier (parameter_list "(_Hashtable<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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)" ( (parameter_declaration "_Hashtable<gold::Stringpool_template<short_unsigned_int>::Hashkey" type_identifier (ERROR "<gold::Stringpool_template<short_unsigned_int>::" < identifier : : identifier < identifier > : :) identifier) , (parameter_declaration "_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey" type_identifier (ERROR "::pair<const_gold::Stringpool_template<short_unsigned_int>::" : : identifier < identifier : : identifier < identifier > : :) identifier) , (parameter_declaration "_long_unsigned_int" type_identifier) (ERROR ">" >) , (parameter_declaration "_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey" type_identifier (ERROR "::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::" : : identifier < identifier : : identifier < identifier : : identifier < identifier > : :) identifier) , (parameter_declaration "_long_unsigned_int>_" type_identifier (ERROR ">" >) identifier) (ERROR ">" >) , (parameter_declaration "_std::__detail::_Select1st" type_identifier (ERROR "::__detail::" : : identifier : :) identifier) , (parameter_declaration "_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq" type_identifier (ERROR "::Stringpool_template<short_unsigned_int>::" : : identifier < identifier > : :) identifier) , (parameter_declaration "_gold::Stringpool_template<short_unsigned_int>::Stringpool_hash" type_identifier (ERROR "::Stringpool_template<short_unsigned_int>::" : : identifier < identifier > : :) identifier) , (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 "_false" 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) (pointer_declarator "*p_Var1" * identifier) ;) (expression_statement "p_Var1 = _M_find_before_node(this,__k->hash_code % this->_M_bucket_count,__k,__k->hash_code);" (assignment_expression "p_Var1 = _M_find_before_node(this,__k->hash_code % this->_M_bucket_count,__k,__k->hash_code)" identifier = (call_expression "_M_find_before_node(this,__k->hash_code % this->_M_bucket_count,__k,__k->hash_code)" identifier (argument_list "(this,__k->hash_code % this->_M_bucket_count,__k,__k->hash_code)" ( identifier , (binary_expression "__k->hash_code % this->_M_bucket_count" (field_expression "__k->hash_code" identifier -> field_identifier) % (field_expression "this->_M_bucket_count" identifier -> field_identifier)) , identifier , (field_expression "__k->hash_code" identifier -> field_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_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_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_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_true>\n            )p_Var1->_M_nxt;\n  }" { (return_statement "return (const_iterator)\n           (_Node_iterator_base<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_true>\n            )p_Var1->_M_nxt;" return (call_expression "(const_iterator)\n           (_Node_iterator_base<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_true>\n            )p_Var1->_M_nxt" (parenthesized_expression "(const_iterator)" ( identifier )) (argument_list "(_Node_iterator_base<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_true>\n            )p_Var1->_M_nxt" ( (binary_expression "_Node_iterator_base<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey" (binary_expression "_Node_iterator_base<std::pair<const_gold::Stringpool_template<short_unsigned_int" (binary_expression "_Node_iterator_base<std::pair<const_gold" (binary_expression "_Node_iterator_base<std" identifier < identifier) (ERROR "::pair" : : identifier) < identifier) (ERROR "::Stringpool_template" : : identifier) < identifier) > (ERROR "::" : :) identifier) , (binary_expression "_long_unsigned_int>,_true>\n            )p_Var1->_M_nxt" (binary_expression "_long_unsigned_int>,_true" identifier > (ERROR "," ,) 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_0021c550(long param_1,long param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}\n\n" (function_definition "long FUN_0021c550(long param_1,long param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" (sized_type_specifier "long" long) (function_declarator "FUN_0021c550(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\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_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );" (assignment_expression "plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" identifier = (cast_expression "(long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" identifier (argument_list "(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" ( identifier , (binary_expression "*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8)" (pointer_expression "*(ulong *)(param_2 + 0x10)" * (cast_expression "(ulong *)(param_2 + 0x10)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" 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 (sized_type_specifier long) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_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_0021c550(long param_1,long param_2)\n\n{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\n  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {\n    return *plVar1;\n  }\n  return 0;\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_0021c550(long param_1,long param_2)" (identifier "FUN_0021c550") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  long *plVar1;\n  \n  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );\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_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               );" (assignment_expression "plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" (identifier "plVar1") (= "=") (cast_expression "(long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" (identifier "FUN_0021c220") (argument_list "(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2\n                               )" (( "(") (identifier "param_1") (, ",") (binary_expression "*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8)" (pointer_expression "*(ulong *)(param_2 + 0x10)" (* "*") (cast_expression "(ulong *)(param_2 + 0x10)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (% "%") (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<gold::Stringpool_template<short_unsigned_int>::Hashkey,_std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>,_std::allocator<std::pair<const_gold::Stringpool_template<short_unsigned_int>::Hashkey,_long_unsigned_int>_>,_std::__detail::_Select1st,_gold::Stringpool_template<short_unsigned_int>::Stringpool_eq,_gold::Stringpool_template<short_unsigned_int>::Stringpool_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_4::
_Hashtable<gold::Stringpool_template<var_6>::var_7,_std::pair<var_5::Stringpool_template<var_6>::var_7,var_8>,_std::allocator<var_4::pair<var_5::Stringpool_template<var_6>::var_7,var_8>_>,_std::__detail::_Select1st,_gold::Stringpool_template<var_6>::Stringpool_eq,_gold::Stringpool_template<var_6>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,var_9>_>
::find(_Hashtable<gold::Stringpool_template<var_6>::var_7,_std::pair<var_5::Stringpool_template<var_6>::var_7,var_8>,_std::allocator<var_4::pair<var_5::Stringpool_template<var_6>::var_7,var_8>_>,_std::__detail::_Select1st,_gold::Stringpool_template<var_6>::Stringpool_eq,_gold::Stringpool_template<var_6>::Stringpool_hash,_std::__detail::_Mod_range_hashing,_std::__detail::_Default_ranged_hash,_std::__detail::_Prime_rehash_policy,_std::__detail::_Hashtable_traits<true,_false,var_9>_>
       *this,key_type *__k)

{
  type_2 *var_2;
  
  var_2 = var_1(this,__k->hash_code % this->_M_bucket_count,__k,__k->hash_code);
  if ((var_2 != (type_2 *)0x0) && ((type_3 *)var_2->_M_nxt != (type_3 *)0x0)) {
    return (type_1)
           (var_3<var_4::pair<var_5::Stringpool_template<var_6>::var_7,var_8>,var_9>
            )var_2->_M_nxt;
  }
  return (type_1)(type_3 *)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: (sized_type_specifier) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (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,long param_2)

{
  long *plVar1;
  
  plVar1 = (long *)FUN_0021c220(param_1,*(ulong *)(param_2 + 0x10) % *(ulong *)(param_1 + 8),param_2
                               );
  if ((plVar1 != (long *)0x0) && (*plVar1 != 0)) {
    return *plVar1;
  }
  return 0;
}

