
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Unknown calling convention */

_Bool check_tuning(Hash_table *table)

{
  float fVar1;
  Hash_tuning *pHVar2;
  float fVar3;
  
  pHVar2 = table->tuning;
  if (pHVar2 == &default_tuning) {
    return true;
  }
  fVar1 = pHVar2->growth_threshold;
  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&
      (_DAT_0010cc5c < pHVar2->growth_factor)) && (_DAT_0010cc60 <= pHVar2->shrink_threshold)) {
    fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54;
    if (((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&
       (fVar3 < fVar1)) {
      return true;
    }
  }
  table->tuning = &default_tuning;
  return false;
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 FUN_00108d86(long param_1)

{
  float fVar1;
  float *pfVar2;
  float fVar3;
  
  pfVar2 = *(float **)(param_1 + 0x28);
  if (pfVar2 == (float *)&DAT_0010cc40) {
    return 1;
  }
  fVar1 = pfVar2[2];
  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&
     (_DAT_0010cc60 <= *pfVar2)) {
    fVar3 = *pfVar2 + _DAT_0010cc54;
    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {
      return 1;
    }
  }
  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;
  return 0;
}


MOV RAX,qword ptr [RDI + 0x28]
LEA RDX,[0x10cc40]
CMP RAX,RDX
JZ 0x00108e08
MOVSS XMM0,dword ptr [RAX + 0x8]
COMISS XMM0,dword ptr [0x0010cc54]
JBE 0x00108deb
MOVSS XMM1,dword ptr [0x0010cc58]
COMISS XMM1,XMM0
JBE 0x00108deb
MOVSS XMM1,dword ptr [RAX + 0xc]
COMISS XMM1,dword ptr [0x0010cc5c]
JBE 0x00108deb
MOVSS XMM1,dword ptr [RAX]
COMISS XMM1,dword ptr [0x0010cc60]
JC 0x00108deb
ADDSS XMM1,dword ptr [0x0010cc54]
MOVSS XMM2,dword ptr [RAX + 0x4]
COMISS XMM2,XMM1
JBE 0x00108deb
MOVSS XMM3,dword ptr [0x0010cc64]
COMISS XMM3,XMM2
JNC 0x00108dfc
LEA RAX,[0x10cc40]
MOV qword ptr [RDI + 0x28],RAX
MOV EAX,0x0
RET
MOV EAX,0x1
COMISS XMM0,XMM1
JBE 0x00108deb
JMP 0x00108e0d
MOV EAX,0x1
RET
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nundefined8 FUN_00108d86(long param_1)\n\n{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}\n\n" comment (function_definition "undefined8 FUN_00108d86(long param_1)\n\n{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}" type_identifier (function_declarator "FUN_00108d86(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "float *pfVar2;" primitive_type (pointer_declarator "*pfVar2" * identifier) ;) (declaration "float fVar3;" primitive_type identifier ;) (expression_statement "pfVar2 = *(float **)(param_1 + 0x28);" (assignment_expression "pfVar2 = *(float **)(param_1 + 0x28)" identifier = (pointer_expression "*(float **)(param_1 + 0x28)" * (cast_expression "(float **)(param_1 + 0x28)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }" if (parenthesized_expression "(pfVar2 == (float *)&DAT_0010cc40)" ( (binary_expression "pfVar2 == (float *)&DAT_0010cc40" identifier == (cast_expression "(float *)&DAT_0010cc40" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0010cc40" & identifier))) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "fVar1 = pfVar2[2];" (assignment_expression "fVar1 = pfVar2[2]" identifier = (subscript_expression "pfVar2[2]" identifier [ number_literal ])) ;) (if_statement "if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }" if (parenthesized_expression "((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2))" ( (binary_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)" (parenthesized_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3]))" ( (binary_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])" (parenthesized_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58))" ( (binary_expression "(_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)" (parenthesized_expression "(_DAT_0010cc54 < fVar1)" ( (binary_expression "_DAT_0010cc54 < fVar1" identifier < identifier) )) && (parenthesized_expression "(fVar1 < DAT_0010cc58)" ( (binary_expression "fVar1 < DAT_0010cc58" identifier < identifier) ))) )) && (parenthesized_expression "(_DAT_0010cc5c < pfVar2[3])" ( (binary_expression "_DAT_0010cc5c < pfVar2[3]" identifier < (subscript_expression "pfVar2[3]" identifier [ number_literal ])) ))) )) && (parenthesized_expression "(_DAT_0010cc60 <= *pfVar2)" ( (binary_expression "_DAT_0010cc60 <= *pfVar2" identifier <= (pointer_expression "*pfVar2" * identifier)) ))) )) (compound_statement "{\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }" { (expression_statement "fVar3 = *pfVar2 + _DAT_0010cc54;" (assignment_expression "fVar3 = *pfVar2 + _DAT_0010cc54" identifier = (binary_expression "*pfVar2 + _DAT_0010cc54" (pointer_expression "*pfVar2" * identifier) + identifier)) ;) (if_statement "if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }" if (parenthesized_expression "(((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1))" ( (binary_expression "((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)" (parenthesized_expression "((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64))" ( (binary_expression "(fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)" (parenthesized_expression "(fVar3 < pfVar2[1])" ( (binary_expression "fVar3 < pfVar2[1]" identifier < (subscript_expression "pfVar2[1]" identifier [ number_literal ])) )) && (parenthesized_expression "(pfVar2[1] <= DAT_0010cc64)" ( (binary_expression "pfVar2[1] <= DAT_0010cc64" (subscript_expression "pfVar2[1]" identifier [ number_literal ]) <= identifier) ))) )) && (parenthesized_expression "(fVar3 < fVar1)" ( (binary_expression "fVar3 < fVar1" identifier < identifier) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "*(undefined **)(param_1 + 0x28) = &DAT_0010cc40;" (assignment_expression "*(undefined **)(param_1 + 0x28) = &DAT_0010cc40" (pointer_expression "*(undefined **)(param_1 + 0x28)" * (cast_expression "(undefined **)(param_1 + 0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (pointer_expression "&DAT_0010cc40" & identifier)) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* WARNING: Unknown calling convention */\n\n_Bool check_tuning(Hash_table *table)\n\n{\n  float fVar1;\n  Hash_tuning *pHVar2;\n  float fVar3;\n  \n  pHVar2 = table->tuning;\n  if (pHVar2 == &default_tuning) {\n    return true;\n  }\n  fVar1 = pHVar2->growth_threshold;\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor)) && (_DAT_0010cc60 <= pHVar2->shrink_threshold)) {\n    fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54;\n    if (((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1)) {\n      return true;\n    }\n  }\n  table->tuning = &default_tuning;\n  return false;\n}\n\n" comment comment (function_definition "_Bool check_tuning(Hash_table *table)\n\n{\n  float fVar1;\n  Hash_tuning *pHVar2;\n  float fVar3;\n  \n  pHVar2 = table->tuning;\n  if (pHVar2 == &default_tuning) {\n    return true;\n  }\n  fVar1 = pHVar2->growth_threshold;\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor)) && (_DAT_0010cc60 <= pHVar2->shrink_threshold)) {\n    fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54;\n    if (((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1)) {\n      return true;\n    }\n  }\n  table->tuning = &default_tuning;\n  return false;\n}" type_identifier (function_declarator "check_tuning(Hash_table *table)" identifier (parameter_list "(Hash_table *table)" ( (parameter_declaration "Hash_table *table" type_identifier (pointer_declarator "*table" * identifier)) ))) (compound_statement "{\n  float fVar1;\n  Hash_tuning *pHVar2;\n  float fVar3;\n  \n  pHVar2 = table->tuning;\n  if (pHVar2 == &default_tuning) {\n    return true;\n  }\n  fVar1 = pHVar2->growth_threshold;\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor)) && (_DAT_0010cc60 <= pHVar2->shrink_threshold)) {\n    fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54;\n    if (((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1)) {\n      return true;\n    }\n  }\n  table->tuning = &default_tuning;\n  return false;\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "Hash_tuning *pHVar2;" type_identifier (pointer_declarator "*pHVar2" * identifier) ;) (declaration "float fVar3;" primitive_type identifier ;) (expression_statement "pHVar2 = table->tuning;" (assignment_expression "pHVar2 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (if_statement "if (pHVar2 == &default_tuning) {\n    return true;\n  }" if (parenthesized_expression "(pHVar2 == &default_tuning)" ( (binary_expression "pHVar2 == &default_tuning" identifier == (pointer_expression "&default_tuning" & identifier)) )) (compound_statement "{\n    return true;\n  }" { (return_statement "return true;" return true ;) })) (expression_statement "fVar1 = pHVar2->growth_threshold;" (assignment_expression "fVar1 = pHVar2->growth_threshold" identifier = (field_expression "pHVar2->growth_threshold" identifier -> field_identifier)) ;) (if_statement "if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor)) && (_DAT_0010cc60 <= pHVar2->shrink_threshold)) {\n    fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54;\n    if (((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1)) {\n      return true;\n    }\n  }" if (parenthesized_expression "((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor)) && (_DAT_0010cc60 <= pHVar2->shrink_threshold))" ( (binary_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor)) && (_DAT_0010cc60 <= pHVar2->shrink_threshold)" (parenthesized_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor))" ( (binary_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) &&\n      (_DAT_0010cc5c < pHVar2->growth_factor)" (parenthesized_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58))" ( (binary_expression "(_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)" (parenthesized_expression "(_DAT_0010cc54 < fVar1)" ( (binary_expression "_DAT_0010cc54 < fVar1" identifier < identifier) )) && (parenthesized_expression "(fVar1 < DAT_0010cc58)" ( (binary_expression "fVar1 < DAT_0010cc58" identifier < identifier) ))) )) && (parenthesized_expression "(_DAT_0010cc5c < pHVar2->growth_factor)" ( (binary_expression "_DAT_0010cc5c < pHVar2->growth_factor" identifier < (field_expression "pHVar2->growth_factor" identifier -> field_identifier)) ))) )) && (parenthesized_expression "(_DAT_0010cc60 <= pHVar2->shrink_threshold)" ( (binary_expression "_DAT_0010cc60 <= pHVar2->shrink_threshold" identifier <= (field_expression "pHVar2->shrink_threshold" identifier -> field_identifier)) ))) )) (compound_statement "{\n    fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54;\n    if (((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1)) {\n      return true;\n    }\n  }" { (expression_statement "fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54;" (assignment_expression "fVar3 = pHVar2->shrink_threshold + _DAT_0010cc54" identifier = (binary_expression "pHVar2->shrink_threshold + _DAT_0010cc54" (field_expression "pHVar2->shrink_threshold" identifier -> field_identifier) + identifier)) ;) (if_statement "if (((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1)) {\n      return true;\n    }" if (parenthesized_expression "(((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1))" ( (binary_expression "((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)) &&\n       (fVar3 < fVar1)" (parenthesized_expression "((fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64))" ( (binary_expression "(fVar3 < pHVar2->shrink_factor) && (pHVar2->shrink_factor <= DAT_0010cc64)" (parenthesized_expression "(fVar3 < pHVar2->shrink_factor)" ( (binary_expression "fVar3 < pHVar2->shrink_factor" identifier < (field_expression "pHVar2->shrink_factor" identifier -> field_identifier)) )) && (parenthesized_expression "(pHVar2->shrink_factor <= DAT_0010cc64)" ( (binary_expression "pHVar2->shrink_factor <= DAT_0010cc64" (field_expression "pHVar2->shrink_factor" identifier -> field_identifier) <= identifier) ))) )) && (parenthesized_expression "(fVar3 < fVar1)" ( (binary_expression "fVar3 < fVar1" identifier < identifier) ))) )) (compound_statement "{\n      return true;\n    }" { (return_statement "return true;" return true ;) })) })) (expression_statement "table->tuning = &default_tuning;" (assignment_expression "table->tuning = &default_tuning" (field_expression "table->tuning" identifier -> field_identifier) = (pointer_expression "&default_tuning" & identifier)) ;) (return_statement "return false;" return false ;) })))
(translation_unit "undefined8 FUN_00108d86(long param_1)\n\n{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}\n\n" (function_definition "undefined8 FUN_00108d86(long param_1)\n\n{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}" type_identifier (function_declarator "FUN_00108d86(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}" { (declaration "float fVar1;" primitive_type identifier ;) (declaration "float *pfVar2;" primitive_type (pointer_declarator "*pfVar2" * identifier) ;) (declaration "float fVar3;" primitive_type identifier ;) (expression_statement "pfVar2 = *(float **)(param_1 + 0x28);" (assignment_expression "pfVar2 = *(float **)(param_1 + 0x28)" identifier = (pointer_expression "*(float **)(param_1 + 0x28)" * (cast_expression "(float **)(param_1 + 0x28)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }" if (parenthesized_expression "(pfVar2 == (float *)&DAT_0010cc40)" ( (binary_expression "pfVar2 == (float *)&DAT_0010cc40" identifier == (cast_expression "(float *)&DAT_0010cc40" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_0010cc40" & identifier))) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "fVar1 = pfVar2[2];" (assignment_expression "fVar1 = pfVar2[2]" identifier = (subscript_expression "pfVar2[2]" identifier [ number_literal ])) ;) (if_statement "if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }" if (parenthesized_expression "((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2))" ( (binary_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)" (parenthesized_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3]))" ( (binary_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])" (parenthesized_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58))" ( (binary_expression "(_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)" (parenthesized_expression "(_DAT_0010cc54 < fVar1)" ( (binary_expression "_DAT_0010cc54 < fVar1" identifier < identifier) )) && (parenthesized_expression "(fVar1 < DAT_0010cc58)" ( (binary_expression "fVar1 < DAT_0010cc58" identifier < identifier) ))) )) && (parenthesized_expression "(_DAT_0010cc5c < pfVar2[3])" ( (binary_expression "_DAT_0010cc5c < pfVar2[3]" identifier < (subscript_expression "pfVar2[3]" identifier [ number_literal ])) ))) )) && (parenthesized_expression "(_DAT_0010cc60 <= *pfVar2)" ( (binary_expression "_DAT_0010cc60 <= *pfVar2" identifier <= (pointer_expression "*pfVar2" * identifier)) ))) )) (compound_statement "{\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }" { (expression_statement "fVar3 = *pfVar2 + _DAT_0010cc54;" (assignment_expression "fVar3 = *pfVar2 + _DAT_0010cc54" identifier = (binary_expression "*pfVar2 + _DAT_0010cc54" (pointer_expression "*pfVar2" * identifier) + identifier)) ;) (if_statement "if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }" if (parenthesized_expression "(((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1))" ( (binary_expression "((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)" (parenthesized_expression "((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64))" ( (binary_expression "(fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)" (parenthesized_expression "(fVar3 < pfVar2[1])" ( (binary_expression "fVar3 < pfVar2[1]" identifier < (subscript_expression "pfVar2[1]" identifier [ number_literal ])) )) && (parenthesized_expression "(pfVar2[1] <= DAT_0010cc64)" ( (binary_expression "pfVar2[1] <= DAT_0010cc64" (subscript_expression "pfVar2[1]" identifier [ number_literal ]) <= identifier) ))) )) && (parenthesized_expression "(fVar3 < fVar1)" ( (binary_expression "fVar3 < fVar1" identifier < identifier) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) })) (expression_statement "*(undefined **)(param_1 + 0x28) = &DAT_0010cc40;" (assignment_expression "*(undefined **)(param_1 + 0x28) = &DAT_0010cc40" (pointer_expression "*(undefined **)(param_1 + 0x28)" * (cast_expression "(undefined **)(param_1 + 0x28)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x28)" ( (binary_expression "param_1 + 0x28" identifier + number_literal) )))) = (pointer_expression "&DAT_0010cc40" & identifier)) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) && (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) ))) )) && (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) <= IDENT) ))) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (return_statement return LIT ;) })))
(function_definition "undefined8 FUN_00108d86(long param_1)\n\n{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}" (type_identifier "undefined8") (function_declarator "FUN_00108d86(long param_1)" (identifier "FUN_00108d86") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  float fVar1;\n  float *pfVar2;\n  float fVar3;\n  \n  pfVar2 = *(float **)(param_1 + 0x28);\n  if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }\n  fVar1 = pfVar2[2];\n  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }\n  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;\n  return 0;\n}" ({ "{") (declaration "float fVar1;" (primitive_type "float") (identifier "fVar1") (; ";")) (declaration "float *pfVar2;" (primitive_type "float") (pointer_declarator "*pfVar2" (* "*") (identifier "pfVar2")) (; ";")) (declaration "float fVar3;" (primitive_type "float") (identifier "fVar3") (; ";")) (expression_statement "pfVar2 = *(float **)(param_1 + 0x28);" (assignment_expression "pfVar2 = *(float **)(param_1 + 0x28)" (identifier "pfVar2") (= "=") (pointer_expression "*(float **)(param_1 + 0x28)" (* "*") (cast_expression "(float **)(param_1 + 0x28)" (( "(") (type_descriptor "float **" (primitive_type "float") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (pfVar2 == (float *)&DAT_0010cc40) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(pfVar2 == (float *)&DAT_0010cc40)" (( "(") (binary_expression "pfVar2 == (float *)&DAT_0010cc40" (identifier "pfVar2") (== "==") (cast_expression "(float *)&DAT_0010cc40" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_0010cc40" (& "&") (identifier "DAT_0010cc40")))) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "fVar1 = pfVar2[2];" (assignment_expression "fVar1 = pfVar2[2]" (identifier "fVar1") (= "=") (subscript_expression "pfVar2[2]" (identifier "pfVar2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)) {\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }" (if "if") (parenthesized_expression "((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2))" (( "(") (binary_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&\n     (_DAT_0010cc60 <= *pfVar2)" (parenthesized_expression "(((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3]))" (( "(") (binary_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])" (parenthesized_expression "((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58))" (( "(") (binary_expression "(_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)" (parenthesized_expression "(_DAT_0010cc54 < fVar1)" (( "(") (binary_expression "_DAT_0010cc54 < fVar1" (identifier "_DAT_0010cc54") (< "<") (identifier "fVar1")) () ")")) (&& "&&") (parenthesized_expression "(fVar1 < DAT_0010cc58)" (( "(") (binary_expression "fVar1 < DAT_0010cc58" (identifier "fVar1") (< "<") (identifier "DAT_0010cc58")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(_DAT_0010cc5c < pfVar2[3])" (( "(") (binary_expression "_DAT_0010cc5c < pfVar2[3]" (identifier "_DAT_0010cc5c") (< "<") (subscript_expression "pfVar2[3]" (identifier "pfVar2") ([ "[") (number_literal "3") (] "]"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(_DAT_0010cc60 <= *pfVar2)" (( "(") (binary_expression "_DAT_0010cc60 <= *pfVar2" (identifier "_DAT_0010cc60") (<= "<=") (pointer_expression "*pfVar2" (* "*") (identifier "pfVar2"))) () ")"))) () ")")) (compound_statement "{\n    fVar3 = *pfVar2 + _DAT_0010cc54;\n    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }\n  }" ({ "{") (expression_statement "fVar3 = *pfVar2 + _DAT_0010cc54;" (assignment_expression "fVar3 = *pfVar2 + _DAT_0010cc54" (identifier "fVar3") (= "=") (binary_expression "*pfVar2 + _DAT_0010cc54" (pointer_expression "*pfVar2" (* "*") (identifier "pfVar2")) (+ "+") (identifier "_DAT_0010cc54"))) (; ";")) (if_statement "if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1))" (( "(") (binary_expression "((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)" (parenthesized_expression "((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64))" (( "(") (binary_expression "(fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)" (parenthesized_expression "(fVar3 < pfVar2[1])" (( "(") (binary_expression "fVar3 < pfVar2[1]" (identifier "fVar3") (< "<") (subscript_expression "pfVar2[1]" (identifier "pfVar2") ([ "[") (number_literal "1") (] "]"))) () ")")) (&& "&&") (parenthesized_expression "(pfVar2[1] <= DAT_0010cc64)" (( "(") (binary_expression "pfVar2[1] <= DAT_0010cc64" (subscript_expression "pfVar2[1]" (identifier "pfVar2") ([ "[") (number_literal "1") (] "]")) (<= "<=") (identifier "DAT_0010cc64")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(fVar3 < fVar1)" (( "(") (binary_expression "fVar3 < fVar1" (identifier "fVar3") (< "<") (identifier "fVar1")) () ")"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined **)(param_1 + 0x28) = &DAT_0010cc40;" (assignment_expression "*(undefined **)(param_1 + 0x28) = &DAT_0010cc40" (pointer_expression "*(undefined **)(param_1 + 0x28)" (* "*") (cast_expression "(undefined **)(param_1 + 0x28)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x28)" (( "(") (binary_expression "param_1 + 0x28" (identifier "param_1") (+ "+") (number_literal "0x28")) () ")")))) (= "=") (pointer_expression "&DAT_0010cc40" (& "&") (identifier "DAT_0010cc40"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Unknown calling convention */

type_1 function_1(type_2 *table)

{
  float var_3;
  type_3 *var_1;
  float var_7;
  
  var_1 = table->tuning;
  if (var_1 == &default_tuning) {
    return true;
  }
  var_3 = var_1->growth_threshold;
  if ((((var_2 < var_3) && (var_3 < var_4)) &&
      (var_5 < var_1->growth_factor)) && (var_6 <= var_1->shrink_threshold)) {
    var_7 = var_1->shrink_threshold + var_2;
    if (((var_7 < var_1->shrink_factor) && (var_1->shrink_factor <= var_8)) &&
       (var_7 < var_3)) {
      return true;
    }
  }
  table->tuning = &default_tuning;
  return false;
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 MASKED(long param_1)

{
  float fVar1;
  float *pfVar2;
  float fVar3;
  
  pfVar2 = *(float **)(param_1 + 0x28);
  if (pfVar2 == (float *)&DAT_0010cc40) {
    return 1;
  }
  fVar1 = pfVar2[2];
  if ((((_DAT_0010cc54 < fVar1) && (fVar1 < DAT_0010cc58)) && (_DAT_0010cc5c < pfVar2[3])) &&
     (_DAT_0010cc60 <= *pfVar2)) {
    fVar3 = *pfVar2 + _DAT_0010cc54;
    if (((fVar3 < pfVar2[1]) && (pfVar2[1] <= DAT_0010cc64)) && (fVar3 < fVar1)) {
      return 1;
    }
  }
  *(undefined **)(param_1 + 0x28) = &DAT_0010cc40;
  return 0;
}

