
/* DWARF original prototype: Input_reader * do_get_input_reader(Sized_incremental_binary<32,_true> *
   this, uint n) */

Input_reader * __thiscall
gold::Sized_incremental_binary<32,_true>::do_get_input_reader
          (Sized_incremental_binary<32,_true> *this,uint n)

{
  pointer pSVar1;
  
  pSVar1 = (this->input_entry_readers_).
           super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>
           ._M_impl._M_start;
  if ((ulong)n <
      (ulong)((long)(this->input_entry_readers_).
                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>
                    ._M_impl._M_finish - (long)pSVar1 >> 5)) {
    return &pSVar1[n].super_Input_reader;
  }
                    /* WARNING: Subroutine does not return */
  do_gold_unreachable("../../gold/incremental.h",0x6dd,"do_get_input_reader");
}



long FUN_00186a50(long param_1,uint param_2)

{
  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {
    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");
}


MOV RAX,qword ptr [RDI + 0x160]
MOV RDX,qword ptr [RDI + 0x168]
MOV ESI,ESI
SUB RDX,RAX
SAR RDX,0x5
CMP RSI,RDX
JNC 0x00186a74
SHL RSI,0x5
ADD RAX,RSI
RET
PUSH RAX
LEA RDX,[0x3749d0]
MOV ESI,0x6dd
LEA RDI,[0x373482]
CALL 0x0017c650
(translation_unit "long FUN_00186a50(long param_1,uint param_2)\n\n{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}\n\n" (function_definition "long FUN_00186a50(long param_1,uint param_2)\n\n{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00186a50(long param_1,uint param_2)" identifier (parameter_list "(long param_1,uint param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}" { (if_statement "if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }" if (parenthesized_expression "((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5))" ( (binary_expression "(ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" ( (binary_expression "*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5" (binary_expression "*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160)" (pointer_expression "*(long *)(param_1 + 0x168)" * (cast_expression "(long *)(param_1 + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x168)" ( (binary_expression "param_1 + 0x168" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x160)" * (cast_expression "(long *)(param_1 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x160)" ( (binary_expression "param_1 + 0x160" identifier + number_literal) ))))) >> number_literal) )))) )) (compound_statement "{\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }" { (return_statement "return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;" return (binary_expression "*(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20" (pointer_expression "*(long *)(param_1 + 0x160)" * (cast_expression "(long *)(param_1 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x160)" ( (binary_expression "param_1 + 0x160" identifier + number_literal) )))) + (binary_expression "(ulong)param_2 * 0x20" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ;) })) comment (expression_statement "FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");" (call_expression "FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader")" identifier (argument_list "("../../gold/incremental.h",0x6dd,"do_get_input_reader")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""do_get_input_reader"" " string_content ") ))) ;) })))
(translation_unit "/* DWARF original prototype: Input_reader * do_get_input_reader(Sized_incremental_binary<32,_true> *\n   this, uint n) */\n\nInput_reader * __thiscall\ngold::Sized_incremental_binary<32,_true>::do_get_input_reader\n          (Sized_incremental_binary<32,_true> *this,uint n)\n\n{\n  pointer pSVar1;\n  \n  pSVar1 = (this->input_entry_readers_).\n           super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n           ._M_impl._M_start;\n  if ((ulong)n <\n      (ulong)((long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5)) {\n    return &pSVar1[n].super_Input_reader;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}\n\n" comment (ERROR "Input_reader * __thiscall\ngold::Sized_incremental_binary<32,_true>::do_get_input_reader\n          (Sized_incremental_binary<32,_true> *this,uint n)" (binary_expression "Input_reader * __thiscall\ngold::Sized_incremental_binary<32,_true>::do_get_input_reader\n          (Sized_incremental_binary<32,_true> *this,uint n)" (binary_expression "Input_reader * __thiscall\ngold::Sized_incremental_binary<32" (binary_expression "Input_reader * __thiscall" identifier * identifier) (ERROR "gold::Sized_incremental_binary" identifier : : identifier) < number_literal) (ERROR ",_true" , identifier) > (ERROR "::" : :) (call_expression "do_get_input_reader\n          (Sized_incremental_binary<32,_true> *this,uint n)" identifier (argument_list "(Sized_incremental_binary<32,_true> *this,uint n)" ( (binary_expression "Sized_incremental_binary<32" identifier < number_literal) , (binary_expression "_true> *this" identifier > (pointer_expression "*this" * identifier)) , identifier (ERROR "n" identifier) ))))) (compound_statement "{\n  pointer pSVar1;\n  \n  pSVar1 = (this->input_entry_readers_).\n           super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n           ._M_impl._M_start;\n  if ((ulong)n <\n      (ulong)((long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5)) {\n    return &pSVar1[n].super_Input_reader;\n  }\n                    /* WARNING: Subroutine does not return */\n  do_gold_unreachable("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}" { (declaration "pointer pSVar1;" type_identifier identifier ;) (ERROR "pSVar1 = (this->input_entry_readers_).\n           super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::" (comma_expression "pSVar1 = (this->input_entry_readers_).\n           super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std" (binary_expression "pSVar1 = (this->input_entry_readers_).\n           super__Vector_base<gold::Sized_incremental_binary<32" (assignment_expression "pSVar1 = (this->input_entry_readers_).\n           super__Vector_base<gold" identifier = (binary_expression "(this->input_entry_readers_).\n           super__Vector_base<gold" (field_expression "(this->input_entry_readers_).\n           super__Vector_base" (parenthesized_expression "(this->input_entry_readers_)" ( (field_expression "this->input_entry_readers_" identifier -> field_identifier) )) . field_identifier) < identifier)) (ERROR "::Sized_incremental_binary" : : identifier) < number_literal) , (comma_expression "_true>::Sized_input_reader,_std" (binary_expression "_true>::Sized_input_reader" identifier > (ERROR "::" : :) identifier) , identifier)) : : (binary_expression "allocator<gold" identifier < identifier) : :) (expression_statement "Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n           ._M_impl._M_start;" (comma_expression "Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n           ._M_impl._M_start" (binary_expression "Sized_incremental_binary<32" identifier < number_literal) , (field_expression "_true>::Sized_input_reader>_>\n           ._M_impl._M_start" (field_expression "_true>::Sized_input_reader>_>\n           ._M_impl" (binary_expression "_true>::Sized_input_reader>_" (binary_expression "_true>::Sized_input_reader" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier)) ;) (if_statement "if ((ulong)n <\n      (ulong)((long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5)) {\n    return &pSVar1[n].super_Input_reader;\n  }" if (parenthesized_expression "((ulong)n <\n      (ulong)((long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5))" ( (binary_expression "(ulong)n <\n      (ulong)((long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5)" (cast_expression "(ulong)n" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)((long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32,_true>::Sized_input_reader,_std::allocator<gold::Sized_incremental_binary<32,_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5)" ( (binary_expression "(long)(this->input_entry_readers_).\n                    super__Vector_base<gold::Sized_incremental_binary<32" (binary_expression "(long)(this->input_entry_readers_).\n                    super__Vector_base<gold" (cast_expression "(long)(this->input_entry_readers_).\n                    super__Vector_base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(this->input_entry_readers_).\n                    super__Vector_base" (parenthesized_expression "(this->input_entry_readers_)" ( (field_expression "this->input_entry_readers_" identifier -> field_identifier) )) . field_identifier)) < identifier) (ERROR "::Sized_incremental_binary" : : identifier) < number_literal) , (binary_expression "_true>::Sized_input_reader" identifier > (ERROR "::" : :) identifier) , (ERROR "_std::allocator<gold::" identifier : : (binary_expression "allocator<gold" identifier < identifier) : :) (binary_expression "Sized_incremental_binary<32" identifier < number_literal) , (binary_expression "_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1 >> 5" (binary_expression "_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish - (long)pSVar1" (field_expression "_true>::Sized_input_reader>_>\n                    ._M_impl._M_finish" (field_expression "_true>::Sized_input_reader>_>\n                    ._M_impl" (binary_expression "_true>::Sized_input_reader>_" (binary_expression "_true>::Sized_input_reader" identifier > (ERROR "::" : :) identifier) > identifier) (ERROR ">" >) . field_identifier) . field_identifier) - (cast_expression "(long)pSVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (compound_statement "{\n    return &pSVar1[n].super_Input_reader;\n  }" { (return_statement "return &pSVar1[n].super_Input_reader;" return (pointer_expression "&pSVar1[n].super_Input_reader" & (field_expression "pSVar1[n].super_Input_reader" (subscript_expression "pSVar1[n]" identifier [ identifier ]) . field_identifier)) ;) })) comment (expression_statement "do_gold_unreachable("../../gold/incremental.h",0x6dd,"do_get_input_reader");" (call_expression "do_gold_unreachable("../../gold/incremental.h",0x6dd,"do_get_input_reader")" identifier (argument_list "("../../gold/incremental.h",0x6dd,"do_get_input_reader")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""do_get_input_reader"" " string_content ") ))) ;) }))
(translation_unit "long FUN_00186a50(long param_1,uint param_2)\n\n{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    \n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}\n\n" (function_definition "long FUN_00186a50(long param_1,uint param_2)\n\n{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    \n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}" (sized_type_specifier "long" long) (function_declarator "FUN_00186a50(long param_1,uint param_2)" identifier (parameter_list "(long param_1,uint param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    \n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}" { (if_statement "if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }" if (parenthesized_expression "((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5))" ( (binary_expression "(ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) < (call_expression "(ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" ( (binary_expression "*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5" (binary_expression "*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160)" (pointer_expression "*(long *)(param_1 + 0x168)" * (cast_expression "(long *)(param_1 + 0x168)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x168)" ( (binary_expression "param_1 + 0x168" identifier + number_literal) )))) - (pointer_expression "*(long *)(param_1 + 0x160)" * (cast_expression "(long *)(param_1 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x160)" ( (binary_expression "param_1 + 0x160" identifier + number_literal) ))))) >> number_literal) )))) )) (compound_statement "{\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }" { (return_statement "return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;" return (binary_expression "*(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20" (pointer_expression "*(long *)(param_1 + 0x160)" * (cast_expression "(long *)(param_1 + 0x160)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x160)" ( (binary_expression "param_1 + 0x160" identifier + number_literal) )))) + (binary_expression "(ulong)param_2 * 0x20" (cast_expression "(ulong)param_2" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) ;) })) (expression_statement "FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");" (call_expression "FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader")" identifier (argument_list "("../../gold/incremental.h",0x6dd,"do_get_input_reader")" ( (string_literal ""../../gold/incremental.h"" " string_content ") , number_literal , (string_literal ""do_get_input_reader"" " string_content ") ))) ;) })))
(translation_unit (function_definition (sized_type_specifier long) (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) >> LIT) )))) )) (compound_statement { (return_statement return (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })))
(function_definition "long FUN_00186a50(long param_1,uint param_2)\n\n{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    \n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}" (sized_type_specifier "long" (long "long")) (function_declarator "FUN_00186a50(long param_1,uint param_2)" (identifier "FUN_00186a50") (parameter_list "(long param_1,uint param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }\n                    \n  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");\n}" ({ "{") (if_statement "if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }" (if "if") (parenthesized_expression "((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5))" (( "(") (binary_expression "(ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")) (< "<") (call_expression "(ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)" (( "(") (binary_expression "*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5" (binary_expression "*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160)" (pointer_expression "*(long *)(param_1 + 0x168)" (* "*") (cast_expression "(long *)(param_1 + 0x168)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x168)" (( "(") (binary_expression "param_1 + 0x168" (identifier "param_1") (+ "+") (number_literal "0x168")) () ")")))) (- "-") (pointer_expression "*(long *)(param_1 + 0x160)" (* "*") (cast_expression "(long *)(param_1 + 0x160)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x160)" (( "(") (binary_expression "param_1 + 0x160" (identifier "param_1") (+ "+") (number_literal "0x160")) () ")"))))) (>> ">>") (number_literal "5")) () ")")))) () ")")) (compound_statement "{\n    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;\n  }" ({ "{") (return_statement "return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;" (return "return") (binary_expression "*(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20" (pointer_expression "*(long *)(param_1 + 0x160)" (* "*") (cast_expression "(long *)(param_1 + 0x160)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x160)" (( "(") (binary_expression "param_1 + 0x160" (identifier "param_1") (+ "+") (number_literal "0x160")) () ")")))) (+ "+") (binary_expression "(ulong)param_2 * 0x20" (cast_expression "(ulong)param_2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "param_2")) (* "*") (number_literal "0x20"))) (; ";")) (} "}"))) (expression_statement "FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");" (call_expression "FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader")" (identifier "FUN_0017c650") (argument_list "("../../gold/incremental.h",0x6dd,"do_get_input_reader")" (( "(") (string_literal ""../../gold/incremental.h"" (" """) (string_content "../../gold/incremental.h") (" """)) (, ",") (number_literal "0x6dd") (, ",") (string_literal ""do_get_input_reader"" (" """) (string_content "do_get_input_reader") (" """)) () ")"))) (; ";")) (} "}")))

/* DWARF original prototype: Input_reader * do_get_input_reader(Sized_incremental_binary<32,_true> *
   this, uint n) */

Input_reader * __thiscall
var_5::var_1<32,var_2>::do_get_input_reader
          (var_1<32,var_2> *this,uint n)

{
  type_1 pSVar1;
  
  pSVar1 = (this->input_entry_readers_).
           super__Vector_base<var_5::var_1<32,var_2>::var_3,_std::allocator<var_5::var_1<32,var_2>::var_3>var_4>
           ._M_impl._M_start;
  if ((type_2)n <
      (type_2)((long)(this->input_entry_readers_).
                    super__Vector_base<var_5::var_1<32,var_2>::var_3,_std::allocator<var_5::var_1<32,var_2>::var_3>var_4>
                    ._M_impl._M_finish - (long)pSVar1 >> 5)) {
    return &pSVar1[n].super_Input_reader;
  }
                    /* WARNING: Subroutine does not return */
  var_6("../../gold/incremental.h",0x6dd,"do_get_input_reader");
}


(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: (identifier)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal)))))) consequence: (compound_statement (return_statement (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))))

long MASKED(long param_1,uint param_2)

{
  if ((ulong)param_2 < (ulong)(*(long *)(param_1 + 0x168) - *(long *)(param_1 + 0x160) >> 5)) {
    return *(long *)(param_1 + 0x160) + (ulong)param_2 * 0x20;
  }
                    /* WARNING: Subroutine does not return */
  FUN_0017c650("../../gold/incremental.h",0x6dd,"do_get_input_reader");
}

