
size_t compute_bucket_size(size_t candidate,Hash_tuning *tuning)

{
  bool bVar1;
  size_t sVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  double dVar6;
  float fVar7;
  
  bVar1 = candidate < 10;
  if (tuning->is_n_buckets == false) {
    dVar6 = (double)(int)candidate;
    if ((int)candidate < 0) {
      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);
    }
    fVar7 = (float)dVar6 / tuning->growth_threshold;
    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {
      return 0;
    }
    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {
      candidate = (size_t)fVar7;
    }
    else {
      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;
    }
    bVar1 = candidate < 10;
  }
  uVar3 = 10;
  if (!bVar1) {
    uVar3 = candidate;
  }
  sVar2 = uVar3 | 1;
  if (sVar2 == 0xffffffff) {
    return 0;
  }
  do {
    if (sVar2 < 10) {
      uVar3 = 3;
LAB_00021acc:
      if (uVar3 == 0) {
        trap(7);
      }
      if (sVar2 % uVar3 != 0) {
        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {
          sVar2 = 0;
        }
        return sVar2;
      }
    }
    else {
      iVar5 = 0x10;
      if (sVar2 != (sVar2 / 3) * 3) {
        uVar4 = 9;
        uVar3 = 3;
        do {
          uVar4 = uVar4 + iVar5;
          uVar3 = uVar3 + 2;
          if (sVar2 <= uVar4) goto LAB_00021acc;
          if (uVar3 == 0) {
            trap(7);
          }
          iVar5 = iVar5 + 8;
        } while (sVar2 % uVar3 != 0);
      }
    }
    sVar2 = sVar2 + 2;
    if (sVar2 == 0xffffffff) {
      return 0;
    }
  } while( true );
}



uint FUN_00021a14(uint param_1,int param_2)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  double dVar6;
  float fVar7;
  
  bVar1 = param_1 < 10;
  if (*(char *)(param_2 + 0x10) == '\0') {
    dVar6 = (double)(int)param_1;
    if ((int)param_1 < 0) {
      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);
    }
    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);
    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {
      return 0;
    }
    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {
      param_1 = (uint)fVar7;
    }
    else {
      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;
    }
    bVar1 = param_1 < 10;
  }
  uVar2 = 10;
  if (!bVar1) {
    uVar2 = param_1;
  }
  uVar2 = uVar2 | 1;
  if (uVar2 == 0xffffffff) {
    return 0;
  }
  do {
    if (uVar2 < 10) {
      uVar3 = 3;
LAB_00021acc:
      if (uVar3 == 0) {
        trap(7);
      }
      if (uVar2 % uVar3 != 0) {
        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {
          uVar2 = 0;
        }
        return uVar2;
      }
    }
    else {
      iVar5 = 0x10;
      if (uVar2 != (uVar2 / 3) * 3) {
        uVar4 = 9;
        uVar3 = 3;
        do {
          uVar4 = uVar4 + iVar5;
          uVar3 = uVar3 + 2;
          if (uVar2 <= uVar4) goto LAB_00021acc;
          if (uVar3 == 0) {
            trap(7);
          }
          iVar5 = iVar5 + 8;
        } while (uVar2 % uVar3 != 0);
      }
    }
    uVar2 = uVar2 + 2;
    if (uVar2 == 0xffffffff) {
      return 0;
    }
  } while( true );
}


lui gp,0x3
addiu gp,gp,-0x3924
addu gp,gp,t9
lbu v0,0x10(a1)
bne v0,zero,0x00021a78
_sltiu v0,a0,0xa
mtc1 a0,f0
bltz a0,0x00021a9c
_cvt.d.W f0,f0
cvt.s.D f0,f0
lwc1 f2,0x8(a1)
div.S f0,f0,f2
lw v0,-0x7fc8(gp)
lwc1 f2,0x4460(v0)
c.le.S f2,f0
bc1t 0x00021b5c
_nop
lw v0,-0x7fc8(gp)
lwc1 f2,0x4464(v0)
c.le.S f2,f0
bc1t 0x1,0x00021aac
_lui v0,0x8000
trunc.w.S f0,f0
mfc1 a0,f0
sltiu v0,a0,0xa
li v1,0xa
movz v1,a0,v0
ori v0,v1,0x1
li v1,-0x1
beq v0,v1,0x00021ac0
_lui a2,0xaaaa
ori a2,a2,0xaaab
b 0x00021aec
_li t0,-0x1
lw v0,-0x7fc8(gp)
ldc1 f2,0x4470(v0)
b 0x00021a38
_add.D f0,f0,f2
sub.S S f0,f0,f2
trunc.w.S f0,f0
mfc1 a0,f0
b 0x00021a74
_or a0,a0,v0
jr ra
_or v0,zero,zero
li v1,0x3
teq v1,zero
divu v0,v1
mfhi v1
bne v1,zero,0x00021b44
_srl v1,v0,0x1e
addiu v0,v0,0x2
beq v0,t0,0x00021b64
_nop
sltiu v1,v0,0xa
bne v1,zero,0x00021ac8
_multu v0,a2
mfhi v1
srl v1,v1,0x1
sll a0,v1,0x1
addu v1,a0,v1
beq v0,v1,0x00021ae0
_li a1,0x10
li a0,0x9
li v1,0x3
addu a0,a0,a1
sltu a3,a0,v0
beq a3,zero,0x00021acc
_addiu v1,v1,0x2
teq v1,zero
divu v0,v1
mfhi a3
bne a3,zero,0x00021b18
_addiu a1,a1,0x8
b 0x00021ae4
_addiu v0,v0,0x2
sltu a0,zero,v1
ext v1,v0,0x1d,0x1
li a1,0x1
movz a1,a0,v1
jr ra
_movn v0,zero,a1
jr ra
_or v0,zero,zero
jr ra
_or v0,zero,zero
(translation_unit "uint FUN_00021a14(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}\n\n" (function_definition "uint FUN_00021a14(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" type_identifier (function_declarator "FUN_00021a14(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "float fVar7;" primitive_type identifier ;) (expression_statement "bVar1 = param_1 < 10;" (assignment_expression "bVar1 = param_1 < 10" identifier = (binary_expression "param_1 < 10" identifier < number_literal)) ;) (if_statement "if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x10) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x10) == '\0'" (pointer_expression "*(char *)(param_2 + 0x10)" * (cast_expression "(char *)(param_2 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }" { (expression_statement "dVar6 = (double)(int)param_1;" (assignment_expression "dVar6 = (double)(int)param_1" identifier = (cast_expression "(double)(int)param_1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" { (expression_statement "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);" (assignment_expression "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" identifier = (binary_expression "dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" identifier + (pointer_expression "*(double *)(PTR_LAB_00046128 + 0x4470)" * (cast_expression "(double *)(PTR_LAB_00046128 + 0x4470)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4470)" ( (binary_expression "PTR_LAB_00046128 + 0x4470" identifier + number_literal) )))))) ;) })) (expression_statement "fVar7 = (float)dVar6 / *(float *)(param_2 + 8);" (assignment_expression "fVar7 = (float)dVar6 / *(float *)(param_2 + 8)" identifier = (binary_expression "(float)dVar6 / *(float *)(param_2 + 8)" (cast_expression "(float)dVar6" ( (type_descriptor "float" primitive_type) ) identifier) / (pointer_expression "*(float *)(param_2 + 8)" * (cast_expression "(float *)(param_2 + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) ;) (if_statement "if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }" if (parenthesized_expression "(*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7)" ( (binary_expression "*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7" (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4460)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4460)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4460)" ( (binary_expression "PTR_LAB_00046128 + 0x4460" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" if (parenthesized_expression "(fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464))" ( (binary_expression "fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)" identifier < (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" ( (binary_expression "PTR_LAB_00046128 + 0x4464" identifier + number_literal) ))))) )) (compound_statement "{\n      param_1 = (uint)fVar7;\n    }" { (expression_statement "param_1 = (uint)fVar7;" (assignment_expression "param_1 = (uint)fVar7" identifier = (cast_expression "(uint)fVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" else (compound_statement "{\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" { (expression_statement "param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;" (assignment_expression "param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" identifier = (binary_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" (cast_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" ( (binary_expression "fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)" identifier - (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" ( (binary_expression "PTR_LAB_00046128 + 0x4464" identifier + number_literal) ))))) ))) | number_literal)) ;) }))) (expression_statement "bVar1 = param_1 < 10;" (assignment_expression "bVar1 = param_1 < 10" identifier = (binary_expression "param_1 < 10" identifier < number_literal)) ;) })) (expression_statement "uVar2 = 10;" (assignment_expression "uVar2 = 10" identifier = number_literal) ;) (if_statement "if (!bVar1) {\n    uVar2 = param_1;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    uVar2 = param_1;\n  }" { (expression_statement "uVar2 = param_1;" (assignment_expression "uVar2 = param_1" identifier = identifier) ;) })) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" identifier = (binary_expression "uVar2 | 1" identifier | number_literal)) ;) (if_statement "if (uVar2 == 0xffffffff) {\n    return 0;\n  }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (do_statement "do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );" do (compound_statement "{\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  }" { (if_statement "if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" if (parenthesized_expression "(uVar2 < 10)" ( (binary_expression "uVar2 < 10" identifier < number_literal) )) (compound_statement "{\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }" { (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" identifier = number_literal) ;) (labeled_statement "LAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }" statement_identifier : (if_statement "if (uVar3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (if_statement "if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }" if (parenthesized_expression "(uVar2 % uVar3 != 0)" ( (binary_expression "uVar2 % uVar3 != 0" (binary_expression "uVar2 % uVar3" identifier % identifier) != number_literal) )) (compound_statement "{\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }" { (if_statement "if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }" if (parenthesized_expression "((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0)" ( (binary_expression "(int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0" (binary_expression "(int)(uVar2 << 2) < 0" (cast_expression "(int)(uVar2 << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 2)" ( (binary_expression "uVar2 << 2" identifier << number_literal) ))) < number_literal) || (binary_expression "uVar2 >> 0x1e != 0" (binary_expression "uVar2 >> 0x1e" identifier >> number_literal) != number_literal)) )) (compound_statement "{\n          uVar2 = 0;\n        }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) })) (return_statement "return uVar2;" return identifier ;) })) }) (else_clause "else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" else (compound_statement "{\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" { (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }" if (parenthesized_expression "(uVar2 != (uVar2 / 3) * 3)" ( (binary_expression "uVar2 != (uVar2 / 3) * 3" identifier != (binary_expression "(uVar2 / 3) * 3" (parenthesized_expression "(uVar2 / 3)" ( (binary_expression "uVar2 / 3" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }" { (expression_statement "uVar4 = 9;" (assignment_expression "uVar4 = 9" identifier = number_literal) ;) (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" identifier = number_literal) ;) (do_statement "do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);" do (compound_statement "{\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        }" { (expression_statement "uVar4 = uVar4 + iVar5;" (assignment_expression "uVar4 = uVar4 + iVar5" identifier = (binary_expression "uVar4 + iVar5" identifier + identifier)) ;) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) (if_statement "if (uVar2 <= uVar4) goto LAB_00021acc;" if (parenthesized_expression "(uVar2 <= uVar4)" ( (binary_expression "uVar2 <= uVar4" identifier <= identifier) )) (goto_statement "goto LAB_00021acc;" goto statement_identifier ;)) (if_statement "if (uVar3 == 0) {\n            trap(7);\n          }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            trap(7);\n          }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar5 = iVar5 + 8;" (assignment_expression "iVar5 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 % uVar3 != 0)" ( (binary_expression "uVar2 % uVar3 != 0" (binary_expression "uVar2 % uVar3" identifier % identifier) != number_literal) )) ;) })) }))) (expression_statement "uVar2 = uVar2 + 2;" (assignment_expression "uVar2 = uVar2 + 2" identifier = (binary_expression "uVar2 + 2" identifier + number_literal)) ;) (if_statement "if (uVar2 == 0xffffffff) {\n      return 0;\n    }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "size_t compute_bucket_size(size_t candidate,Hash_tuning *tuning)\n\n{\n  bool bVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = candidate < 10;\n  if (tuning->is_n_buckets == false) {\n    dVar6 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / tuning->growth_threshold;\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      candidate = (size_t)fVar7;\n    }\n    else {\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = candidate < 10;\n  }\n  uVar3 = 10;\n  if (!bVar1) {\n    uVar3 = candidate;\n  }\n  sVar2 = uVar3 | 1;\n  if (sVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (sVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }\n    sVar2 = sVar2 + 2;\n    if (sVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}\n\n" (function_definition "size_t compute_bucket_size(size_t candidate,Hash_tuning *tuning)\n\n{\n  bool bVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = candidate < 10;\n  if (tuning->is_n_buckets == false) {\n    dVar6 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / tuning->growth_threshold;\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      candidate = (size_t)fVar7;\n    }\n    else {\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = candidate < 10;\n  }\n  uVar3 = 10;\n  if (!bVar1) {\n    uVar3 = candidate;\n  }\n  sVar2 = uVar3 | 1;\n  if (sVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (sVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }\n    sVar2 = sVar2 + 2;\n    if (sVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" primitive_type (function_declarator "compute_bucket_size(size_t candidate,Hash_tuning *tuning)" identifier (parameter_list "(size_t candidate,Hash_tuning *tuning)" ( (parameter_declaration "size_t candidate" primitive_type identifier) , (parameter_declaration "Hash_tuning *tuning" type_identifier (pointer_declarator "*tuning" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  size_t sVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = candidate < 10;\n  if (tuning->is_n_buckets == false) {\n    dVar6 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / tuning->growth_threshold;\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      candidate = (size_t)fVar7;\n    }\n    else {\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = candidate < 10;\n  }\n  uVar3 = 10;\n  if (!bVar1) {\n    uVar3 = candidate;\n  }\n  sVar2 = uVar3 | 1;\n  if (sVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (sVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }\n    sVar2 = sVar2 + 2;\n    if (sVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "float fVar7;" primitive_type identifier ;) (expression_statement "bVar1 = candidate < 10;" (assignment_expression "bVar1 = candidate < 10" identifier = (binary_expression "candidate < 10" identifier < number_literal)) ;) (if_statement "if (tuning->is_n_buckets == false) {\n    dVar6 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / tuning->growth_threshold;\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      candidate = (size_t)fVar7;\n    }\n    else {\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = candidate < 10;\n  }" if (parenthesized_expression "(tuning->is_n_buckets == false)" ( (binary_expression "tuning->is_n_buckets == false" (field_expression "tuning->is_n_buckets" identifier -> field_identifier) == false) )) (compound_statement "{\n    dVar6 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / tuning->growth_threshold;\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      candidate = (size_t)fVar7;\n    }\n    else {\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = candidate < 10;\n  }" { (expression_statement "dVar6 = (double)(int)candidate;" (assignment_expression "dVar6 = (double)(int)candidate" identifier = (cast_expression "(double)(int)candidate" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)candidate" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)candidate < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" if (parenthesized_expression "((int)candidate < 0)" ( (binary_expression "(int)candidate < 0" (cast_expression "(int)candidate" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" { (expression_statement "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);" (assignment_expression "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" identifier = (binary_expression "dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" identifier + (pointer_expression "*(double *)(PTR_LAB_00046128 + 0x4470)" * (cast_expression "(double *)(PTR_LAB_00046128 + 0x4470)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4470)" ( (binary_expression "PTR_LAB_00046128 + 0x4470" identifier + number_literal) )))))) ;) })) (expression_statement "fVar7 = (float)dVar6 / tuning->growth_threshold;" (assignment_expression "fVar7 = (float)dVar6 / tuning->growth_threshold" identifier = (binary_expression "(float)dVar6 / tuning->growth_threshold" (cast_expression "(float)dVar6" ( (type_descriptor "float" primitive_type) ) identifier) / (field_expression "tuning->growth_threshold" identifier -> field_identifier))) ;) (if_statement "if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }" if (parenthesized_expression "(*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7)" ( (binary_expression "*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7" (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4460)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4460)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4460)" ( (binary_expression "PTR_LAB_00046128 + 0x4460" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      candidate = (size_t)fVar7;\n    }\n    else {\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" if (parenthesized_expression "(fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464))" ( (binary_expression "fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)" identifier < (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" ( (binary_expression "PTR_LAB_00046128 + 0x4464" identifier + number_literal) ))))) )) (compound_statement "{\n      candidate = (size_t)fVar7;\n    }" { (expression_statement "candidate = (size_t)fVar7;" (assignment_expression "candidate = (size_t)fVar7" identifier = (cast_expression "(size_t)fVar7" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) }) (else_clause "else {\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" else (compound_statement "{\n      candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" { (expression_statement "candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;" (assignment_expression "candidate = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" identifier = (binary_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" (cast_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" ( (binary_expression "fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)" identifier - (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" ( (binary_expression "PTR_LAB_00046128 + 0x4464" identifier + number_literal) ))))) ))) | number_literal)) ;) }))) (expression_statement "bVar1 = candidate < 10;" (assignment_expression "bVar1 = candidate < 10" identifier = (binary_expression "candidate < 10" identifier < number_literal)) ;) })) (expression_statement "uVar3 = 10;" (assignment_expression "uVar3 = 10" identifier = number_literal) ;) (if_statement "if (!bVar1) {\n    uVar3 = candidate;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    uVar3 = candidate;\n  }" { (expression_statement "uVar3 = candidate;" (assignment_expression "uVar3 = candidate" identifier = identifier) ;) })) (expression_statement "sVar2 = uVar3 | 1;" (assignment_expression "sVar2 = uVar3 | 1" identifier = (binary_expression "uVar3 | 1" identifier | number_literal)) ;) (if_statement "if (sVar2 == 0xffffffff) {\n    return 0;\n  }" if (parenthesized_expression "(sVar2 == 0xffffffff)" ( (binary_expression "sVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (do_statement "do {\n    if (sVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }\n    sVar2 = sVar2 + 2;\n    if (sVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );" do (compound_statement "{\n    if (sVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }\n    sVar2 = sVar2 + 2;\n    if (sVar2 == 0xffffffff) {\n      return 0;\n    }\n  }" { (if_statement "if (sVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }" if (parenthesized_expression "(sVar2 < 10)" ( (binary_expression "sVar2 < 10" identifier < number_literal) )) (compound_statement "{\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }\n    }" { (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" identifier = number_literal) ;) (labeled_statement "LAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }" statement_identifier : (if_statement "if (uVar3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (if_statement "if (sVar2 % uVar3 != 0) {\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }" if (parenthesized_expression "(sVar2 % uVar3 != 0)" ( (binary_expression "sVar2 % uVar3 != 0" (binary_expression "sVar2 % uVar3" identifier % identifier) != number_literal) )) (compound_statement "{\n        if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }\n        return sVar2;\n      }" { (if_statement "if ((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0) {\n          sVar2 = 0;\n        }" if (parenthesized_expression "((int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0)" ( (binary_expression "(int)(sVar2 << 2) < 0 || sVar2 >> 0x1e != 0" (binary_expression "(int)(sVar2 << 2) < 0" (cast_expression "(int)(sVar2 << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar2 << 2)" ( (binary_expression "sVar2 << 2" identifier << number_literal) ))) < number_literal) || (binary_expression "sVar2 >> 0x1e != 0" (binary_expression "sVar2 >> 0x1e" identifier >> number_literal) != number_literal)) )) (compound_statement "{\n          sVar2 = 0;\n        }" { (expression_statement "sVar2 = 0;" (assignment_expression "sVar2 = 0" identifier = number_literal) ;) })) (return_statement "return sVar2;" return identifier ;) })) }) (else_clause "else {\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }" else (compound_statement "{\n      iVar5 = 0x10;\n      if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }\n    }" { (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" identifier = number_literal) ;) (if_statement "if (sVar2 != (sVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }" if (parenthesized_expression "(sVar2 != (sVar2 / 3) * 3)" ( (binary_expression "sVar2 != (sVar2 / 3) * 3" identifier != (binary_expression "(sVar2 / 3) * 3" (parenthesized_expression "(sVar2 / 3)" ( (binary_expression "sVar2 / 3" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);\n      }" { (expression_statement "uVar4 = 9;" (assignment_expression "uVar4 = 9" identifier = number_literal) ;) (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" identifier = number_literal) ;) (do_statement "do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (sVar2 % uVar3 != 0);" do (compound_statement "{\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (sVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        }" { (expression_statement "uVar4 = uVar4 + iVar5;" (assignment_expression "uVar4 = uVar4 + iVar5" identifier = (binary_expression "uVar4 + iVar5" identifier + identifier)) ;) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) (if_statement "if (sVar2 <= uVar4) goto LAB_00021acc;" if (parenthesized_expression "(sVar2 <= uVar4)" ( (binary_expression "sVar2 <= uVar4" identifier <= identifier) )) (goto_statement "goto LAB_00021acc;" goto statement_identifier ;)) (if_statement "if (uVar3 == 0) {\n            trap(7);\n          }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            trap(7);\n          }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar5 = iVar5 + 8;" (assignment_expression "iVar5 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(sVar2 % uVar3 != 0)" ( (binary_expression "sVar2 % uVar3 != 0" (binary_expression "sVar2 % uVar3" identifier % identifier) != number_literal) )) ;) })) }))) (expression_statement "sVar2 = sVar2 + 2;" (assignment_expression "sVar2 = sVar2 + 2" identifier = (binary_expression "sVar2 + 2" identifier + number_literal)) ;) (if_statement "if (sVar2 == 0xffffffff) {\n      return 0;\n    }" if (parenthesized_expression "(sVar2 == 0xffffffff)" ( (binary_expression "sVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "uint FUN_00021a14(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}\n\n" (function_definition "uint FUN_00021a14(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" type_identifier (function_declarator "FUN_00021a14(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "double dVar6;" primitive_type identifier ;) (declaration "float fVar7;" primitive_type identifier ;) (expression_statement "bVar1 = param_1 < 10;" (assignment_expression "bVar1 = param_1 < 10" identifier = (binary_expression "param_1 < 10" identifier < number_literal)) ;) (if_statement "if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }" if (parenthesized_expression "(*(char *)(param_2 + 0x10) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x10) == '\0'" (pointer_expression "*(char *)(param_2 + 0x10)" * (cast_expression "(char *)(param_2 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x10)" ( (binary_expression "param_2 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }" { (expression_statement "dVar6 = (double)(int)param_1;" (assignment_expression "dVar6 = (double)(int)param_1" identifier = (cast_expression "(double)(int)param_1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" if (parenthesized_expression "((int)param_1 < 0)" ( (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" { (expression_statement "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);" (assignment_expression "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" identifier = (binary_expression "dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" identifier + (pointer_expression "*(double *)(PTR_LAB_00046128 + 0x4470)" * (cast_expression "(double *)(PTR_LAB_00046128 + 0x4470)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4470)" ( (binary_expression "PTR_LAB_00046128 + 0x4470" identifier + number_literal) )))))) ;) })) (expression_statement "fVar7 = (float)dVar6 / *(float *)(param_2 + 8);" (assignment_expression "fVar7 = (float)dVar6 / *(float *)(param_2 + 8)" identifier = (binary_expression "(float)dVar6 / *(float *)(param_2 + 8)" (cast_expression "(float)dVar6" ( (type_descriptor "float" primitive_type) ) identifier) / (pointer_expression "*(float *)(param_2 + 8)" * (cast_expression "(float *)(param_2 + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))))) ;) (if_statement "if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }" if (parenthesized_expression "(*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7)" ( (binary_expression "*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7" (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4460)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4460)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4460)" ( (binary_expression "PTR_LAB_00046128 + 0x4460" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" if (parenthesized_expression "(fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464))" ( (binary_expression "fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)" identifier < (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" ( (binary_expression "PTR_LAB_00046128 + 0x4464" identifier + number_literal) ))))) )) (compound_statement "{\n      param_1 = (uint)fVar7;\n    }" { (expression_statement "param_1 = (uint)fVar7;" (assignment_expression "param_1 = (uint)fVar7" identifier = (cast_expression "(uint)fVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" else (compound_statement "{\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" { (expression_statement "param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;" (assignment_expression "param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" identifier = (binary_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" (cast_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" ( (binary_expression "fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)" identifier - (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" * (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" ( (binary_expression "PTR_LAB_00046128 + 0x4464" identifier + number_literal) ))))) ))) | number_literal)) ;) }))) (expression_statement "bVar1 = param_1 < 10;" (assignment_expression "bVar1 = param_1 < 10" identifier = (binary_expression "param_1 < 10" identifier < number_literal)) ;) })) (expression_statement "uVar2 = 10;" (assignment_expression "uVar2 = 10" identifier = number_literal) ;) (if_statement "if (!bVar1) {\n    uVar2 = param_1;\n  }" if (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) (compound_statement "{\n    uVar2 = param_1;\n  }" { (expression_statement "uVar2 = param_1;" (assignment_expression "uVar2 = param_1" identifier = identifier) ;) })) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" identifier = (binary_expression "uVar2 | 1" identifier | number_literal)) ;) (if_statement "if (uVar2 == 0xffffffff) {\n    return 0;\n  }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (do_statement "do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );" do (compound_statement "{\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  }" { (if_statement "if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" if (parenthesized_expression "(uVar2 < 10)" ( (binary_expression "uVar2 < 10" identifier < number_literal) )) (compound_statement "{\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }" { (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" identifier = number_literal) ;) (labeled_statement "LAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }" statement_identifier : (if_statement "if (uVar3 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) }))) (if_statement "if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }" if (parenthesized_expression "(uVar2 % uVar3 != 0)" ( (binary_expression "uVar2 % uVar3 != 0" (binary_expression "uVar2 % uVar3" identifier % identifier) != number_literal) )) (compound_statement "{\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }" { (if_statement "if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }" if (parenthesized_expression "((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0)" ( (binary_expression "(int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0" (binary_expression "(int)(uVar2 << 2) < 0" (cast_expression "(int)(uVar2 << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 2)" ( (binary_expression "uVar2 << 2" identifier << number_literal) ))) < number_literal) || (binary_expression "uVar2 >> 0x1e != 0" (binary_expression "uVar2 >> 0x1e" identifier >> number_literal) != number_literal)) )) (compound_statement "{\n          uVar2 = 0;\n        }" { (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) })) (return_statement "return uVar2;" return identifier ;) })) }) (else_clause "else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" else (compound_statement "{\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" { (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" identifier = number_literal) ;) (if_statement "if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }" if (parenthesized_expression "(uVar2 != (uVar2 / 3) * 3)" ( (binary_expression "uVar2 != (uVar2 / 3) * 3" identifier != (binary_expression "(uVar2 / 3) * 3" (parenthesized_expression "(uVar2 / 3)" ( (binary_expression "uVar2 / 3" identifier / number_literal) )) * number_literal)) )) (compound_statement "{\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }" { (expression_statement "uVar4 = 9;" (assignment_expression "uVar4 = 9" identifier = number_literal) ;) (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" identifier = number_literal) ;) (do_statement "do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);" do (compound_statement "{\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        }" { (expression_statement "uVar4 = uVar4 + iVar5;" (assignment_expression "uVar4 = uVar4 + iVar5" identifier = (binary_expression "uVar4 + iVar5" identifier + identifier)) ;) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" identifier = (binary_expression "uVar3 + 2" identifier + number_literal)) ;) (if_statement "if (uVar2 <= uVar4) goto LAB_00021acc;" if (parenthesized_expression "(uVar2 <= uVar4)" ( (binary_expression "uVar2 <= uVar4" identifier <= identifier) )) (goto_statement "goto LAB_00021acc;" goto statement_identifier ;)) (if_statement "if (uVar3 == 0) {\n            trap(7);\n          }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            trap(7);\n          }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar5 = iVar5 + 8;" (assignment_expression "iVar5 = iVar5 + 8" identifier = (binary_expression "iVar5 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 % uVar3 != 0)" ( (binary_expression "uVar2 % uVar3 != 0" (binary_expression "uVar2 % uVar3" identifier % identifier) != number_literal) )) ;) })) }))) (expression_statement "uVar2 = uVar2 + 2;" (assignment_expression "uVar2 = uVar2 + 2" identifier = (binary_expression "uVar2 + 2" identifier + number_literal)) ;) (if_statement "if (uVar2 == 0xffffffff) {\n      return 0;\n    }" if (parenthesized_expression "(uVar2 == 0xffffffff)" ( (binary_expression "uVar2 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) | LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT % IDENT) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) < LIT) || (binary_expression (binary_expression IDENT >> LIT) != LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (binary_expression (parenthesized_expression ( (binary_expression IDENT / LIT) )) * LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT % IDENT) != LIT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint FUN_00021a14(uint param_1,int param_2)\n\n{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" (type_identifier "uint") (function_declarator "FUN_00021a14(uint param_1,int param_2)" (identifier "FUN_00021a14") (parameter_list "(uint param_1,int param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  int iVar5;\n  double dVar6;\n  float fVar7;\n  \n  bVar1 = param_1 < 10;\n  if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }\n  uVar2 = 10;\n  if (!bVar1) {\n    uVar2 = param_1;\n  }\n  uVar2 = uVar2 | 1;\n  if (uVar2 == 0xffffffff) {\n    return 0;\n  }\n  do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "double dVar6;" (primitive_type "double") (identifier "dVar6") (; ";")) (declaration "float fVar7;" (primitive_type "float") (identifier "fVar7") (; ";")) (expression_statement "bVar1 = param_1 < 10;" (assignment_expression "bVar1 = param_1 < 10" (identifier "bVar1") (= "=") (binary_expression "param_1 < 10" (identifier "param_1") (< "<") (number_literal "10"))) (; ";")) (if_statement "if (*(char *)(param_2 + 0x10) == '\0') {\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x10) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x10) == '\0'" (pointer_expression "*(char *)(param_2 + 0x10)" (* "*") (cast_expression "(char *)(param_2 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x10)" (( "(") (binary_expression "param_2 + 0x10" (identifier "param_2") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    dVar6 = (double)(int)param_1;\n    if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }\n    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);\n    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }\n    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }\n    bVar1 = param_1 < 10;\n  }" ({ "{") (expression_statement "dVar6 = (double)(int)param_1;" (assignment_expression "dVar6 = (double)(int)param_1" (identifier "dVar6") (= "=") (cast_expression "(double)(int)param_1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) (; ";")) (if_statement "if ((int)param_1 < 0) {\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" (if "if") (parenthesized_expression "((int)param_1 < 0)" (( "(") (binary_expression "(int)param_1 < 0" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);\n    }" ({ "{") (expression_statement "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);" (assignment_expression "dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" (identifier "dVar6") (= "=") (binary_expression "dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470)" (identifier "dVar6") (+ "+") (pointer_expression "*(double *)(PTR_LAB_00046128 + 0x4470)" (* "*") (cast_expression "(double *)(PTR_LAB_00046128 + 0x4470)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00046128 + 0x4470)" (( "(") (binary_expression "PTR_LAB_00046128 + 0x4470" (identifier "PTR_LAB_00046128") (+ "+") (number_literal "0x4470")) () ")")))))) (; ";")) (} "}"))) (expression_statement "fVar7 = (float)dVar6 / *(float *)(param_2 + 8);" (assignment_expression "fVar7 = (float)dVar6 / *(float *)(param_2 + 8)" (identifier "fVar7") (= "=") (binary_expression "(float)dVar6 / *(float *)(param_2 + 8)" (cast_expression "(float)dVar6" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar6")) (/ "/") (pointer_expression "*(float *)(param_2 + 8)" (* "*") (cast_expression "(float *)(param_2 + 8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (if_statement "if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7)" (( "(") (binary_expression "*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7" (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4460)" (* "*") (cast_expression "(float *)(PTR_LAB_00046128 + 0x4460)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00046128 + 0x4460)" (( "(") (binary_expression "PTR_LAB_00046128 + 0x4460" (identifier "PTR_LAB_00046128") (+ "+") (number_literal "0x4460")) () ")")))) (<= "<=") (identifier "fVar7")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {\n      param_1 = (uint)fVar7;\n    }\n    else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" (if "if") (parenthesized_expression "(fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464))" (( "(") (binary_expression "fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)" (identifier "fVar7") (< "<") (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" (* "*") (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" (( "(") (binary_expression "PTR_LAB_00046128 + 0x4464" (identifier "PTR_LAB_00046128") (+ "+") (number_literal "0x4464")) () ")"))))) () ")")) (compound_statement "{\n      param_1 = (uint)fVar7;\n    }" ({ "{") (expression_statement "param_1 = (uint)fVar7;" (assignment_expression "param_1 = (uint)fVar7" (identifier "param_1") (= "=") (cast_expression "(uint)fVar7" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar7"))) (; ";")) (} "}")) (else_clause "else {\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" (else "else") (compound_statement "{\n      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;\n    }" ({ "{") (expression_statement "param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;" (assignment_expression "param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" (identifier "param_1") (= "=") (binary_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000" (cast_expression "(int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464))" (( "(") (binary_expression "fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)" (identifier "fVar7") (- "-") (pointer_expression "*(float *)(PTR_LAB_00046128 + 0x4464)" (* "*") (cast_expression "(float *)(PTR_LAB_00046128 + 0x4464)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00046128 + 0x4464)" (( "(") (binary_expression "PTR_LAB_00046128 + 0x4464" (identifier "PTR_LAB_00046128") (+ "+") (number_literal "0x4464")) () ")"))))) () ")"))) (| "|") (number_literal "0x80000000"))) (; ";")) (} "}")))) (expression_statement "bVar1 = param_1 < 10;" (assignment_expression "bVar1 = param_1 < 10" (identifier "bVar1") (= "=") (binary_expression "param_1 < 10" (identifier "param_1") (< "<") (number_literal "10"))) (; ";")) (} "}"))) (expression_statement "uVar2 = 10;" (assignment_expression "uVar2 = 10" (identifier "uVar2") (= "=") (number_literal "10")) (; ";")) (if_statement "if (!bVar1) {\n    uVar2 = param_1;\n  }" (if "if") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (compound_statement "{\n    uVar2 = param_1;\n  }" ({ "{") (expression_statement "uVar2 = param_1;" (assignment_expression "uVar2 = param_1" (identifier "uVar2") (= "=") (identifier "param_1")) (; ";")) (} "}"))) (expression_statement "uVar2 = uVar2 | 1;" (assignment_expression "uVar2 = uVar2 | 1" (identifier "uVar2") (= "=") (binary_expression "uVar2 | 1" (identifier "uVar2") (| "|") (number_literal "1"))) (; ";")) (if_statement "if (uVar2 == 0xffffffff) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(uVar2 == 0xffffffff)" (( "(") (binary_expression "uVar2 == 0xffffffff" (identifier "uVar2") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (do_statement "do {\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }\n    uVar2 = uVar2 + 2;\n    if (uVar2 == 0xffffffff) {\n      return 0;\n    }\n  }" ({ "{") (if_statement "if (uVar2 < 10) {\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }\n    else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" (if "if") (parenthesized_expression "(uVar2 < 10)" (( "(") (binary_expression "uVar2 < 10" (identifier "uVar2") (< "<") (number_literal "10")) () ")")) (compound_statement "{\n      uVar3 = 3;\nLAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }\n      if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }\n    }" ({ "{") (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" (identifier "uVar3") (= "=") (number_literal "3")) (; ";")) (labeled_statement "LAB_00021acc:\n      if (uVar3 == 0) {\n        trap(7);\n      }" (statement_identifier "LAB_00021acc") (: ":") (if_statement "if (uVar3 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}")))) (if_statement "if (uVar2 % uVar3 != 0) {\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }" (if "if") (parenthesized_expression "(uVar2 % uVar3 != 0)" (( "(") (binary_expression "uVar2 % uVar3 != 0" (binary_expression "uVar2 % uVar3" (identifier "uVar2") (% "%") (identifier "uVar3")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }\n        return uVar2;\n      }" ({ "{") (if_statement "if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {\n          uVar2 = 0;\n        }" (if "if") (parenthesized_expression "((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0)" (( "(") (binary_expression "(int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0" (binary_expression "(int)(uVar2 << 2) < 0" (cast_expression "(int)(uVar2 << 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar2 << 2)" (( "(") (binary_expression "uVar2 << 2" (identifier "uVar2") (<< "<<") (number_literal "2")) () ")"))) (< "<") (number_literal "0")) (|| "||") (binary_expression "uVar2 >> 0x1e != 0" (binary_expression "uVar2 >> 0x1e" (identifier "uVar2") (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n          uVar2 = 0;\n        }" ({ "{") (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" (else "else") (compound_statement "{\n      iVar5 = 0x10;\n      if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }\n    }" ({ "{") (expression_statement "iVar5 = 0x10;" (assignment_expression "iVar5 = 0x10" (identifier "iVar5") (= "=") (number_literal "0x10")) (; ";")) (if_statement "if (uVar2 != (uVar2 / 3) * 3) {\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }" (if "if") (parenthesized_expression "(uVar2 != (uVar2 / 3) * 3)" (( "(") (binary_expression "uVar2 != (uVar2 / 3) * 3" (identifier "uVar2") (!= "!=") (binary_expression "(uVar2 / 3) * 3" (parenthesized_expression "(uVar2 / 3)" (( "(") (binary_expression "uVar2 / 3" (identifier "uVar2") (/ "/") (number_literal "3")) () ")")) (* "*") (number_literal "3"))) () ")")) (compound_statement "{\n        uVar4 = 9;\n        uVar3 = 3;\n        do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);\n      }" ({ "{") (expression_statement "uVar4 = 9;" (assignment_expression "uVar4 = 9" (identifier "uVar4") (= "=") (number_literal "9")) (; ";")) (expression_statement "uVar3 = 3;" (assignment_expression "uVar3 = 3" (identifier "uVar3") (= "=") (number_literal "3")) (; ";")) (do_statement "do {\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        } while (uVar2 % uVar3 != 0);" (do "do") (compound_statement "{\n          uVar4 = uVar4 + iVar5;\n          uVar3 = uVar3 + 2;\n          if (uVar2 <= uVar4) goto LAB_00021acc;\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar5 = iVar5 + 8;\n        }" ({ "{") (expression_statement "uVar4 = uVar4 + iVar5;" (assignment_expression "uVar4 = uVar4 + iVar5" (identifier "uVar4") (= "=") (binary_expression "uVar4 + iVar5" (identifier "uVar4") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "uVar3 = uVar3 + 2;" (assignment_expression "uVar3 = uVar3 + 2" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 2" (identifier "uVar3") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (uVar2 <= uVar4) goto LAB_00021acc;" (if "if") (parenthesized_expression "(uVar2 <= uVar4)" (( "(") (binary_expression "uVar2 <= uVar4" (identifier "uVar2") (<= "<=") (identifier "uVar4")) () ")")) (goto_statement "goto LAB_00021acc;" (goto "goto") (statement_identifier "LAB_00021acc") (; ";"))) (if_statement "if (uVar3 == 0) {\n            trap(7);\n          }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            trap(7);\n          }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar5 = iVar5 + 8;" (assignment_expression "iVar5 = iVar5 + 8" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 % uVar3 != 0)" (( "(") (binary_expression "uVar2 % uVar3 != 0" (binary_expression "uVar2 % uVar3" (identifier "uVar2") (% "%") (identifier "uVar3")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar2 = uVar2 + 2;" (assignment_expression "uVar2 = uVar2 + 2" (identifier "uVar2") (= "=") (binary_expression "uVar2 + 2" (identifier "uVar2") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (uVar2 == 0xffffffff) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar2 == 0xffffffff)" (( "(") (binary_expression "uVar2 == 0xffffffff" (identifier "uVar2") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) 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: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (return_statement (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal))))) condition: (parenthesized_expression (true))))))

uint MASKED(uint param_1,int param_2)

{
  bool bVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  int iVar5;
  double dVar6;
  float fVar7;
  
  bVar1 = param_1 < 10;
  if (*(char *)(param_2 + 0x10) == '\0') {
    dVar6 = (double)(int)param_1;
    if ((int)param_1 < 0) {
      dVar6 = dVar6 + *(double *)(PTR_LAB_00046128 + 0x4470);
    }
    fVar7 = (float)dVar6 / *(float *)(param_2 + 8);
    if (*(float *)(PTR_LAB_00046128 + 0x4460) <= fVar7) {
      return 0;
    }
    if (fVar7 < *(float *)(PTR_LAB_00046128 + 0x4464)) {
      param_1 = (uint)fVar7;
    }
    else {
      param_1 = (int)(fVar7 - *(float *)(PTR_LAB_00046128 + 0x4464)) | 0x80000000;
    }
    bVar1 = param_1 < 10;
  }
  uVar2 = 10;
  if (!bVar1) {
    uVar2 = param_1;
  }
  uVar2 = uVar2 | 1;
  if (uVar2 == 0xffffffff) {
    return 0;
  }
  do {
    if (uVar2 < 10) {
      uVar3 = 3;
LAB_00021acc:
      if (uVar3 == 0) {
        trap(7);
      }
      if (uVar2 % uVar3 != 0) {
        if ((int)(uVar2 << 2) < 0 || uVar2 >> 0x1e != 0) {
          uVar2 = 0;
        }
        return uVar2;
      }
    }
    else {
      iVar5 = 0x10;
      if (uVar2 != (uVar2 / 3) * 3) {
        uVar4 = 9;
        uVar3 = 3;
        do {
          uVar4 = uVar4 + iVar5;
          uVar3 = uVar3 + 2;
          if (uVar2 <= uVar4) goto LAB_00021acc;
          if (uVar3 == 0) {
            trap(7);
          }
          iVar5 = iVar5 + 8;
        } while (uVar2 % uVar3 != 0);
      }
    }
    uVar2 = uVar2 + 2;
    if (uVar2 == 0xffffffff) {
      return 0;
    }
  } while( true );
}

