
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned int, unsigned int, unsigned int)
   const */

uint std::__detail::_Prime_rehash_policy::_M_need_rehash(uint param_1,uint param_2,uint param_3)

{
  float fVar1;
  undefined4 uVar2;
  int in_stack_00000010;
  int in_stack_00000014;
  undefined4 local_24;
  
  if ((uint)(in_stack_00000014 + in_stack_00000010) < *(uint *)(param_2 + 4)) {
    *(undefined1 *)param_1 = 0;
    *(undefined4 *)(param_1 + 4) = 0;
    return param_1;
  }
  fVar1 = (float)(uint)(in_stack_00000014 + in_stack_00000010) / *(float *)param_2;
  if (fVar1 < (float)param_3) {
    local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2));
    *(undefined1 *)param_1 = 0;
    *(undefined4 *)(param_1 + 4) = 0;
    *(uint *)(param_2 + 4) = local_24;
    return param_1;
  }
  local_24 = (uint)(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24);
  if (local_24 < param_3 * 2) {
    local_24 = param_3 * 2;
  }
  uVar2 = _M_next_bkt((_Prime_rehash_policy *)param_2,local_24);
  *(undefined1 *)param_1 = 1;
  *(undefined4 *)(param_1 + 4) = uVar2;
  return param_1;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined1 * FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)

{
  float fVar1;
  undefined4 uVar2;
  float local_24;
  
  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {
    *param_1 = 0;
    *(undefined4 *)(param_1 + 4) = 0;
    return param_1;
  }
  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;
  if (fVar1 < (float)param_3) {
    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));
    *param_1 = 0;
    *(undefined4 *)(param_1 + 4) = 0;
    param_2[1] = local_24;
    return param_1;
  }
  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);
  if ((uint)local_24 < param_3 * 2) {
    local_24 = (float)(param_3 * 2);
  }
  uVar2 = FUN_0022c330(param_2,local_24);
  *param_1 = 1;
  *(undefined4 *)(param_1 + 4) = uVar2;
  return param_1;
}


PUSH ESI
PUSH EBX
CALL 0x00035840
ADD EBX,0x162b99
SUB ESP,0x24
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [ESP + 0x30]
ADD EAX,dword ptr [ESP + 0x3c]
CMP EAX,dword ptr [ECX + 0x4]
JC 0x0022c590
MOV dword ptr [ESP],EAX
FLD dword ptr [ECX]
XOR EDX,EDX
MOV dword ptr [ESP + 0x4],0x0
FILD qword ptr [ESP]
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0x4],EDX
FDIV ST0,ST1
MOV dword ptr [ESP],EAX
FILD qword ptr [ESP]
FXCH
FCOMI ST0,ST1
JNC 0x0022c510
FSTP ST0
FNSTCW word ptr [ESP + 0x16]
FMULP
MOVZX EAX,word ptr [ESP + 0x16]
AND AH,0xf3
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
OR AH,0x4
MOV word ptr [ESP + 0x14],AX
MOVZX EAX,word ptr [ESP + 0x16]
FLDCW word ptr [ESP + 0x14]
FRNDINT
FLDCW word ptr [ESP + 0x16]
OR AH,0xc
MOV word ptr [ESP + 0x12],AX
FLDCW word ptr [ESP + 0x12]
FISTP qword ptr [ESP + 0x8]
FLDCW word ptr [ESP + 0x16]
MOV EAX,dword ptr [ESP + 0x8]
MOV byte ptr [ESI],0x0
MOV dword ptr [ESI + 0x4],0x0
MOV dword ptr [ECX + 0x4],EAX
ADD ESP,0x24
MOV EAX,ESI
POP EBX
POP ESI
RET 0x4
FSTP ST1
FSTP ST1
FNSTCW word ptr [ESP + 0x16]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
MOVZX EAX,word ptr [ESP + 0x16]
AND AH,0xf3
OR AH,0x4
MOV word ptr [ESP + 0x14],AX
FLDCW word ptr [ESP + 0x14]
FRNDINT
FLDCW word ptr [ESP + 0x16]
SUB ESP,0x8
FADD dword ptr [EBX + 0xfff16d24]
FNSTCW word ptr [ESP + 0x1e]
MOV EDX,dword ptr [ESP + 0x40]
MOVZX EAX,word ptr [ESP + 0x1e]
ADD EDX,EDX
OR AH,0xc
MOV word ptr [ESP + 0x1a],AX
FLDCW word ptr [ESP + 0x1a]
FISTP qword ptr [ESP + 0x10]
FLDCW word ptr [ESP + 0x1e]
MOV EAX,dword ptr [ESP + 0x10]
CMP EAX,EDX
CMOVC EAX,EDX
PUSH EAX
PUSH ECX
CALL 0x0022c330
ADD ESP,0x10
MOV byte ptr [ESI],0x1
MOV dword ptr [ESI + 0x4],EAX
ADD ESP,0x24
MOV EAX,ESI
POP EBX
POP ESI
RET 0x4
MOV byte ptr [ESI],0x0
MOV EAX,ESI
MOV dword ptr [ESI + 0x4],0x0
ADD ESP,0x24
POP EBX
POP ESI
RET 0x4
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined1 * FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)\n\n{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}\n\n" comment comment (function_definition "undefined1 * FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)\n\n{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" * (function_declarator "FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" identifier (parameter_list "(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" ( (parameter_declaration "undefined1 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "float *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) )))) (compound_statement "{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "float local_24;" primitive_type identifier ;) (if_statement "if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" if (parenthesized_expression "((uint)(param_5 + param_4) < (uint)param_2[1])" ( (binary_expression "(uint)(param_5 + param_4) < (uint)param_2[1]" (call_expression "(uint)(param_5 + param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_5 + param_4)" ( (binary_expression "param_5 + param_4" identifier + identifier) ))) < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" { (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "fVar1 = (float)(uint)(param_5 + param_4) / *param_2;" (assignment_expression "fVar1 = (float)(uint)(param_5 + param_4) / *param_2" identifier = (binary_expression "(float)(uint)(param_5 + param_4) / *param_2" (cast_expression "(float)(uint)(param_5 + param_4)" ( (type_descriptor "float" primitive_type) ) (call_expression "(uint)(param_5 + param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_5 + param_4)" ( (binary_expression "param_5 + param_4" identifier + identifier) )))) / (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }" if (parenthesized_expression "(fVar1 < (float)param_3)" ( (binary_expression "fVar1 < (float)param_3" identifier < (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier)) )) (compound_statement "{\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }" { (expression_statement "local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));" (assignment_expression "local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2))" identifier = (cast_expression "(float)(longlong)ROUND(ROUND((float)param_3 * *param_2))" ( (type_descriptor "float" primitive_type) ) (cast_expression "(longlong)ROUND(ROUND((float)param_3 * *param_2))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND((float)param_3 * *param_2))" identifier (argument_list "(ROUND((float)param_3 * *param_2))" ( (call_expression "ROUND((float)param_3 * *param_2)" identifier (argument_list "((float)param_3 * *param_2)" ( (binary_expression "(float)param_3 * *param_2" (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*param_2" * identifier)) ))) )))))) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);" (assignment_expression "local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" identifier = (cast_expression "(float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" ( (type_descriptor "float" primitive_type) ) (cast_expression "(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND(fVar1) + _DAT_002a5d24)" identifier (argument_list "(ROUND(fVar1) + _DAT_002a5d24)" ( (binary_expression "ROUND(fVar1) + _DAT_002a5d24" (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier ))) + identifier) )))))) ;) (if_statement "if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }" if (parenthesized_expression "((uint)local_24 < param_3 * 2)" ( (binary_expression "(uint)local_24 < param_3 * 2" (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "param_3 * 2" identifier * number_literal)) )) (compound_statement "{\n    local_24 = (float)(param_3 * 2);\n  }" { (expression_statement "local_24 = (float)(param_3 * 2);" (assignment_expression "local_24 = (float)(param_3 * 2)" identifier = (cast_expression "(float)(param_3 * 2)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(param_3 * 2)" ( (binary_expression "param_3 * 2" identifier * number_literal) )))) ;) })) (expression_statement "uVar2 = FUN_0022c330(param_2,local_24);" (assignment_expression "uVar2 = FUN_0022c330(param_2,local_24)" identifier = (call_expression "FUN_0022c330(param_2,local_24)" identifier (argument_list "(param_2,local_24)" ( identifier , identifier )))) ;) (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 4) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned int, unsigned int, unsigned int)\n   const */\n\nuint std::__detail::_Prime_rehash_policy::_M_need_rehash(uint param_1,uint param_2,uint param_3)\n\n{\n  float fVar1;\n  undefined4 uVar2;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined4 local_24;\n  \n  if ((uint)(in_stack_00000014 + in_stack_00000010) < *(uint *)(param_2 + 4)) {\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(in_stack_00000014 + in_stack_00000010) / *(float *)param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2));\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    *(uint *)(param_2 + 4) = local_24;\n    return param_1;\n  }\n  local_24 = (uint)(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24);\n  if (local_24 < param_3 * 2) {\n    local_24 = param_3 * 2;\n  }\n  uVar2 = _M_next_bkt((_Prime_rehash_policy *)param_2,local_24);\n  *(undefined1 *)param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}\n\n" comment comment (function_definition "uint std::__detail::_Prime_rehash_policy::_M_need_rehash(uint param_1,uint param_2,uint param_3)\n\n{\n  float fVar1;\n  undefined4 uVar2;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined4 local_24;\n  \n  if ((uint)(in_stack_00000014 + in_stack_00000010) < *(uint *)(param_2 + 4)) {\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(in_stack_00000014 + in_stack_00000010) / *(float *)param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2));\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    *(uint *)(param_2 + 4) = local_24;\n    return param_1;\n  }\n  local_24 = (uint)(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24);\n  if (local_24 < param_3 * 2) {\n    local_24 = param_3 * 2;\n  }\n  uVar2 = _M_next_bkt((_Prime_rehash_policy *)param_2,local_24);\n  *(undefined1 *)param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" type_identifier (ERROR "std::__detail::_Prime_rehash_policy::" identifier : : identifier : : identifier : :) (function_declarator "_M_need_rehash(uint param_1,uint param_2,uint param_3)" identifier (parameter_list "(uint param_1,uint param_2,uint param_3)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "uint param_2" type_identifier identifier) , (parameter_declaration "uint param_3" type_identifier identifier) ))) (compound_statement "{\n  float fVar1;\n  undefined4 uVar2;\n  int in_stack_00000010;\n  int in_stack_00000014;\n  undefined4 local_24;\n  \n  if ((uint)(in_stack_00000014 + in_stack_00000010) < *(uint *)(param_2 + 4)) {\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(in_stack_00000014 + in_stack_00000010) / *(float *)param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2));\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    *(uint *)(param_2 + 4) = local_24;\n    return param_1;\n  }\n  local_24 = (uint)(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24);\n  if (local_24 < param_3 * 2) {\n    local_24 = param_3 * 2;\n  }\n  uVar2 = _M_next_bkt((_Prime_rehash_policy *)param_2,local_24);\n  *(undefined1 *)param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int in_stack_00000010;" primitive_type identifier ;) (declaration "int in_stack_00000014;" primitive_type identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (if_statement "if ((uint)(in_stack_00000014 + in_stack_00000010) < *(uint *)(param_2 + 4)) {\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" if (parenthesized_expression "((uint)(in_stack_00000014 + in_stack_00000010) < *(uint *)(param_2 + 4))" ( (binary_expression "(uint)(in_stack_00000014 + in_stack_00000010) < *(uint *)(param_2 + 4)" (call_expression "(uint)(in_stack_00000014 + in_stack_00000010)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_stack_00000014 + in_stack_00000010)" ( (binary_expression "in_stack_00000014 + in_stack_00000010" identifier + identifier) ))) < (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) )) (compound_statement "{\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" { (expression_statement "*(undefined1 *)param_1 = 0;" (assignment_expression "*(undefined1 *)param_1 = 0" (pointer_expression "*(undefined1 *)param_1" * (cast_expression "(undefined1 *)param_1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "fVar1 = (float)(uint)(in_stack_00000014 + in_stack_00000010) / *(float *)param_2;" (assignment_expression "fVar1 = (float)(uint)(in_stack_00000014 + in_stack_00000010) / *(float *)param_2" identifier = (binary_expression "(float)(uint)(in_stack_00000014 + in_stack_00000010) / *(float *)param_2" (cast_expression "(float)(uint)(in_stack_00000014 + in_stack_00000010)" ( (type_descriptor "float" primitive_type) ) (call_expression "(uint)(in_stack_00000014 + in_stack_00000010)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(in_stack_00000014 + in_stack_00000010)" ( (binary_expression "in_stack_00000014 + in_stack_00000010" identifier + identifier) )))) / (pointer_expression "*(float *)param_2" * (cast_expression "(float *)param_2" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (if_statement "if (fVar1 < (float)param_3) {\n    local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2));\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    *(uint *)(param_2 + 4) = local_24;\n    return param_1;\n  }" if (parenthesized_expression "(fVar1 < (float)param_3)" ( (binary_expression "fVar1 < (float)param_3" identifier < (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier)) )) (compound_statement "{\n    local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2));\n    *(undefined1 *)param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    *(uint *)(param_2 + 4) = local_24;\n    return param_1;\n  }" { (expression_statement "local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2));" (assignment_expression "local_24 = (uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2))" identifier = (cast_expression "(uint)(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2))" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(ROUND((float)param_3 * *(float *)param_2))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND((float)param_3 * *(float *)param_2))" identifier (argument_list "(ROUND((float)param_3 * *(float *)param_2))" ( (call_expression "ROUND((float)param_3 * *(float *)param_2)" identifier (argument_list "((float)param_3 * *(float *)param_2)" ( (binary_expression "(float)param_3 * *(float *)param_2" (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*(float *)param_2" * (cast_expression "(float *)param_2" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ))) )))))) ;) (expression_statement "*(undefined1 *)param_1 = 0;" (assignment_expression "*(undefined1 *)param_1 = 0" (pointer_expression "*(undefined1 *)param_1" * (cast_expression "(undefined1 *)param_1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(uint *)(param_2 + 4) = local_24;" (assignment_expression "*(uint *)(param_2 + 4) = local_24" (pointer_expression "*(uint *)(param_2 + 4)" * (cast_expression "(uint *)(param_2 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "local_24 = (uint)(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24);" (assignment_expression "local_24 = (uint)(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24)" identifier = (cast_expression "(uint)(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24)" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(longlong)ROUND(ROUND(fVar1) + DAT_002a5d24)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND(fVar1) + DAT_002a5d24)" identifier (argument_list "(ROUND(fVar1) + DAT_002a5d24)" ( (binary_expression "ROUND(fVar1) + DAT_002a5d24" (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier ))) + identifier) )))))) ;) (if_statement "if (local_24 < param_3 * 2) {\n    local_24 = param_3 * 2;\n  }" if (parenthesized_expression "(local_24 < param_3 * 2)" ( (binary_expression "local_24 < param_3 * 2" identifier < (binary_expression "param_3 * 2" identifier * number_literal)) )) (compound_statement "{\n    local_24 = param_3 * 2;\n  }" { (expression_statement "local_24 = param_3 * 2;" (assignment_expression "local_24 = param_3 * 2" identifier = (binary_expression "param_3 * 2" identifier * number_literal)) ;) })) (expression_statement "uVar2 = _M_next_bkt((_Prime_rehash_policy *)param_2,local_24);" (assignment_expression "uVar2 = _M_next_bkt((_Prime_rehash_policy *)param_2,local_24)" identifier = (call_expression "_M_next_bkt((_Prime_rehash_policy *)param_2,local_24)" identifier (argument_list "((_Prime_rehash_policy *)param_2,local_24)" ( (cast_expression "(_Prime_rehash_policy *)param_2" ( (type_descriptor "_Prime_rehash_policy *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (expression_statement "*(undefined1 *)param_1 = 1;" (assignment_expression "*(undefined1 *)param_1 = 1" (pointer_expression "*(undefined1 *)param_1" * (cast_expression "(undefined1 *)param_1" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 4) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit "undefined1 * FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)\n\n{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}\n\n" (function_definition "undefined1 * FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)\n\n{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" type_identifier (pointer_declarator "* FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" * (function_declarator "FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" identifier (parameter_list "(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" ( (parameter_declaration "undefined1 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "float *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) )))) (compound_statement "{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "float local_24;" primitive_type identifier ;) (if_statement "if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" if (parenthesized_expression "((uint)(param_5 + param_4) < (uint)param_2[1])" ( (binary_expression "(uint)(param_5 + param_4) < (uint)param_2[1]" (call_expression "(uint)(param_5 + param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_5 + param_4)" ( (binary_expression "param_5 + param_4" identifier + identifier) ))) < (cast_expression "(uint)param_2[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" { (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "fVar1 = (float)(uint)(param_5 + param_4) / *param_2;" (assignment_expression "fVar1 = (float)(uint)(param_5 + param_4) / *param_2" identifier = (binary_expression "(float)(uint)(param_5 + param_4) / *param_2" (cast_expression "(float)(uint)(param_5 + param_4)" ( (type_descriptor "float" primitive_type) ) (call_expression "(uint)(param_5 + param_4)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_5 + param_4)" ( (binary_expression "param_5 + param_4" identifier + identifier) )))) / (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }" if (parenthesized_expression "(fVar1 < (float)param_3)" ( (binary_expression "fVar1 < (float)param_3" identifier < (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier)) )) (compound_statement "{\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }" { (expression_statement "local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));" (assignment_expression "local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2))" identifier = (cast_expression "(float)(longlong)ROUND(ROUND((float)param_3 * *param_2))" ( (type_descriptor "float" primitive_type) ) (cast_expression "(longlong)ROUND(ROUND((float)param_3 * *param_2))" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND((float)param_3 * *param_2))" identifier (argument_list "(ROUND((float)param_3 * *param_2))" ( (call_expression "ROUND((float)param_3 * *param_2)" identifier (argument_list "((float)param_3 * *param_2)" ( (binary_expression "(float)param_3 * *param_2" (cast_expression "(float)param_3" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*param_2" * identifier)) ))) )))))) ;) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) (return_statement "return param_1;" return identifier ;) })) (expression_statement "local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);" (assignment_expression "local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" identifier = (cast_expression "(float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" ( (type_descriptor "float" primitive_type) ) (cast_expression "(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(ROUND(fVar1) + _DAT_002a5d24)" identifier (argument_list "(ROUND(fVar1) + _DAT_002a5d24)" ( (binary_expression "ROUND(fVar1) + _DAT_002a5d24" (call_expression "ROUND(fVar1)" identifier (argument_list "(fVar1)" ( identifier ))) + identifier) )))))) ;) (if_statement "if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }" if (parenthesized_expression "((uint)local_24 < param_3 * 2)" ( (binary_expression "(uint)local_24 < param_3 * 2" (cast_expression "(uint)local_24" ( (type_descriptor "uint" type_identifier) ) identifier) < (binary_expression "param_3 * 2" identifier * number_literal)) )) (compound_statement "{\n    local_24 = (float)(param_3 * 2);\n  }" { (expression_statement "local_24 = (float)(param_3 * 2);" (assignment_expression "local_24 = (float)(param_3 * 2)" identifier = (cast_expression "(float)(param_3 * 2)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(param_3 * 2)" ( (binary_expression "param_3 * 2" identifier * number_literal) )))) ;) })) (expression_statement "uVar2 = FUN_0022c330(param_2,local_24);" (assignment_expression "uVar2 = FUN_0022c330(param_2,local_24)" identifier = (call_expression "FUN_0022c330(param_2,local_24)" identifier (argument_list "(param_2,local_24)" ( identifier , identifier )))) ;) (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(param_1 + 4) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 4) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (return_statement "return param_1;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) ))) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + IDENT) )))) / (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (pointer_expression * IDENT)) ))) )))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (call_expression IDENT (argument_list ( IDENT ))) + IDENT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (binary_expression IDENT * LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return IDENT ;) })))
(function_definition "undefined1 * FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)\n\n{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" (type_identifier "undefined1") (pointer_declarator "* FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" (* "*") (function_declarator "FUN_0022c460(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" (identifier "FUN_0022c460") (parameter_list "(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)" (( "(") (parameter_declaration "undefined1 *param_1" (type_identifier "undefined1") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "float *param_2" (primitive_type "float") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")")))) (compound_statement "{\n  float fVar1;\n  undefined4 uVar2;\n  float local_24;\n  \n  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }\n  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;\n  if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }\n  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);\n  if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }\n  uVar2 = FUN_0022c330(param_2,local_24);\n  *param_1 = 1;\n  *(undefined4 *)(param_1 + 4) = uVar2;\n  return param_1;\n}" ({ "{") (declaration "float fVar1;" (primitive_type "float") (identifier "fVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "float local_24;" (primitive_type "float") (identifier "local_24") (; ";")) (if_statement "if ((uint)(param_5 + param_4) < (uint)param_2[1]) {\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" (if "if") (parenthesized_expression "((uint)(param_5 + param_4) < (uint)param_2[1])" (( "(") (binary_expression "(uint)(param_5 + param_4) < (uint)param_2[1]" (call_expression "(uint)(param_5 + param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_5 + param_4)" (( "(") (binary_expression "param_5 + param_4" (identifier "param_5") (+ "+") (identifier "param_4")) () ")"))) (< "<") (cast_expression "(uint)param_2[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    return param_1;\n  }" ({ "{") (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "fVar1 = (float)(uint)(param_5 + param_4) / *param_2;" (assignment_expression "fVar1 = (float)(uint)(param_5 + param_4) / *param_2" (identifier "fVar1") (= "=") (binary_expression "(float)(uint)(param_5 + param_4) / *param_2" (cast_expression "(float)(uint)(param_5 + param_4)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (call_expression "(uint)(param_5 + param_4)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_5 + param_4)" (( "(") (binary_expression "param_5 + param_4" (identifier "param_5") (+ "+") (identifier "param_4")) () ")")))) (/ "/") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (fVar1 < (float)param_3) {\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }" (if "if") (parenthesized_expression "(fVar1 < (float)param_3)" (( "(") (binary_expression "fVar1 < (float)param_3" (identifier "fVar1") (< "<") (cast_expression "(float)param_3" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "param_3"))) () ")")) (compound_statement "{\n    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));\n    *param_1 = 0;\n    *(undefined4 *)(param_1 + 4) = 0;\n    param_2[1] = local_24;\n    return param_1;\n  }" ({ "{") (expression_statement "local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));" (assignment_expression "local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2))" (identifier "local_24") (= "=") (cast_expression "(float)(longlong)ROUND(ROUND((float)param_3 * *param_2))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (cast_expression "(longlong)ROUND(ROUND((float)param_3 * *param_2))" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(ROUND((float)param_3 * *param_2))" (identifier "ROUND") (argument_list "(ROUND((float)param_3 * *param_2))" (( "(") (call_expression "ROUND((float)param_3 * *param_2)" (identifier "ROUND") (argument_list "((float)param_3 * *param_2)" (( "(") (binary_expression "(float)param_3 * *param_2" (cast_expression "(float)param_3" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "param_3")) (* "*") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")"))) () ")")))))) (; ";")) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 4) = 0" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_2[1] = local_24;" (assignment_expression "param_2[1] = local_24" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_24")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}"))) (expression_statement "local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);" (assignment_expression "local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" (identifier "local_24") (= "=") (cast_expression "(float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (cast_expression "(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(ROUND(fVar1) + _DAT_002a5d24)" (identifier "ROUND") (argument_list "(ROUND(fVar1) + _DAT_002a5d24)" (( "(") (binary_expression "ROUND(fVar1) + _DAT_002a5d24" (call_expression "ROUND(fVar1)" (identifier "ROUND") (argument_list "(fVar1)" (( "(") (identifier "fVar1") () ")"))) (+ "+") (identifier "_DAT_002a5d24")) () ")")))))) (; ";")) (if_statement "if ((uint)local_24 < param_3 * 2) {\n    local_24 = (float)(param_3 * 2);\n  }" (if "if") (parenthesized_expression "((uint)local_24 < param_3 * 2)" (( "(") (binary_expression "(uint)local_24 < param_3 * 2" (cast_expression "(uint)local_24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_24")) (< "<") (binary_expression "param_3 * 2" (identifier "param_3") (* "*") (number_literal "2"))) () ")")) (compound_statement "{\n    local_24 = (float)(param_3 * 2);\n  }" ({ "{") (expression_statement "local_24 = (float)(param_3 * 2);" (assignment_expression "local_24 = (float)(param_3 * 2)" (identifier "local_24") (= "=") (cast_expression "(float)(param_3 * 2)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(param_3 * 2)" (( "(") (binary_expression "param_3 * 2" (identifier "param_3") (* "*") (number_literal "2")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_0022c330(param_2,local_24);" (assignment_expression "uVar2 = FUN_0022c330(param_2,local_24)" (identifier "uVar2") (= "=") (call_expression "FUN_0022c330(param_2,local_24)" (identifier "FUN_0022c330") (argument_list "(param_2,local_24)" (( "(") (identifier "param_2") (, ",") (identifier "local_24") () ")")))) (; ";")) (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 4) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 4) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (return_statement "return param_1;" (return "return") (identifier "param_1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* std::__detail::_Prime_rehash_policy::_M_need_rehash(unsigned int, unsigned int, unsigned int)
   const */

type_1 std::__detail::type_5::function_1(type_1 var_4,type_1 var_3,type_1 var_9)

{
  float var_5;
  type_2 uVar2;
  int var_2;
  int var_1;
  type_2 var_8;
  
  if ((type_1)(var_1 + var_2) < *(type_1 *)(var_3 + 4)) {
    *(type_3 *)var_4 = 0;
    *(type_2 *)(var_4 + 4) = 0;
    return var_4;
  }
  var_5 = (float)(type_1)(var_1 + var_2) / *(float *)var_3;
  if (var_5 < (float)var_9) {
    var_8 = (type_1)(type_4)var_6(var_6((float)var_9 * *(float *)var_3));
    *(type_3 *)var_4 = 0;
    *(type_2 *)(var_4 + 4) = 0;
    *(type_1 *)(var_3 + 4) = var_8;
    return var_4;
  }
  var_8 = (type_1)(type_4)var_6(var_6(var_5) + var_7);
  if (var_8 < var_9 * 2) {
    var_8 = var_9 * 2;
  }
  uVar2 = var_10((type_5 *)var_3,var_8);
  *(type_3 *)var_4 = 1;
  *(type_2 *)(var_4 + 4) = uVar2;
  return var_4;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined1 * MASKED(undefined1 *param_1,float *param_2,uint param_3,int param_4,int param_5)

{
  float fVar1;
  undefined4 uVar2;
  float local_24;
  
  if ((uint)(param_5 + param_4) < (uint)param_2[1]) {
    *param_1 = 0;
    *(undefined4 *)(param_1 + 4) = 0;
    return param_1;
  }
  fVar1 = (float)(uint)(param_5 + param_4) / *param_2;
  if (fVar1 < (float)param_3) {
    local_24 = (float)(longlong)ROUND(ROUND((float)param_3 * *param_2));
    *param_1 = 0;
    *(undefined4 *)(param_1 + 4) = 0;
    param_2[1] = local_24;
    return param_1;
  }
  local_24 = (float)(longlong)ROUND(ROUND(fVar1) + _DAT_002a5d24);
  if ((uint)local_24 < param_3 * 2) {
    local_24 = (float)(param_3 * 2);
  }
  uVar2 = FUN_0022c330(param_2,local_24);
  *param_1 = 1;
  *(undefined4 *)(param_1 + 4) = uVar2;
  return param_1;
}

