
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* 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");
  }
  uVar1 = 1;
  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)
                    ::buckets + 4);
  uVar4 = 1;
  while (uVar2 = uVar1,
        (double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=
        (double)(uint)((int)(hashcodes->
                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl
                            ._M_finish -
                       (int)(hashcodes->
                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl
                            ._M_start >> 2)) {
    if (puVar3 == (uint *)"N4gold12Version_baseE") {
      return uVar2;
    }
    uVar1 = *puVar3;
    puVar3 = puVar3 + 1;
    uVar4 = uVar2;
  }
  if ((uVar4 < 2) && (for_gnu_hash_table)) {
    return 2;
  }
  return uVar4;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

uint FUN_001a24a0(int *param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  
  uVar2 = param_1[1] - *param_1 >> 2;
  if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);
  }
  uVar1 = 1;
  puVar4 = &DAT_0029ea64;
  uVar5 = 1;
  while (uVar3 = uVar1,
        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {
    if (puVar4 == (uint *)"N4gold12Version_baseE") {
      return uVar3;
    }
    uVar1 = *puVar4;
    puVar4 = puVar4 + 1;
    uVar5 = uVar3;
  }
  if ((uVar5 < 2) && (param_2 != '\0')) {
    return 2;
  }
  return uVar5;
}


PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x1ecb58
SUB ESP,0x10
MOV EDX,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [EDX + 0x4]
SUB EAX,dword ptr [EDX]
LEA EDX,[EBX + 0x378]
SAR EAX,0x2
MOV EDX,dword ptr [EDX]
MOV EDX,dword ptr [EDX + 0x8]
TEST EDX,EDX
JZ 0x001a2559
FLD1
FSUB qword ptr [EDX + 0x1ae8]
MOV dword ptr [ESP],EAX
LEA EDX,[EBX + 0xfff0fa64]
MOV dword ptr [ESP + 0x4],0x0
LEA ESI,[EBX + 0xfff0faac]
FILD qword ptr [ESP]
MOV EAX,0x1
MOV EBX,0x1
JMP 0x001a2515
CMP EDX,ESI
JZ 0x001a2540
MOV ECX,dword ptr [EDX]
MOV EBX,EAX
ADD EDX,0x4
MOV EAX,ECX
MOV dword ptr [ESP],EAX
MOV dword ptr [ESP + 0x4],0x0
FILD qword ptr [ESP]
FMUL ST2
FCOMIP ST0,ST1
JBE 0x001a2508
FSTP ST0
FSTP ST0
CMP EBX,0x1
JA 0x001a2550
MOV ECX,EDI
MOV EAX,0x2
TEST CL,CL
JZ 0x001a2550
JMP 0x001a2544
FSTP ST0
FSTP ST0
ADD ESP,0x10
POP EBX
POP ESI
POP EDI
RET
ADD ESP,0x10
MOV EAX,EBX
POP EBX
POP ESI
POP EDI
RET
PUSH EAX
LEA EAX,[EBX + 0xfff0f978]
PUSH EAX
LEA EAX,[EBX + 0xffef8210]
PUSH 0x5c
PUSH EAX
CALL 0x00069d00
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nuint FUN_001a24a0(int *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}\n\n" comment (function_definition "uint FUN_001a24a0(int *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}" type_identifier (function_declarator "FUN_001a24a0(int *param_1,char param_2)" identifier (parameter_list "(int *param_1,char param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "uVar2 = param_1[1] - *param_1 >> 2;" (assignment_expression "uVar2 = param_1[1] - *param_1 >> 2" identifier = (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)) ;) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }" { comment (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",uVar2)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (expression_statement "puVar4 = &DAT_0029ea64;" (assignment_expression "puVar4 = &DAT_0029ea64" identifier = (pointer_expression "&DAT_0029ea64" & identifier)) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (while_statement "while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }" while (parenthesized_expression "(uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2)" ( (comma_expression "uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2" (assignment_expression "uVar3 = uVar1" identifier = identifier) , (binary_expression "(double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2" (binary_expression "(double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8))" (cast_expression "(double)uVar3" ( (type_descriptor "double" primitive_type) ) identifier) * (parenthesized_expression "(1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8))" ( (binary_expression "1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" number_literal - (pointer_expression "*(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" * (cast_expression "(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x1ae8" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) ))))) ))) <= (cast_expression "(double)uVar2" ( (type_descriptor "double" primitive_type) ) identifier))) )) (compound_statement "{\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }" { (if_statement "if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }" if (parenthesized_expression "(puVar4 == (uint *)"N4gold12Version_baseE")" ( (binary_expression "puVar4 == (uint *)"N4gold12Version_baseE"" identifier == (cast_expression "(uint *)"N4gold12Version_baseE"" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""N4gold12Version_baseE"" " string_content "))) )) (compound_statement "{\n      return uVar3;\n    }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" identifier = identifier) ;) })) (if_statement "if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }" if (parenthesized_expression "((uVar5 < 2) && (param_2 != '\0'))" ( (binary_expression "(uVar5 < 2) && (param_2 != '\0')" (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 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 uVar5;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n/* 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  uVar1 = 1;\n  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4);\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=\n        (double)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)) {\n    if (puVar3 == (uint *)"N4gold12Version_baseE") {\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 comment 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  uVar1 = 1;\n  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4);\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=\n        (double)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)) {\n    if (puVar3 == (uint *)"N4gold12Version_baseE") {\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  uVar1 = 1;\n  puVar3 = (uint *)(compute_bucket_count(std::vector<unsigned_int,std::allocator<unsigned_int>>const&,bool)\n                    ::buckets + 4);\n  uVar4 = 1;\n  while (uVar2 = uVar1,\n        (double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=\n        (double)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)) {\n    if (puVar3 == (uint *)"N4gold12Version_baseE") {\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 "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (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 "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (while_statement "while (uVar2 = uVar1,\n        (double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=\n        (double)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)) {\n    if (puVar3 == (uint *)"N4gold12Version_baseE") {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" while (parenthesized_expression "(uVar2 = uVar1,\n        (double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=\n        (double)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2))" ( (comma_expression "uVar2 = uVar1,\n        (double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=\n        (double)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)" (assignment_expression "uVar2 = uVar1" identifier = identifier) , (binary_expression "(double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value) <=\n        (double)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)" (binary_expression "(double)uVar2 * (1.0 - (parameters->options_->hash_bucket_empty_fraction_).value)" (cast_expression "(double)uVar2" ( (type_descriptor "double" primitive_type) ) identifier) * (parenthesized_expression "(1.0 - (parameters->options_->hash_bucket_empty_fraction_).value)" ( (binary_expression "1.0 - (parameters->options_->hash_bucket_empty_fraction_).value" number_literal - (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)(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)" ( (type_descriptor "double" primitive_type) ) (call_expression "(uint)((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2)" ( (binary_expression "(int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start >> 2" (binary_expression "(int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish -\n                       (int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start" (cast_expression "(int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_finish" ( (type_descriptor "int" primitive_type) ) (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 "(int)(hashcodes->\n                            super__Vector_base<unsigned_int,_std::allocator<unsigned_int>_>)._M_impl\n                            ._M_start" ( (type_descriptor "int" primitive_type) ) (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) )))))) )) (compound_statement "{\n    if (puVar3 == (uint *)"N4gold12Version_baseE") {\n      return uVar2;\n    }\n    uVar1 = *puVar3;\n    puVar3 = puVar3 + 1;\n    uVar4 = uVar2;\n  }" { (if_statement "if (puVar3 == (uint *)"N4gold12Version_baseE") {\n      return uVar2;\n    }" if (parenthesized_expression "(puVar3 == (uint *)"N4gold12Version_baseE")" ( (binary_expression "puVar3 == (uint *)"N4gold12Version_baseE"" identifier == (cast_expression "(uint *)"N4gold12Version_baseE"" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""N4gold12Version_baseE"" " string_content "))) )) (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_001a24a0(int *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}\n\n" (function_definition "uint FUN_001a24a0(int *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}" type_identifier (function_declarator "FUN_001a24a0(int *param_1,char param_2)" identifier (parameter_list "(int *param_1,char param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "char param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (expression_statement "uVar2 = param_1[1] - *param_1 >> 2;" (assignment_expression "uVar2 = param_1[1] - *param_1 >> 2" identifier = (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)) ;) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }" if (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }" { (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2)" identifier (argument_list "("../../gold/parameters.h",0x5c,"options",uVar2)" ( (string_literal ""../../gold/parameters.h"" " string_content ") , number_literal , (string_literal ""options"" " string_content ") , identifier ))) ;) })) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" identifier = number_literal) ;) (expression_statement "puVar4 = &DAT_0029ea64;" (assignment_expression "puVar4 = &DAT_0029ea64" identifier = (pointer_expression "&DAT_0029ea64" & identifier)) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (while_statement "while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }" while (parenthesized_expression "(uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2)" ( (comma_expression "uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2" (assignment_expression "uVar3 = uVar1" identifier = identifier) , (binary_expression "(double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2" (binary_expression "(double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8))" (cast_expression "(double)uVar3" ( (type_descriptor "double" primitive_type) ) identifier) * (parenthesized_expression "(1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8))" ( (binary_expression "1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" number_literal - (pointer_expression "*(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" * (cast_expression "(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" ( (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x1ae8" (pointer_expression "*(int *)(DAT_0038f378 + 8)" * (cast_expression "(int *)(DAT_0038f378 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_0038f378 + 8)" ( (binary_expression "DAT_0038f378 + 8" identifier + number_literal) )))) + number_literal) ))))) ))) <= (cast_expression "(double)uVar2" ( (type_descriptor "double" primitive_type) ) identifier))) )) (compound_statement "{\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }" { (if_statement "if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }" if (parenthesized_expression "(puVar4 == (uint *)"N4gold12Version_baseE")" ( (binary_expression "puVar4 == (uint *)"N4gold12Version_baseE"" identifier == (cast_expression "(uint *)"N4gold12Version_baseE"" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""N4gold12Version_baseE"" " string_content "))) )) (compound_statement "{\n      return uVar3;\n    }" { (return_statement "return uVar3;" return identifier ;) })) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" identifier = identifier) ;) })) (if_statement "if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }" if (parenthesized_expression "((uVar5 < 2) && (param_2 != '\0'))" ( (binary_expression "(uVar5 < 2) && (param_2 != '\0')" (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 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 uVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT)) >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 ") , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (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 LIT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) )) (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_001a24a0(int *param_1,char param_2)\n\n{\n  uint uVar1;\n  uint uVar2;\n  uint uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}" (type_identifier "uint") (function_declarator "FUN_001a24a0(int *param_1,char param_2)" (identifier "FUN_001a24a0") (parameter_list "(int *param_1,char param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (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 uVar3;\n  uint *puVar4;\n  uint uVar5;\n  \n  uVar2 = param_1[1] - *param_1 >> 2;\n  if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }\n  uVar1 = 1;\n  puVar4 = &DAT_0029ea64;\n  uVar5 = 1;\n  while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }\n  if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }\n  return uVar5;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (expression_statement "uVar2 = param_1[1] - *param_1 >> 2;" (assignment_expression "uVar2 = param_1[1] - *param_1 >> 2" (identifier "uVar2") (= "=") (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"))) (; ";")) (if_statement "if (*(int *)(DAT_0038f378 + 8) == 0) {\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }" (if "if") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) == 0)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) == 0" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);\n  }" ({ "{") (expression_statement "FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);" (call_expression "FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2)" (identifier "FUN_00069d00") (argument_list "("../../gold/parameters.h",0x5c,"options",uVar2)" (( "(") (string_literal ""../../gold/parameters.h"" (" """) (string_content "../../gold/parameters.h") (" """)) (, ",") (number_literal "0x5c") (, ",") (string_literal ""options"" (" """) (string_content "options") (" """)) (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar1 = 1;" (assignment_expression "uVar1 = 1" (identifier "uVar1") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar4 = &DAT_0029ea64;" (assignment_expression "puVar4 = &DAT_0029ea64" (identifier "puVar4") (= "=") (pointer_expression "&DAT_0029ea64" (& "&") (identifier "DAT_0029ea64"))) (; ";")) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (while_statement "while (uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }" (while "while") (parenthesized_expression "(uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2)" (( "(") (comma_expression "uVar3 = uVar1,\n        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2" (assignment_expression "uVar3 = uVar1" (identifier "uVar3") (= "=") (identifier "uVar1")) (, ",") (binary_expression "(double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2" (binary_expression "(double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8))" (cast_expression "(double)uVar3" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar3")) (* "*") (parenthesized_expression "(1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8))" (( "(") (binary_expression "1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" (number_literal "1.0") (- "-") (pointer_expression "*(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" (* "*") (cast_expression "(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(DAT_0038f378 + 8) + 0x1ae8)" (( "(") (binary_expression "*(int *)(DAT_0038f378 + 8) + 0x1ae8" (pointer_expression "*(int *)(DAT_0038f378 + 8)" (* "*") (cast_expression "(int *)(DAT_0038f378 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_0038f378 + 8)" (( "(") (binary_expression "DAT_0038f378 + 8" (identifier "DAT_0038f378") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x1ae8")) () ")"))))) () ")"))) (<= "<=") (cast_expression "(double)uVar2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "uVar2")))) () ")")) (compound_statement "{\n    if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }\n    uVar1 = *puVar4;\n    puVar4 = puVar4 + 1;\n    uVar5 = uVar3;\n  }" ({ "{") (if_statement "if (puVar4 == (uint *)"N4gold12Version_baseE") {\n      return uVar3;\n    }" (if "if") (parenthesized_expression "(puVar4 == (uint *)"N4gold12Version_baseE")" (( "(") (binary_expression "puVar4 == (uint *)"N4gold12Version_baseE"" (identifier "puVar4") (== "==") (cast_expression "(uint *)"N4gold12Version_baseE"" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""N4gold12Version_baseE"" (" """) (string_content "N4gold12Version_baseE") (" """)))) () ")")) (compound_statement "{\n      return uVar3;\n    }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}"))) (expression_statement "uVar1 = *puVar4;" (assignment_expression "uVar1 = *puVar4" (identifier "uVar1") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar5 = uVar3;" (assignment_expression "uVar5 = uVar3" (identifier "uVar5") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (if_statement "if ((uVar5 < 2) && (param_2 != '\0')) {\n    return 2;\n  }" (if "if") (parenthesized_expression "((uVar5 < 2) && (param_2 != '\0'))" (( "(") (binary_expression "(uVar5 < 2) && (param_2 != '\0')" (parenthesized_expression "(uVar5 < 2)" (( "(") (binary_expression "uVar5 < 2" (identifier "uVar5") (< "<") (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 uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */
/* WARNING: Enum "DT": Some values do not have unique names */

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

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


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) 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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (number_literal) 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: (primitive_type) 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: (identifier))))) 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: (string_literal (string_content))))) 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)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

uint MASKED(int *param_1,char param_2)

{
  uint uVar1;
  uint uVar2;
  uint uVar3;
  uint *puVar4;
  uint uVar5;
  
  uVar2 = param_1[1] - *param_1 >> 2;
  if (*(int *)(DAT_0038f378 + 8) == 0) {
                    /* WARNING: Subroutine does not return */
    FUN_00069d00("../../gold/parameters.h",0x5c,"options",uVar2);
  }
  uVar1 = 1;
  puVar4 = &DAT_0029ea64;
  uVar5 = 1;
  while (uVar3 = uVar1,
        (double)uVar3 * (1.0 - *(double *)(*(int *)(DAT_0038f378 + 8) + 0x1ae8)) <= (double)uVar2) {
    if (puVar4 == (uint *)"N4gold12Version_baseE") {
      return uVar3;
    }
    uVar1 = *puVar4;
    puVar4 = puVar4 + 1;
    uVar5 = uVar3;
  }
  if ((uVar5 < 2) && (param_2 != '\0')) {
    return 2;
  }
  return uVar5;
}

