
/* WARNING: Enum "DT": Some values do not have unique names */

uint gold::Dynobj::compute_bucket_count
               (vector<unsigned_int,_std::allocator<unsigned_int>_> *hashcodes,
               bool for_gnu_hash_table)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  
  if (parameters->options_ == (General_options *)0x0) {
                    /* WARNING: Subroutine does not return */
    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");
  }
  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)
                    ::buckets + 4);
  uVar1 = 1;
  uVar4 = 1;
  while (uVar2 = uVar1,
        (double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)
        <= (double)((long)(hashcodes->
                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
                          _M_finish -
                    (long)(hashcodes->
                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.
                          _M_start >> 2 & 0xffffffff)) {
    if (puVar3 == (uint *)&DAT_0038be8c) {
      return uVar2;
    }
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar4 = uVar2;
  }
  if ((uVar4 < 2) && (for_gnu_hash_table)) {
    return 2;
  }
  return uVar4;
}



uint FUN_0029a200(long *param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  
  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x5c,"options");
  }
  puVar3 = &DAT_0038be44;
  uVar1 = 1;
  uVar4 = 1;
  while (uVar2 = uVar1,
        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=
        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {
    if (puVar3 == (uint *)&DAT_0038be8c) {
      return uVar2;
    }
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar4 = uVar2;
  }
  if ((uVar4 < 2) && (param_2 != '\0')) {
    return 2;
  }
  return uVar4;
}


MOV RDX,qword ptr [0x0043e6b0]
MOV RAX,qword ptr [RDI + 0x8]
SUB RAX,qword ptr [RDI]
MOV RDX,qword ptr [RDX + 0x10]
SAR RAX,0x2
TEST RDX,RDX
JZ 0x0029a28b
MOV EAX,EAX
PXOR XMM1,XMM1
LEA RCX,[0x38be44]
MOVSD XMM2,qword ptr [0x00377cc8]
CVTSI2SD XMM1,RAX
SUBSD XMM2,qword ptr [RDX + 0x2ba0]
MOV EAX,0x1
MOV EDI,0x1
LEA R8,[RCX + 0x48]
JMP 0x0029a25f
CMP RCX,R8
JZ 0x0029a283
MOV EDX,dword ptr [RCX]
MOV EDI,EAX
ADD RCX,0x4
MOV EAX,EDX
MOV EDX,EAX
PXOR XMM0,XMM0
CVTSI2SD XMM0,RDX
MULSD XMM0,XMM2
COMISD XMM0,XMM1
JBE 0x0029a250
CMP EDI,0x1
JA 0x0029a288
MOV EAX,0x2
TEST SIL,SIL
JZ 0x0029a288
RET
MOV EAX,EDI
RET
PUSH RAX
LEA RDX,[0x38bd38]
MOV ESI,0x5c
LEA RDI,[0x3726d0]
CALL 0x0017c650
(translation_unit "uint FUN_0029a200(long *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}\n\n" (function_definition "uint FUN_0029a200(long *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_0029a200(long *param_1,char param_2)" identifier (parameter_list "(long *param_1,char param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "puVar3 = &DAT_0038be44;" (assignment_expression "puVar3 = &DAT_0038be44" identifier = (pointer_expression "&DAT_0038be44" & identifier)) ;) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (while_statement "while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" while (parenthesized_expression "(uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff))" ( (comma_expression "uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" (assignment_expression "uVar2 = uVar1" identifier = identifier) , (binary_expression "(double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" (binary_expression "(double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0))" (cast_expression "(double)uVar2" ( (type_descriptor "double" primitive_type) ) identifier) * (parenthesized_expression "(DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0))" ( (binary_expression "DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" identifier - (pointer_expression "*(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" * (cast_expression "(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ))) <= (cast_expression "(double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(param_1[1] - *param_1 >> 2 & 0xffffffff)" ( (binary_expression "param_1[1] - *param_1 >> 2 & 0xffffffff" (binary_expression "param_1[1] - *param_1 >> 2" (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier)) >> number_literal) & number_literal) ))))) )) (compound_statement "{\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" { (if_statement "if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }" if (parenthesized_expression "(puVar3 == (uint *)&DAT_0038be8c)" ( (binary_expression "puVar3 == (uint *)&DAT_0038be8c" identifier == (cast_expression "(uint *)&DAT_0038be8c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0038be8c" & identifier))) )) (compound_statement "{\n      return uVar2;\n    }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) })) (if_statement "if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }" if (parenthesized_expression "((uVar4 < 2) && (param_2 != '\0'))" ( (binary_expression "(uVar4 < 2) && (param_2 != '\0')" (parenthesized_expression "(uVar4 < 2)" ( (binary_expression "uVar4 < 2" identifier < number_literal) )) && (parenthesized_expression "(param_2 != '\0')" ( (binary_expression "param_2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    return 2;\n  }" { (return_statement "return 2;" return number_literal ;) })) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "/* WARNING: Enum "DT": Some values do not have unique names */\n\nuint gold::Dynobj::compute_bucket_count\n               (vector<unsigned_int,_std::allocator<unsigned_int>_> *hashcodes,\n               bool for_gnu_hash_table)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4);\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)\n        <= (double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (for_gnu_hash_table)) {\n    return 2;\n  }\n  return uVar4;\n}\n\n" comment (function_definition "uint gold::Dynobj::compute_bucket_count\n               (vector<unsigned_int,_std::allocator<unsigned_int>_> *hashcodes,\n               bool for_gnu_hash_table)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4);\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)\n        <= (double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (for_gnu_hash_table)) {\n    return 2;\n  }\n  return uVar4;\n}" type_identifier (ERROR "gold::Dynobj::" identifier : : identifier : :) (function_declarator "compute_bucket_count\n               (vector<unsigned_int,_std::allocator<unsigned_int>_> *hashcodes,\n               bool for_gnu_hash_table)" identifier (parameter_list "(vector<unsigned_int,_std::allocator<unsigned_int>_> *hashcodes,\n               bool for_gnu_hash_table)" ( (parameter_declaration "vector<unsigned_int" type_identifier (ERROR "<" <) identifier) , (parameter_declaration "_std::allocator<unsigned_int>_> *hashcodes" type_identifier (ERROR "::allocator<unsigned_int>_>" : : identifier < identifier > identifier >) (pointer_declarator "*hashcodes" * identifier)) , (parameter_declaration "bool for_gnu_hash_table" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4);\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)\n        <= (double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (for_gnu_hash_table)) {\n    return 2;\n  }\n  return uVar4;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (if_statement "if (parameters->options_ == (General_options *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(parameters->options_ == (General_options *)0x0)" ( (binary_expression "parameters->options_ == (General_options *)0x0" (field_expression "parameters->options_" identifier -> field_identifier) == (cast_expression "(General_options *)0x0" ( (type_descriptor "General_options *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    do_gold_unreachable("../../gold/parameters.h",0x5c,"options");\n  }" { comment (expression_statement "do_gold_unreachable("../../gold/parameters.h",0x5c,"options");" (call_expression "do_gold_unreachable("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4);" (assignment_expression "puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4" identifier = (binary_expression "(uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4" (cast_expression "(uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets" ( (ERROR "compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&," (comma_expression "compute_bucket_count(std::vector<unsigned_int,std" (binary_expression "compute_bucket_count(std::vector<unsigned_int" identifier (ERROR "(std::vector" ( (ERROR "std::" (type_descriptor "std" type_identifier) : :) identifier) < identifier) , identifier) : : (binary_expression "allocator<unsigned_int>>const" identifier < (binary_expression "unsigned_int>>const" identifier >> identifier)) & ,) (type_descriptor "bool" primitive_type) ) (ERROR "::" : :) identifier)) + number_literal)) (ERROR ")" )) ;) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (while_statement "while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)\n        <= (double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" while (parenthesized_expression "(uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)\n        <= (double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff))" ( (comma_expression "uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)\n        <= (double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)" (assignment_expression "uVar2 = uVar1" identifier = identifier) , (binary_expression "(double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)\n        <= (double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)" (binary_expression "(double)uVar2 * (DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)" (cast_expression "(double)uVar2" ( (type_descriptor "double" primitive_type) ) identifier) * (parenthesized_expression "(DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value)" ( (binary_expression "DAT_00377cc8 - (parameters->options_->hash_bucket_empty_fraction_).value" identifier - (field_expression "(parameters->options_->hash_bucket_empty_fraction_).value" (parenthesized_expression "(parameters->options_->hash_bucket_empty_fraction_)" ( (field_expression "parameters->options_->hash_bucket_empty_fraction_" (field_expression "parameters->options_" identifier -> field_identifier) -> field_identifier) )) . field_identifier)) ))) <= (cast_expression "(double)((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff)" ( (binary_expression "(long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2 & 0xffffffff" (binary_expression "(long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start >> 2" (binary_expression "(long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish -\n                    (long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start" (cast_expression "(long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_finish" (field_expression "(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "hashcodes->\n                          super__Vector_base<unsigned_int,_std::" (comma_expression "hashcodes->\n                          super__Vector_base<unsigned_int,_std" (binary_expression "hashcodes->\n                          super__Vector_base<unsigned_int" (field_expression "hashcodes->\n                          super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier)) - (cast_expression "(long)(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl.\n                          _M_start" (field_expression "(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl" (parenthesized_expression "(hashcodes->\n                          super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)" ( (ERROR "hashcodes->\n                          super__Vector_base<unsigned_int,_std::" (comma_expression "hashcodes->\n                          super__Vector_base<unsigned_int,_std" (binary_expression "hashcodes->\n                          super__Vector_base<unsigned_int" (field_expression "hashcodes->\n                          super__Vector_base" identifier -> field_identifier) < identifier) , identifier) : :) (binary_expression "allocator<unsigned_int>_>" (binary_expression "allocator<unsigned_int>_" (binary_expression "allocator<unsigned_int" identifier < identifier) > identifier) > identifier) )) . field_identifier) . field_identifier))) >> number_literal) & number_literal) ))))) )) (compound_statement "{\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" { (if_statement "if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }" if (parenthesized_expression "(puVar3 == (uint *)&DAT_0038be8c)" ( (binary_expression "puVar3 == (uint *)&DAT_0038be8c" identifier == (cast_expression "(uint *)&DAT_0038be8c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0038be8c" & identifier))) )) (compound_statement "{\n      return uVar2;\n    }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) })) (if_statement "if ((uVar4 < 2) && (for_gnu_hash_table)) {\n    return 2;\n  }" if (parenthesized_expression "((uVar4 < 2) && (for_gnu_hash_table))" ( (binary_expression "(uVar4 < 2) && (for_gnu_hash_table)" (parenthesized_expression "(uVar4 < 2)" ( (binary_expression "uVar4 < 2" identifier < number_literal) )) && (parenthesized_expression "(for_gnu_hash_table)" ( identifier ))) )) (compound_statement "{\n    return 2;\n  }" { (return_statement "return 2;" return number_literal ;) })) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit "uint FUN_0029a200(long *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}\n\n" (function_definition "uint FUN_0029a200(long *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}" type_identifier (function_declarator "FUN_0029a200(long *param_1,char param_2)" identifier (parameter_list "(long *param_1,char param_2)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" if (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" { (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" identifier (argument_list "("../../gold/parameters.h",0x5c,"options")" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") ))) ;) })) (expression_statement "puVar3 = &DAT_0038be44;" (assignment_expression "puVar3 = &DAT_0038be44" identifier = (pointer_expression "&DAT_0038be44" & identifier)) ;) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (while_statement "while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" while (parenthesized_expression "(uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff))" ( (comma_expression "uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" (assignment_expression "uVar2 = uVar1" identifier = identifier) , (binary_expression "(double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" (binary_expression "(double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0))" (cast_expression "(double)uVar2" ( (type_descriptor "double" primitive_type) ) identifier) * (parenthesized_expression "(DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0))" ( (binary_expression "DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" identifier - (pointer_expression "*(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" * (cast_expression "(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" ( (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" * (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" ( (binary_expression "PTR_DAT_0043e6b0 + 0x10" identifier + number_literal) )))) + number_literal) ))))) ))) <= (cast_expression "(double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "(param_1[1] - *param_1 >> 2 & 0xffffffff)" ( (binary_expression "param_1[1] - *param_1 >> 2 & 0xffffffff" (binary_expression "param_1[1] - *param_1 >> 2" (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" identifier [ number_literal ]) - (pointer_expression "*param_1" * identifier)) >> number_literal) & number_literal) ))))) )) (compound_statement "{\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" { (if_statement "if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }" if (parenthesized_expression "(puVar3 == (uint *)&DAT_0038be8c)" ( (binary_expression "puVar3 == (uint *)&DAT_0038be8c" identifier == (cast_expression "(uint *)&DAT_0038be8c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0038be8c" & identifier))) )) (compound_statement "{\n      return uVar2;\n    }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" identifier = (pointer_expression "*puVar3" * identifier)) ;) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" identifier = identifier) ;) })) (if_statement "if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }" if (parenthesized_expression "((uVar4 < 2) && (param_2 != '\0'))" ( (binary_expression "(uVar4 < 2) && (param_2 != '\0')" (parenthesized_expression "(uVar4 < 2)" ( (binary_expression "uVar4 < 2" identifier < number_literal) )) && (parenthesized_expression "(param_2 != '\0')" ( (binary_expression "param_2 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n    return 2;\n  }" { (return_statement "return 2;" return number_literal ;) })) (return_statement "return uVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ))) <= (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) >> LIT) & LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (return_statement return LIT ;) })) (return_statement return IDENT ;) })))
(function_definition "uint FUN_0029a200(long *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}" (type_identifier "uint") (function_declarator "FUN_0029a200(long *param_1,char param_2)" (identifier "FUN_0029a200") (parameter_list "(long *param_1,char param_2)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "char param_2" (primitive_type "char") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint *puVar3;\n  uint uVar4;\n  \n  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }\n  puVar3 = &DAT_0038be44;\n  uVar1 = 1;\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }\n  if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar4;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint *puVar3;" (type_identifier "uint") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (if_statement "if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" (if "if") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_0017c650("../../gold/parameters.h",0x5c,"options");\n  }" ({ "{") (expression_statement "FUN_0017c650("../../gold/parameters.h",0x5c,"options");" (call_expression "FUN_0017c650("../../gold/parameters.h",0x5c,"options")" (identifier "FUN_0017c650") (argument_list "("../../gold/parameters.h",0x5c,"options")" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) () ")"))) (; ";")) (} "}"))) (expression_statement "puVar3 = &DAT_0038be44;" (assignment_expression "puVar3 = &DAT_0038be44" (identifier "puVar3") (= "=") (pointer_expression "&DAT_0038be44" (& "&") (identifier "DAT_0038be44"))) (; ";")) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" (identifier "uVar1") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (while_statement "while (uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" (while "while") (parenthesized_expression "(uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff))" (( "(") (comma_expression "uVar2 = uVar1,\n        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" (assignment_expression "uVar2 = uVar1" (identifier "uVar2") (= "=") (identifier "uVar1")) (, ",") (binary_expression "(double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=\n        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" (binary_expression "(double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0))" (cast_expression "(double)uVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar2")) (* "*") (parenthesized_expression "(DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0))" (( "(") (binary_expression "DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" (identifier "DAT_00377cc8") (- "-") (pointer_expression "*(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" (* "*") (cast_expression "(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)" (( "(") (binary_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0" (pointer_expression "*(long *)(PTR_DAT_0043e6b0 + 0x10)" (* "*") (cast_expression "(long *)(PTR_DAT_0043e6b0 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0043e6b0 + 0x10)" (( "(") (binary_expression "PTR_DAT_0043e6b0 + 0x10" (identifier "PTR_DAT_0043e6b0") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "0x2ba0")) () ")"))))) () ")"))) (<= "<=") (cast_expression "(double)(param_1[1] - *param_1 >> 2 & 0xffffffff)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "(param_1[1] - *param_1 >> 2 & 0xffffffff)" (( "(") (binary_expression "param_1[1] - *param_1 >> 2 & 0xffffffff" (binary_expression "param_1[1] - *param_1 >> 2" (binary_expression "param_1[1] - *param_1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (>> ">>") (number_literal "2")) (& "&") (number_literal "0xffffffff")) () ")"))))) () ")")) (compound_statement "{\n    if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" ({ "{") (if_statement "if (puVar3 == (uint *)&DAT_0038be8c) {\n      return uVar2;\n    }" (if "if") (parenthesized_expression "(puVar3 == (uint *)&DAT_0038be8c)" (( "(") (binary_expression "puVar3 == (uint *)&DAT_0038be8c" (identifier "puVar3") (== "==") (cast_expression "(uint *)&DAT_0038be8c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_0038be8c" (& "&") (identifier "DAT_0038be8c")))) () ")")) (compound_statement "{\n      return uVar2;\n    }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "uVar1 = *puVar3;" (assignment_expression "uVar1 = *puVar3" (identifier "uVar1") (= "=") (pointer_expression "*puVar3" (* "*") (identifier "puVar3"))) (; ";")) (expression_statement "puVar3 = puVar3 + 1;" (assignment_expression "puVar3 = puVar3 + 1" (identifier "puVar3") (= "=") (binary_expression "puVar3 + 1" (identifier "puVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = uVar2;" (assignment_expression "uVar4 = uVar2" (identifier "uVar4") (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (if_statement "if ((uVar4 < 2) && (param_2 != '\0')) {\n    return 2;\n  }" (if "if") (parenthesized_expression "((uVar4 < 2) && (param_2 != '\0'))" (( "(") (binary_expression "(uVar4 < 2) && (param_2 != '\0')" (parenthesized_expression "(uVar4 < 2)" (( "(") (binary_expression "uVar4 < 2" (identifier "uVar4") (< "<") (number_literal "2")) () ")")) (&& "&&") (parenthesized_expression "(param_2 != '\0')" (( "(") (binary_expression "param_2 != '\0'" (identifier "param_2") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    return 2;\n  }" ({ "{") (return_statement "return 2;" (return "return") (number_literal "2") (; ";")) (} "}"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))

/* WARNING: Enum "DT": Some values do not have unique names */

type_1 gold::Dynobj::function_1
               (type_2<var_4,type_3::var_3<var_4>var_5> *hashcodes,
               bool for_gnu_hash_table)

{
  type_1 uVar1;
  type_1 uVar2;
  type_1 *var_7;
  type_1 var_8;
  
  if (parameters->options_ == (type_4 *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_1("../../gold/parameters.h",0x5c,"options");
  }
  var_7 = (type_1 *)(function_1(std::type_2<var_4,std::var_3<var_4>>const&,bool)
                    ::buckets + 4);
  uVar1 = 1;
  var_8 = 1;
  while (uVar2 = uVar1,
        (double)uVar2 * (var_2 - (parameters->options_->hash_bucket_empty_fraction_).value)
        <= (double)((long)(hashcodes->
                          super__Vector_base<var_4,type_3::var_3<var_4>var_5>var_6)._M_impl.
                          _M_finish -
                    (long)(hashcodes->
                          super__Vector_base<var_4,type_3::var_3<var_4>var_5>var_6)._M_impl.
                          _M_start >> 2 & 0xffffffff)) {
    if (var_7 == (type_1 *)&DAT_0038be8c) {
      return uVar2;
    }
    uVar1 = *var_7;
    var_7 = var_7 + 1;
    var_8 = uVar2;
  }
  if ((var_8 < 2) && (for_gnu_hash_table)) {
    return 2;
  }
  return var_8;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal) (string_literal (string_content))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier))) right: (number_literal)) right: (number_literal))))))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (return_statement (number_literal)))) (return_statement (identifier)))))

uint MASKED(long *param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  uint *puVar3;
  uint uVar4;
  
  if (*(long *)(PTR_DAT_0043e6b0 + 0x10) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_0017c650("../../gold/parameters.h",0x5c,"options");
  }
  puVar3 = &DAT_0038be44;
  uVar1 = 1;
  uVar4 = 1;
  while (uVar2 = uVar1,
        (double)uVar2 * (DAT_00377cc8 - *(double *)(*(long *)(PTR_DAT_0043e6b0 + 0x10) + 0x2ba0)) <=
        (double)(param_1[1] - *param_1 >> 2 & 0xffffffff)) {
    if (puVar3 == (uint *)&DAT_0038be8c) {
      return uVar2;
    }
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar4 = uVar2;
  }
  if ((uVar4 < 2) && (param_2 != '\0')) {
    return 2;
  }
  return uVar4;
}

