
void * hash_delete(Hash_table *table,void *entry)

{
  undefined *puVar1;
  undefined3 extraout_var;
  void *pvVar2;
  size_t sVar3;
  _Bool _Var4;
  void *pvVar5;
  Hash_tuning *pHVar6;
  hash_entry *phVar7;
  double dVar8;
  float fVar10;
  double dVar9;
  float fVar11;
  hash_entry *bucket;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_0003e550;
  local_1c = *(int *)PTR___stack_chk_guard_0003e550;
  pvVar2 = hash_find_entry(table,entry,&bucket,true);
  if ((pvVar2 == (void *)0x0) ||
     (pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0))
  goto LAB_0001fbbc;
  sVar3 = table->n_buckets_used - 1;
  table->n_buckets_used = sVar3;
  if ((int)sVar3 < 0) {
    pHVar6 = table->tuning;
    fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));
    dVar8 = (double)(int)table->n_buckets;
    if ((int)table->n_buckets < 0) goto LAB_0001fd14;
LAB_0001fc18:
    if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;
  }
  else {
    fVar10 = (float)(int)sVar3;
    pHVar6 = table->tuning;
    dVar8 = (double)(int)table->n_buckets;
    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;
LAB_0001fd14:
    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=
        fVar10) goto LAB_0001fbbc;
  }
  check_tuning((Hash_table *)&table->tuning);
  pHVar6 = table->tuning;
  dVar8 = (double)(int)table->n_buckets;
  if ((int)table->n_buckets < 0) {
    dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);
  }
  dVar9 = (double)(int)table->n_buckets_used;
  if ((int)table->n_buckets_used < 0) {
    dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);
  }
  if ((float)dVar8 * pHVar6->shrink_threshold <= (float)dVar9) goto LAB_0001fbbc;
  fVar10 = (float)dVar8 * pHVar6->shrink_factor;
  if (pHVar6->is_n_buckets == false) {
    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);
    fVar10 = fVar10 * pHVar6->growth_threshold;
    if (fVar11 <= fVar10) goto LAB_0001fcbc;
LAB_0001fd84:
    sVar3 = (size_t)fVar10;
  }
  else {
    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);
    if (fVar10 < fVar11) goto LAB_0001fd84;
LAB_0001fcbc:
    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;
  }
  _Var4 = hash_rehash(table,sVar3);
  if (CONCAT31(extraout_var,_Var4) == 0) {
    phVar7 = table->free_entry_list;
    while (phVar7 != (hash_entry *)0x0) {
      phVar7 = phVar7->next;
      (*(code *)PTR_free_0003e558)();
    }
    table->free_entry_list = (hash_entry *)0x0;
  }
LAB_0001fbbc:
  if (local_1c == *(int *)puVar1) {
    return pvVar2;
  }
  (*(code *)PTR___stack_chk_fail_0003e518)();
  return (void *)0x0;
}



int hash_delete(int param_1,undefined4 param_2)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  float *pfVar4;
  double dVar5;
  uint uVar6;
  float fVar8;
  double dVar7;
  float fVar9;
  int *local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_0003e550;
  local_1c = *(int *)PTR___stack_chk_guard_0003e550;
  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);
  if ((iVar2 == 0) ||
     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))
  goto LAB_0001fbbc;
  iVar3 = *(int *)(param_1 + 0xc) + -1;
  *(int *)(param_1 + 0xc) = iVar3;
  if (iVar3 < 0) {
    pfVar4 = *(float **)(param_1 + 0x14);
    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));
    dVar5 = (double)*(int *)(param_1 + 8);
    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;
LAB_0001fc18:
    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;
  }
  else {
    fVar8 = (float)iVar3;
    pfVar4 = *(float **)(param_1 + 0x14);
    dVar5 = (double)*(int *)(param_1 + 8);
    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;
LAB_0001fd14:
    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)
    goto LAB_0001fbbc;
  }
  FUN_0001e8e8(param_1 + 0x14);
  pfVar4 = *(float **)(param_1 + 0x14);
  dVar5 = (double)*(int *)(param_1 + 8);
  if (*(int *)(param_1 + 8) < 0) {
    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);
  }
  dVar7 = (double)*(int *)(param_1 + 0xc);
  if (*(int *)(param_1 + 0xc) < 0) {
    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);
  }
  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;
  fVar8 = (float)dVar5 * pfVar4[1];
  if (*(char *)(pfVar4 + 4) == '\0') {
    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);
    fVar8 = fVar8 * pfVar4[2];
    if (fVar9 <= fVar8) goto LAB_0001fcbc;
LAB_0001fd84:
    uVar6 = (uint)fVar8;
  }
  else {
    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);
    if (fVar8 < fVar9) goto LAB_0001fd84;
LAB_0001fcbc:
    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;
  }
  iVar3 = hash_rehash(param_1,uVar6);
  if (iVar3 == 0) {
    iVar3 = *(int *)(param_1 + 0x24);
    while (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 4);
      (*(code *)PTR_free_0003e558)();
    }
    *(undefined4 *)(param_1 + 0x24) = 0;
  }
LAB_0001fbbc:
  if (local_1c == *(int *)puVar1) {
    return iVar2;
  }
  (*(code *)PTR___stack_chk_fail_0003e518)();
  return 0;
}


lui gp,0x2
addiu gp,gp,0x6638
addu gp,gp,t9
addiu sp,sp,-0x38
lw t9,-0x7f78(gp)
li a3,0x1
addiu a2,sp,0x18
sw s1,0x28(sp)
addiu t9,t9,-0x1860
lw s1,-0x7c30(gp)
sw gp,0x10(sp)
sw s2,0x2c(sp)
sw s0,0x24(sp)
or s0,a0,zero
sw ra,0x34(sp)
sw s3,0x30(sp)
lw v0,0x0(s1)
sw v0,0x1c(sp)
bal 0x0001e7a0
_nop
lw gp,0x10(sp)
beq v0,zero,0x0001fbbc
_or s2,v0,zero
lw v1,0x18(sp)
lw v0,0x10(s0)
lw v1,0x0(v1)
addiu v0,v0,-0x1
beq v1,zero,0x0001fbe8
_sw v0,0x10(s0)
lw a0,0x1c(sp)
or v0,s2,zero
lw v1,0x0(s1)
bne a0,v1,0x0001fd90
_lw ra,0x34(sp)
lw s3,0x30(sp)
lw s2,0x2c(sp)
lw s1,0x28(sp)
lw s0,0x24(sp)
jr ra
_addiu sp,sp,0x38
lw v0,0xc(s0)
addiu v0,v0,-0x1
mtc1 v0,f0
sw v0,0xc(s0)
bltz v0,0x0001fd3c
_cvt.d.W f0,f0
lw v0,0x8(s0)
cvt.s.D f2,f0
lw v1,0x14(s0)
mtc1 v0,f0
bltz v0,0x0001fd10
_cvt.d.W f0,f0
lwc1 f4,0x0(v1)
cvt.s.D f0,f0
mul.S f0,f0,f4
c.lt.S f2,f0
bc1f 0x0001fbbc
_lw t9,-0x7f78(gp)
addiu t9,t9,-0x1718
bal 0x0001e8e8
_addiu a0,s0,0x14
lw v1,0x8(s0)
lw gp,0x10(sp)
lw v0,0x14(s0)
mtc1 v1,f0
bgez v1,0x0001fc60
_cvt.d.W f0,f0
lw v1,-0x7fc8(gp)
ldc1 f2,-0x3d30(v1)
add.D f0,f0,f2
lw v1,0xc(s0)
cvt.s.D f0,f0
mtc1 v1,f2
bgez v1,0x0001fc80
_cvt.d.W f2,f2
lw v1,-0x7fc8(gp)
ldc1 f4,-0x3d30(v1)
add.D f2,f2,f4
lwc1 f4,0x0(v0)
cvt.s.D f2,f2
mul.S f4,f0,f4
c.lt.S f2,f4
bc1f 0x1,0x0001fbbc
_nop
lwc1 f2,0x4(v0)
lbu v1,0x10(v0)
beq v1,zero,0x0001fd68
_mul.S f0,f0,f2
lw v0,-0x7fc8(gp)
lwc1 f2,-0x3ba4(v0)
c.le.S f2,f0
bc1f 0x2,0x0001fd84
_nop
sub.S S f0,f0,f2
lui v0,0x8000
trunc.w.S f0,f0
mfc1 a1,f0
or a1,a1,v0
lw t9,-0x7ea0(gp)
bal 0x0001f5a8
_or a0,s0,zero
bne v0,zero,0x0001fbbc
_lw gp,0x10(sp)
lw a0,0x24(s0)
beq a0,zero,0x0001fd08
_nop
lw t9,-0x7c28(gp)
jalr t9
_lw s3,0x4(a0)
lw gp,0x10(sp)
bne s3,zero,0x0001fcf0
_or a0,s3,zero
b 0x0001fbbc
_sw zero,0x24(s0)
lw v0,-0x7fc8(gp)
ldc1 f4,-0x3d30(v0)
add.D f0,f0,f4
lwc1 f4,0x0(v1)
cvt.s.D f0,f0
mul.S f0,f0,f4
c.lt.S f2,f0
bc1f 0x0001fbbc
_lw t9,-0x7f78(gp)
b 0x0001fc34
_addiu t9,t9,-0x1718
lw v0,-0x7fc8(gp)
lw v1,0x14(s0)
ldc1 f2,-0x3d30(v0)
lw v0,0x8(s0)
add.D f0,f0,f2
cvt.s.D f2,f0
mtc1 v0,f0
bgez v0,0x0001fc18
_cvt.d.W f0,f0
b 0x0001fd14
_lw v0,-0x7fc8(gp)
lwc1 f4,0x8(v0)
lw v0,-0x7fc8(gp)
lwc1 f2,-0x3ba4(v0)
mul.S f0,f0,f4
c.le.S f2,f0
bc1t 0x3,0x0001fcbc
_nop
trunc.w.S f0,f0
b 0x0001fcd0
_mfc1 a1,f0
lw t9,-0x7c68(gp)
jalr t9
_nop
nop
jr ra
_or v0,zero,zero
(translation_unit "int hash_delete(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}\n\n" (function_definition "int hash_delete(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}" primitive_type (function_declarator "hash_delete(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "float *pfVar4;" primitive_type (pointer_declarator "*pfVar4" * identifier) ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "float fVar8;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0003e550;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0003e550" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0003e550;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0003e550" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003e550" * (cast_expression "(int *)PTR___stack_chk_guard_0003e550" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);" (assignment_expression "iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1)" identifier = (call_expression "FUN_0001e7a0(param_1,param_2,&local_20,1)" identifier (argument_list "(param_1,param_2,&local_20,1)" ( identifier , identifier , (pointer_expression "&local_20" & identifier) , number_literal )))) ;) (if_statement "if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;" if (parenthesized_expression "((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))" ( (binary_expression "(iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" ( (comma_expression "iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0" (assignment_expression "iVar3 = *local_20" identifier = (pointer_expression "*local_20" * identifier)) , (comma_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x10) + -1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal)) , (binary_expression "iVar3 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(param_1 + 0xc) + -1;" (assignment_expression "iVar3 = *(int *)(param_1 + 0xc) + -1" identifier = (binary_expression "*(int *)(param_1 + 0xc) + -1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0xc) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar3" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }" { (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" identifier = (pointer_expression "*(float **)(param_1 + 0x14)" * (cast_expression "(float **)(param_1 + 0x14)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));" (assignment_expression "fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" identifier = (cast_expression "(float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (binary_expression "(double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (cast_expression "(double)iVar3" ( (type_descriptor "double" primitive_type) ) identifier) + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) ))))) )))) ;) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" identifier = (cast_expression "(double)*(int *)(param_1 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;" if (parenthesized_expression "(*(int *)(param_1 + 8) < 0)" ( (binary_expression "*(int *)(param_1 + 8) < 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_0001fd14;" goto statement_identifier ;)) (labeled_statement "LAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;" statement_identifier : (if_statement "if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;" if (parenthesized_expression "((float)dVar5 * *pfVar4 <= fVar8)" ( (binary_expression "(float)dVar5 * *pfVar4 <= fVar8" (binary_expression "(float)dVar5 * *pfVar4" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;))) }) (else_clause "else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" else (compound_statement "{\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" { (expression_statement "fVar8 = (float)iVar3;" (assignment_expression "fVar8 = (float)iVar3" identifier = (cast_expression "(float)iVar3" ( (type_descriptor "float" primitive_type) ) identifier)) ;) (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" identifier = (pointer_expression "*(float **)(param_1 + 0x14)" * (cast_expression "(float **)(param_1 + 0x14)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" identifier = (cast_expression "(double)*(int *)(param_1 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (if_statement "if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;" if (parenthesized_expression "(-1 < *(int *)(param_1 + 8))" ( (binary_expression "-1 < *(int *)(param_1 + 8)" number_literal < (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0001fc18;" goto statement_identifier ;)) (labeled_statement "LAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;" statement_identifier : (if_statement "if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;" if (parenthesized_expression "((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)" ( (binary_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8" (binary_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4" (cast_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (binary_expression "dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) ))))) ))) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;))) }))) (expression_statement "FUN_0001e8e8(param_1 + 0x14);" (call_expression "FUN_0001e8e8(param_1 + 0x14)" identifier (argument_list "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))) ;) (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" identifier = (pointer_expression "*(float **)(param_1 + 0x14)" * (cast_expression "(float **)(param_1 + 0x14)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" identifier = (cast_expression "(double)*(int *)(param_1 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 8) < 0)" ( (binary_expression "*(int *)(param_1 + 8) < 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" { (expression_statement "dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier = (binary_expression "dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) )))))) ;) })) (expression_statement "dVar7 = (double)*(int *)(param_1 + 0xc);" (assignment_expression "dVar7 = (double)*(int *)(param_1 + 0xc)" identifier = (cast_expression "(double)*(int *)(param_1 + 0xc)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) < 0)" ( (binary_expression "*(int *)(param_1 + 0xc) < 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" { (expression_statement "dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier = (binary_expression "dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) )))))) ;) })) (if_statement "if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;" if (parenthesized_expression "((float)dVar5 * *pfVar4 <= (float)dVar7)" ( (binary_expression "(float)dVar5 * *pfVar4 <= (float)dVar7" (binary_expression "(float)dVar5 * *pfVar4" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;)) (expression_statement "fVar8 = (float)dVar5 * pfVar4[1];" (assignment_expression "fVar8 = (float)dVar5 * pfVar4[1]" identifier = (binary_expression "(float)dVar5 * pfVar4[1]" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) * (subscript_expression "pfVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" if (parenthesized_expression "(*(char *)(pfVar4 + 4) == '\0')" ( (binary_expression "*(char *)(pfVar4 + 4) == '\0'" (pointer_expression "*(char *)(pfVar4 + 4)" * (cast_expression "(char *)(pfVar4 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pfVar4 + 4)" ( (binary_expression "pfVar4 + 4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }" { (expression_statement "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" identifier = (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" * (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" identifier + number_literal) ))))) ;) (expression_statement "fVar8 = fVar8 * pfVar4[2];" (assignment_expression "fVar8 = fVar8 * pfVar4[2]" identifier = (binary_expression "fVar8 * pfVar4[2]" identifier * (subscript_expression "pfVar4[2]" identifier [ number_literal ]))) ;) (if_statement "if (fVar9 <= fVar8) goto LAB_0001fcbc;" if (parenthesized_expression "(fVar9 <= fVar8)" ( (binary_expression "fVar9 <= fVar8" identifier <= identifier) )) (goto_statement "goto LAB_0001fcbc;" goto statement_identifier ;)) (labeled_statement "LAB_0001fd84:\n    uVar6 = (uint)fVar8;" statement_identifier : (expression_statement "uVar6 = (uint)fVar8;" (assignment_expression "uVar6 = (uint)fVar8" identifier = (cast_expression "(uint)fVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) }) (else_clause "else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" else (compound_statement "{\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" { (expression_statement "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" identifier = (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" * (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" identifier + number_literal) ))))) ;) (if_statement "if (fVar8 < fVar9) goto LAB_0001fd84;" if (parenthesized_expression "(fVar8 < fVar9)" ( (binary_expression "fVar8 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001fd84;" goto statement_identifier ;)) (labeled_statement "LAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;" statement_identifier : (expression_statement "uVar6 = (int)(fVar8 - fVar9) | 0x80000000;" (assignment_expression "uVar6 = (int)(fVar8 - fVar9) | 0x80000000" identifier = (binary_expression "(int)(fVar8 - fVar9) | 0x80000000" (cast_expression "(int)(fVar8 - fVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar8 - fVar9)" ( (binary_expression "fVar8 - fVar9" identifier - identifier) ))) | number_literal)) ;)) }))) (expression_statement "iVar3 = hash_rehash(param_1,uVar6);" (assignment_expression "iVar3 = hash_rehash(param_1,uVar6)" identifier = (call_expression "hash_rehash(param_1,uVar6)" identifier (argument_list "(param_1,uVar6)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24)" identifier = (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (while_statement "while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }" while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }" { (expression_statement "iVar3 = *(int *)(iVar3 + 4);" (assignment_expression "iVar3 = *(int *)(iVar3 + 4)" identifier = (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_free_0003e558)();" (call_expression "(*(code *)PTR_free_0003e558)()" (parenthesized_expression "(*(code *)PTR_free_0003e558)" ( (pointer_expression "*(code *)PTR_free_0003e558" * (cast_expression "(code *)PTR_free_0003e558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x24) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = number_literal) ;) })) (labeled_statement "LAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e518)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e518)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e518)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003e518" * (cast_expression "(code *)PTR___stack_chk_fail_0003e518" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "void * hash_delete(Hash_table *table,void *entry)\n\n{\n  undefined *puVar1;\n  undefined3 extraout_var;\n  void *pvVar2;\n  size_t sVar3;\n  _Bool _Var4;\n  void *pvVar5;\n  Hash_tuning *pHVar6;\n  hash_entry *phVar7;\n  double dVar8;\n  float fVar10;\n  double dVar9;\n  float fVar11;\n  hash_entry *bucket;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  pvVar2 = hash_find_entry(table,entry,&bucket,true);\n  if ((pvVar2 == (void *)0x0) ||\n     (pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0))\n  goto LAB_0001fbbc;\n  sVar3 = table->n_buckets_used - 1;\n  table->n_buckets_used = sVar3;\n  if ((int)sVar3 < 0) {\n    pHVar6 = table->tuning;\n    fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar8 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;\n  }\n  else {\n    fVar10 = (float)(int)sVar3;\n    pHVar6 = table->tuning;\n    dVar8 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;\n  }\n  check_tuning((Hash_table *)&table->tuning);\n  pHVar6 = table->tuning;\n  dVar8 = (double)(int)table->n_buckets;\n  if ((int)table->n_buckets < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar9 = (double)(int)table->n_buckets_used;\n  if ((int)table->n_buckets_used < 0) {\n    dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar8 * pHVar6->shrink_threshold <= (float)dVar9) goto LAB_0001fbbc;\n  fVar10 = (float)dVar8 * pHVar6->shrink_factor;\n  if (pHVar6->is_n_buckets == false) {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar10 = fVar10 * pHVar6->growth_threshold;\n    if (fVar11 <= fVar10) goto LAB_0001fcbc;\nLAB_0001fd84:\n    sVar3 = (size_t)fVar10;\n  }\n  else {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar10 < fVar11) goto LAB_0001fd84;\nLAB_0001fcbc:\n    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;\n  }\n  _Var4 = hash_rehash(table,sVar3);\n  if (CONCAT31(extraout_var,_Var4) == 0) {\n    phVar7 = table->free_entry_list;\n    while (phVar7 != (hash_entry *)0x0) {\n      phVar7 = phVar7->next;\n      (*(code *)PTR_free_0003e558)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return pvVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return (void *)0x0;\n}\n\n" (function_definition "void * hash_delete(Hash_table *table,void *entry)\n\n{\n  undefined *puVar1;\n  undefined3 extraout_var;\n  void *pvVar2;\n  size_t sVar3;\n  _Bool _Var4;\n  void *pvVar5;\n  Hash_tuning *pHVar6;\n  hash_entry *phVar7;\n  double dVar8;\n  float fVar10;\n  double dVar9;\n  float fVar11;\n  hash_entry *bucket;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  pvVar2 = hash_find_entry(table,entry,&bucket,true);\n  if ((pvVar2 == (void *)0x0) ||\n     (pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0))\n  goto LAB_0001fbbc;\n  sVar3 = table->n_buckets_used - 1;\n  table->n_buckets_used = sVar3;\n  if ((int)sVar3 < 0) {\n    pHVar6 = table->tuning;\n    fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar8 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;\n  }\n  else {\n    fVar10 = (float)(int)sVar3;\n    pHVar6 = table->tuning;\n    dVar8 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;\n  }\n  check_tuning((Hash_table *)&table->tuning);\n  pHVar6 = table->tuning;\n  dVar8 = (double)(int)table->n_buckets;\n  if ((int)table->n_buckets < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar9 = (double)(int)table->n_buckets_used;\n  if ((int)table->n_buckets_used < 0) {\n    dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar8 * pHVar6->shrink_threshold <= (float)dVar9) goto LAB_0001fbbc;\n  fVar10 = (float)dVar8 * pHVar6->shrink_factor;\n  if (pHVar6->is_n_buckets == false) {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar10 = fVar10 * pHVar6->growth_threshold;\n    if (fVar11 <= fVar10) goto LAB_0001fcbc;\nLAB_0001fd84:\n    sVar3 = (size_t)fVar10;\n  }\n  else {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar10 < fVar11) goto LAB_0001fd84;\nLAB_0001fcbc:\n    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;\n  }\n  _Var4 = hash_rehash(table,sVar3);\n  if (CONCAT31(extraout_var,_Var4) == 0) {\n    phVar7 = table->free_entry_list;\n    while (phVar7 != (hash_entry *)0x0) {\n      phVar7 = phVar7->next;\n      (*(code *)PTR_free_0003e558)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return pvVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return (void *)0x0;\n}" primitive_type (pointer_declarator "* hash_delete(Hash_table *table,void *entry)" * (function_declarator "hash_delete(Hash_table *table,void *entry)" identifier (parameter_list "(Hash_table *table,void *entry)" ( (parameter_declaration "Hash_table *table" type_identifier (pointer_declarator "*table" * identifier)) , (parameter_declaration "void *entry" primitive_type (pointer_declarator "*entry" * identifier)) )))) (compound_statement "{\n  undefined *puVar1;\n  undefined3 extraout_var;\n  void *pvVar2;\n  size_t sVar3;\n  _Bool _Var4;\n  void *pvVar5;\n  Hash_tuning *pHVar6;\n  hash_entry *phVar7;\n  double dVar8;\n  float fVar10;\n  double dVar9;\n  float fVar11;\n  hash_entry *bucket;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  pvVar2 = hash_find_entry(table,entry,&bucket,true);\n  if ((pvVar2 == (void *)0x0) ||\n     (pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0))\n  goto LAB_0001fbbc;\n  sVar3 = table->n_buckets_used - 1;\n  table->n_buckets_used = sVar3;\n  if ((int)sVar3 < 0) {\n    pHVar6 = table->tuning;\n    fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar8 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;\n  }\n  else {\n    fVar10 = (float)(int)sVar3;\n    pHVar6 = table->tuning;\n    dVar8 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;\n  }\n  check_tuning((Hash_table *)&table->tuning);\n  pHVar6 = table->tuning;\n  dVar8 = (double)(int)table->n_buckets;\n  if ((int)table->n_buckets < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar9 = (double)(int)table->n_buckets_used;\n  if ((int)table->n_buckets_used < 0) {\n    dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar8 * pHVar6->shrink_threshold <= (float)dVar9) goto LAB_0001fbbc;\n  fVar10 = (float)dVar8 * pHVar6->shrink_factor;\n  if (pHVar6->is_n_buckets == false) {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar10 = fVar10 * pHVar6->growth_threshold;\n    if (fVar11 <= fVar10) goto LAB_0001fcbc;\nLAB_0001fd84:\n    sVar3 = (size_t)fVar10;\n  }\n  else {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar10 < fVar11) goto LAB_0001fd84;\nLAB_0001fcbc:\n    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;\n  }\n  _Var4 = hash_rehash(table,sVar3);\n  if (CONCAT31(extraout_var,_Var4) == 0) {\n    phVar7 = table->free_entry_list;\n    while (phVar7 != (hash_entry *)0x0) {\n      phVar7 = phVar7->next;\n      (*(code *)PTR_free_0003e558)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return pvVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return (void *)0x0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "_Bool _Var4;" type_identifier identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "Hash_tuning *pHVar6;" type_identifier (pointer_declarator "*pHVar6" * identifier) ;) (declaration "hash_entry *phVar7;" type_identifier (pointer_declarator "*phVar7" * identifier) ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "float fVar11;" primitive_type identifier ;) (declaration "hash_entry *bucket;" type_identifier (pointer_declarator "*bucket" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0003e550;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0003e550" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0003e550;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0003e550" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003e550" * (cast_expression "(int *)PTR___stack_chk_guard_0003e550" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pvVar2 = hash_find_entry(table,entry,&bucket,true);" (assignment_expression "pvVar2 = hash_find_entry(table,entry,&bucket,true)" identifier = (call_expression "hash_find_entry(table,entry,&bucket,true)" identifier (argument_list "(table,entry,&bucket,true)" ( identifier , identifier , (pointer_expression "&bucket" & identifier) , true )))) ;) (if_statement "if ((pvVar2 == (void *)0x0) ||\n     (pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0))\n  goto LAB_0001fbbc;" if (parenthesized_expression "((pvVar2 == (void *)0x0) ||\n     (pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0))" ( (binary_expression "(pvVar2 == (void *)0x0) ||\n     (pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0)" (parenthesized_expression "(pvVar2 == (void *)0x0)" ( (binary_expression "pvVar2 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0)" ( (comma_expression "pvVar5 = bucket->data, table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0" (assignment_expression "pvVar5 = bucket->data" identifier = (field_expression "bucket->data" identifier -> field_identifier)) , (comma_expression "table->n_entries = table->n_entries - 1, pvVar5 != (void *)0x0" (assignment_expression "table->n_entries = table->n_entries - 1" (field_expression "table->n_entries" identifier -> field_identifier) = (binary_expression "table->n_entries - 1" (field_expression "table->n_entries" identifier -> field_identifier) - number_literal)) , (binary_expression "pvVar5 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;)) (expression_statement "sVar3 = table->n_buckets_used - 1;" (assignment_expression "sVar3 = table->n_buckets_used - 1" identifier = (binary_expression "table->n_buckets_used - 1" (field_expression "table->n_buckets_used" identifier -> field_identifier) - number_literal)) ;) (expression_statement "table->n_buckets_used = sVar3;" (assignment_expression "table->n_buckets_used = sVar3" (field_expression "table->n_buckets_used" identifier -> field_identifier) = identifier) ;) (if_statement "if ((int)sVar3 < 0) {\n    pHVar6 = table->tuning;\n    fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar8 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;\n  }\n  else {\n    fVar10 = (float)(int)sVar3;\n    pHVar6 = table->tuning;\n    dVar8 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;\n  }" if (parenthesized_expression "((int)sVar3 < 0)" ( (binary_expression "(int)sVar3 < 0" (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    pHVar6 = table->tuning;\n    fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar8 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;\n  }" { (expression_statement "pHVar6 = table->tuning;" (assignment_expression "pHVar6 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (expression_statement "fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));" (assignment_expression "fVar10 = (float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" identifier = (cast_expression "(float)((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (binary_expression "(double)(int)sVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (cast_expression "(double)(int)sVar3" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier)) + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) ))))) )))) ;) (expression_statement "dVar8 = (double)(int)table->n_buckets;" (assignment_expression "dVar8 = (double)(int)table->n_buckets" identifier = (cast_expression "(double)(int)table->n_buckets" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)table->n_buckets" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)))) ;) (if_statement "if ((int)table->n_buckets < 0) goto LAB_0001fd14;" if (parenthesized_expression "((int)table->n_buckets < 0)" ( (binary_expression "(int)table->n_buckets < 0" (cast_expression "(int)table->n_buckets" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)) < number_literal) )) (goto_statement "goto LAB_0001fd14;" goto statement_identifier ;)) (labeled_statement "LAB_0001fc18:\n    if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;" statement_identifier : (if_statement "if ((float)dVar8 * pHVar6->shrink_threshold <= fVar10) goto LAB_0001fbbc;" if (parenthesized_expression "((float)dVar8 * pHVar6->shrink_threshold <= fVar10)" ( (binary_expression "(float)dVar8 * pHVar6->shrink_threshold <= fVar10" (binary_expression "(float)dVar8 * pHVar6->shrink_threshold" (cast_expression "(float)dVar8" ( (type_descriptor "float" primitive_type) ) identifier) * (field_expression "pHVar6->shrink_threshold" identifier -> field_identifier)) <= identifier) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;))) }) (else_clause "else {\n    fVar10 = (float)(int)sVar3;\n    pHVar6 = table->tuning;\n    dVar8 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;\n  }" else (compound_statement "{\n    fVar10 = (float)(int)sVar3;\n    pHVar6 = table->tuning;\n    dVar8 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;\n  }" { (expression_statement "fVar10 = (float)(int)sVar3;" (assignment_expression "fVar10 = (float)(int)sVar3" identifier = (cast_expression "(float)(int)sVar3" ( (type_descriptor "float" primitive_type) ) (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pHVar6 = table->tuning;" (assignment_expression "pHVar6 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (expression_statement "dVar8 = (double)(int)table->n_buckets;" (assignment_expression "dVar8 = (double)(int)table->n_buckets" identifier = (cast_expression "(double)(int)table->n_buckets" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)table->n_buckets" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)))) ;) (if_statement "if (-1 < (int)table->n_buckets) goto LAB_0001fc18;" if (parenthesized_expression "(-1 < (int)table->n_buckets)" ( (binary_expression "-1 < (int)table->n_buckets" number_literal < (cast_expression "(int)table->n_buckets" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier))) )) (goto_statement "goto LAB_0001fc18;" goto statement_identifier ;)) (labeled_statement "LAB_0001fd14:\n    if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;" statement_identifier : (if_statement "if ((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10) goto LAB_0001fbbc;" if (parenthesized_expression "((float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10)" ( (binary_expression "(float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold <=\n        fVar10" (binary_expression "(float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * pHVar6->shrink_threshold" (cast_expression "(float)(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (binary_expression "dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) ))))) ))) * (field_expression "pHVar6->shrink_threshold" identifier -> field_identifier)) <= identifier) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;))) }))) (expression_statement "check_tuning((Hash_table *)&table->tuning);" (call_expression "check_tuning((Hash_table *)&table->tuning)" identifier (argument_list "((Hash_table *)&table->tuning)" ( (cast_expression "(Hash_table *)&table->tuning" ( (type_descriptor "Hash_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&table->tuning" & (field_expression "table->tuning" identifier -> field_identifier))) ))) ;) (expression_statement "pHVar6 = table->tuning;" (assignment_expression "pHVar6 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (expression_statement "dVar8 = (double)(int)table->n_buckets;" (assignment_expression "dVar8 = (double)(int)table->n_buckets" identifier = (cast_expression "(double)(int)table->n_buckets" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)table->n_buckets" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)))) ;) (if_statement "if ((int)table->n_buckets < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" if (parenthesized_expression "((int)table->n_buckets < 0)" ( (binary_expression "(int)table->n_buckets < 0" (cast_expression "(int)table->n_buckets" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)) < number_literal) )) (compound_statement "{\n    dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" { (expression_statement "dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar8 = dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier = (binary_expression "dVar8 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) )))))) ;) })) (expression_statement "dVar9 = (double)(int)table->n_buckets_used;" (assignment_expression "dVar9 = (double)(int)table->n_buckets_used" identifier = (cast_expression "(double)(int)table->n_buckets_used" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)table->n_buckets_used" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets_used" identifier -> field_identifier)))) ;) (if_statement "if ((int)table->n_buckets_used < 0) {\n    dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" if (parenthesized_expression "((int)table->n_buckets_used < 0)" ( (binary_expression "(int)table->n_buckets_used < 0" (cast_expression "(int)table->n_buckets_used" ( (type_descriptor "int" primitive_type) ) (field_expression "table->n_buckets_used" identifier -> field_identifier)) < number_literal) )) (compound_statement "{\n    dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" { (expression_statement "dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar9 = dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier = (binary_expression "dVar9 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) )))))) ;) })) (if_statement "if ((float)dVar8 * pHVar6->shrink_threshold <= (float)dVar9) goto LAB_0001fbbc;" if (parenthesized_expression "((float)dVar8 * pHVar6->shrink_threshold <= (float)dVar9)" ( (binary_expression "(float)dVar8 * pHVar6->shrink_threshold <= (float)dVar9" (binary_expression "(float)dVar8 * pHVar6->shrink_threshold" (cast_expression "(float)dVar8" ( (type_descriptor "float" primitive_type) ) identifier) * (field_expression "pHVar6->shrink_threshold" identifier -> field_identifier)) <= (cast_expression "(float)dVar9" ( (type_descriptor "float" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;)) (expression_statement "fVar10 = (float)dVar8 * pHVar6->shrink_factor;" (assignment_expression "fVar10 = (float)dVar8 * pHVar6->shrink_factor" identifier = (binary_expression "(float)dVar8 * pHVar6->shrink_factor" (cast_expression "(float)dVar8" ( (type_descriptor "float" primitive_type) ) identifier) * (field_expression "pHVar6->shrink_factor" identifier -> field_identifier))) ;) (if_statement "if (pHVar6->is_n_buckets == false) {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar10 = fVar10 * pHVar6->growth_threshold;\n    if (fVar11 <= fVar10) goto LAB_0001fcbc;\nLAB_0001fd84:\n    sVar3 = (size_t)fVar10;\n  }\n  else {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar10 < fVar11) goto LAB_0001fd84;\nLAB_0001fcbc:\n    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;\n  }" if (parenthesized_expression "(pHVar6->is_n_buckets == false)" ( (binary_expression "pHVar6->is_n_buckets == false" (field_expression "pHVar6->is_n_buckets" identifier -> field_identifier) == false) )) (compound_statement "{\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar10 = fVar10 * pHVar6->growth_threshold;\n    if (fVar11 <= fVar10) goto LAB_0001fcbc;\nLAB_0001fd84:\n    sVar3 = (size_t)fVar10;\n  }" { (expression_statement "fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" identifier = (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" * (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" identifier + number_literal) ))))) ;) (expression_statement "fVar10 = fVar10 * pHVar6->growth_threshold;" (assignment_expression "fVar10 = fVar10 * pHVar6->growth_threshold" identifier = (binary_expression "fVar10 * pHVar6->growth_threshold" identifier * (field_expression "pHVar6->growth_threshold" identifier -> field_identifier))) ;) (if_statement "if (fVar11 <= fVar10) goto LAB_0001fcbc;" if (parenthesized_expression "(fVar11 <= fVar10)" ( (binary_expression "fVar11 <= fVar10" identifier <= identifier) )) (goto_statement "goto LAB_0001fcbc;" goto statement_identifier ;)) (labeled_statement "LAB_0001fd84:\n    sVar3 = (size_t)fVar10;" statement_identifier : (expression_statement "sVar3 = (size_t)fVar10;" (assignment_expression "sVar3 = (size_t)fVar10" identifier = (cast_expression "(size_t)fVar10" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;)) }) (else_clause "else {\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar10 < fVar11) goto LAB_0001fd84;\nLAB_0001fcbc:\n    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;\n  }" else (compound_statement "{\n    fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar10 < fVar11) goto LAB_0001fd84;\nLAB_0001fcbc:\n    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;\n  }" { (expression_statement "fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar11 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" identifier = (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" * (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" identifier + number_literal) ))))) ;) (if_statement "if (fVar10 < fVar11) goto LAB_0001fd84;" if (parenthesized_expression "(fVar10 < fVar11)" ( (binary_expression "fVar10 < fVar11" identifier < identifier) )) (goto_statement "goto LAB_0001fd84;" goto statement_identifier ;)) (labeled_statement "LAB_0001fcbc:\n    sVar3 = (int)(fVar10 - fVar11) | 0x80000000;" statement_identifier : (expression_statement "sVar3 = (int)(fVar10 - fVar11) | 0x80000000;" (assignment_expression "sVar3 = (int)(fVar10 - fVar11) | 0x80000000" identifier = (binary_expression "(int)(fVar10 - fVar11) | 0x80000000" (cast_expression "(int)(fVar10 - fVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar10 - fVar11)" ( (binary_expression "fVar10 - fVar11" identifier - identifier) ))) | number_literal)) ;)) }))) (expression_statement "_Var4 = hash_rehash(table,sVar3);" (assignment_expression "_Var4 = hash_rehash(table,sVar3)" identifier = (call_expression "hash_rehash(table,sVar3)" identifier (argument_list "(table,sVar3)" ( identifier , identifier )))) ;) (if_statement "if (CONCAT31(extraout_var,_Var4) == 0) {\n    phVar7 = table->free_entry_list;\n    while (phVar7 != (hash_entry *)0x0) {\n      phVar7 = phVar7->next;\n      (*(code *)PTR_free_0003e558)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }" if (parenthesized_expression "(CONCAT31(extraout_var,_Var4) == 0)" ( (binary_expression "CONCAT31(extraout_var,_Var4) == 0" (call_expression "CONCAT31(extraout_var,_Var4)" identifier (argument_list "(extraout_var,_Var4)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n    phVar7 = table->free_entry_list;\n    while (phVar7 != (hash_entry *)0x0) {\n      phVar7 = phVar7->next;\n      (*(code *)PTR_free_0003e558)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }" { (expression_statement "phVar7 = table->free_entry_list;" (assignment_expression "phVar7 = table->free_entry_list" identifier = (field_expression "table->free_entry_list" identifier -> field_identifier)) ;) (while_statement "while (phVar7 != (hash_entry *)0x0) {\n      phVar7 = phVar7->next;\n      (*(code *)PTR_free_0003e558)();\n    }" while (parenthesized_expression "(phVar7 != (hash_entry *)0x0)" ( (binary_expression "phVar7 != (hash_entry *)0x0" identifier != (cast_expression "(hash_entry *)0x0" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      phVar7 = phVar7->next;\n      (*(code *)PTR_free_0003e558)();\n    }" { (expression_statement "phVar7 = phVar7->next;" (assignment_expression "phVar7 = phVar7->next" identifier = (field_expression "phVar7->next" identifier -> field_identifier)) ;) (expression_statement "(*(code *)PTR_free_0003e558)();" (call_expression "(*(code *)PTR_free_0003e558)()" (parenthesized_expression "(*(code *)PTR_free_0003e558)" ( (pointer_expression "*(code *)PTR_free_0003e558" * (cast_expression "(code *)PTR_free_0003e558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "table->free_entry_list = (hash_entry *)0x0;" (assignment_expression "table->free_entry_list = (hash_entry *)0x0" (field_expression "table->free_entry_list" identifier -> field_identifier) = (cast_expression "(hash_entry *)0x0" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (labeled_statement "LAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return pvVar2;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return pvVar2;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return pvVar2;\n  }" { (return_statement "return pvVar2;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e518)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e518)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e518)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003e518" * (cast_expression "(code *)PTR___stack_chk_fail_0003e518" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (void *)0x0;" return (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })))
(translation_unit "int hash_delete(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}\n\n" (function_definition "int hash_delete(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}" primitive_type (function_declarator "hash_delete(int param_1,undefined4 param_2)" identifier (parameter_list "(int param_1,undefined4 param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "float *pfVar4;" primitive_type (pointer_declarator "*pfVar4" * identifier) ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "float fVar8;" primitive_type identifier ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0003e550;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0003e550" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0003e550;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0003e550" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003e550" * (cast_expression "(int *)PTR___stack_chk_guard_0003e550" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);" (assignment_expression "iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1)" identifier = (call_expression "FUN_0001e7a0(param_1,param_2,&local_20,1)" identifier (argument_list "(param_1,param_2,&local_20,1)" ( identifier , identifier , (pointer_expression "&local_20" & identifier) , number_literal )))) ;) (if_statement "if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;" if (parenthesized_expression "((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))" ( (binary_expression "(iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" ( (comma_expression "iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0" (assignment_expression "iVar3 = *local_20" identifier = (pointer_expression "*local_20" * identifier)) , (comma_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x10) + -1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal)) , (binary_expression "iVar3 != 0" identifier != number_literal))) ))) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;)) (expression_statement "iVar3 = *(int *)(param_1 + 0xc) + -1;" (assignment_expression "iVar3 = *(int *)(param_1 + 0xc) + -1" identifier = (binary_expression "*(int *)(param_1 + 0xc) + -1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0xc) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar3" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }" { (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" identifier = (pointer_expression "*(float **)(param_1 + 0x14)" * (cast_expression "(float **)(param_1 + 0x14)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));" (assignment_expression "fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" identifier = (cast_expression "(float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (binary_expression "(double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (cast_expression "(double)iVar3" ( (type_descriptor "double" primitive_type) ) identifier) + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) ))))) )))) ;) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" identifier = (cast_expression "(double)*(int *)(param_1 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;" if (parenthesized_expression "(*(int *)(param_1 + 8) < 0)" ( (binary_expression "*(int *)(param_1 + 8) < 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_0001fd14;" goto statement_identifier ;)) (labeled_statement "LAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;" statement_identifier : (if_statement "if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;" if (parenthesized_expression "((float)dVar5 * *pfVar4 <= fVar8)" ( (binary_expression "(float)dVar5 * *pfVar4 <= fVar8" (binary_expression "(float)dVar5 * *pfVar4" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;))) }) (else_clause "else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" else (compound_statement "{\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" { (expression_statement "fVar8 = (float)iVar3;" (assignment_expression "fVar8 = (float)iVar3" identifier = (cast_expression "(float)iVar3" ( (type_descriptor "float" primitive_type) ) identifier)) ;) (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" identifier = (pointer_expression "*(float **)(param_1 + 0x14)" * (cast_expression "(float **)(param_1 + 0x14)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" identifier = (cast_expression "(double)*(int *)(param_1 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (if_statement "if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;" if (parenthesized_expression "(-1 < *(int *)(param_1 + 8))" ( (binary_expression "-1 < *(int *)(param_1 + 8)" number_literal < (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (goto_statement "goto LAB_0001fc18;" goto statement_identifier ;)) (labeled_statement "LAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;" statement_identifier : (if_statement "if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;" if (parenthesized_expression "((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)" ( (binary_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8" (binary_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4" (cast_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" ( (binary_expression "dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) ))))) ))) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;))) }))) (expression_statement "FUN_0001e8e8(param_1 + 0x14);" (call_expression "FUN_0001e8e8(param_1 + 0x14)" identifier (argument_list "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))) ;) (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" identifier = (pointer_expression "*(float **)(param_1 + 0x14)" * (cast_expression "(float **)(param_1 + 0x14)" ( (type_descriptor "float **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" identifier = (cast_expression "(double)*(int *)(param_1 + 8)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 8) < 0)" ( (binary_expression "*(int *)(param_1 + 8) < 0" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" { (expression_statement "dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier = (binary_expression "dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) )))))) ;) })) (expression_statement "dVar7 = (double)*(int *)(param_1 + 0xc);" (assignment_expression "dVar7 = (double)*(int *)(param_1 + 0xc)" identifier = (cast_expression "(double)*(int *)(param_1 + 0xc)" ( (type_descriptor "double" primitive_type) ) (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))))) ;) (if_statement "if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) < 0)" ( (binary_expression "*(int *)(param_1 + 0xc) < 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" { (expression_statement "dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier = (binary_expression "dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" identifier + (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" * (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" identifier + number_literal) )))))) ;) })) (if_statement "if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;" if (parenthesized_expression "((float)dVar5 * *pfVar4 <= (float)dVar7)" ( (binary_expression "(float)dVar5 * *pfVar4 <= (float)dVar7" (binary_expression "(float)dVar5 * *pfVar4" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0001fbbc;" goto statement_identifier ;)) (expression_statement "fVar8 = (float)dVar5 * pfVar4[1];" (assignment_expression "fVar8 = (float)dVar5 * pfVar4[1]" identifier = (binary_expression "(float)dVar5 * pfVar4[1]" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) * (subscript_expression "pfVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" if (parenthesized_expression "(*(char *)(pfVar4 + 4) == '\0')" ( (binary_expression "*(char *)(pfVar4 + 4) == '\0'" (pointer_expression "*(char *)(pfVar4 + 4)" * (cast_expression "(char *)(pfVar4 + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pfVar4 + 4)" ( (binary_expression "pfVar4 + 4" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }" { (expression_statement "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" identifier = (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" * (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" identifier + number_literal) ))))) ;) (expression_statement "fVar8 = fVar8 * pfVar4[2];" (assignment_expression "fVar8 = fVar8 * pfVar4[2]" identifier = (binary_expression "fVar8 * pfVar4[2]" identifier * (subscript_expression "pfVar4[2]" identifier [ number_literal ]))) ;) (if_statement "if (fVar9 <= fVar8) goto LAB_0001fcbc;" if (parenthesized_expression "(fVar9 <= fVar8)" ( (binary_expression "fVar9 <= fVar8" identifier <= identifier) )) (goto_statement "goto LAB_0001fcbc;" goto statement_identifier ;)) (labeled_statement "LAB_0001fd84:\n    uVar6 = (uint)fVar8;" statement_identifier : (expression_statement "uVar6 = (uint)fVar8;" (assignment_expression "uVar6 = (uint)fVar8" identifier = (cast_expression "(uint)fVar8" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) }) (else_clause "else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" else (compound_statement "{\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" { (expression_statement "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" identifier = (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" * (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" ( (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" identifier + number_literal) ))))) ;) (if_statement "if (fVar8 < fVar9) goto LAB_0001fd84;" if (parenthesized_expression "(fVar8 < fVar9)" ( (binary_expression "fVar8 < fVar9" identifier < identifier) )) (goto_statement "goto LAB_0001fd84;" goto statement_identifier ;)) (labeled_statement "LAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;" statement_identifier : (expression_statement "uVar6 = (int)(fVar8 - fVar9) | 0x80000000;" (assignment_expression "uVar6 = (int)(fVar8 - fVar9) | 0x80000000" identifier = (binary_expression "(int)(fVar8 - fVar9) | 0x80000000" (cast_expression "(int)(fVar8 - fVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar8 - fVar9)" ( (binary_expression "fVar8 - fVar9" identifier - identifier) ))) | number_literal)) ;)) }))) (expression_statement "iVar3 = hash_rehash(param_1,uVar6);" (assignment_expression "iVar3 = hash_rehash(param_1,uVar6)" identifier = (call_expression "hash_rehash(param_1,uVar6)" identifier (argument_list "(param_1,uVar6)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }" { (expression_statement "iVar3 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24)" identifier = (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (while_statement "while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }" while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }" { (expression_statement "iVar3 = *(int *)(iVar3 + 4);" (assignment_expression "iVar3 = *(int *)(iVar3 + 4)" identifier = (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) ))))) ;) (expression_statement "(*(code *)PTR_free_0003e558)();" (call_expression "(*(code *)PTR_free_0003e558)()" (parenthesized_expression "(*(code *)PTR_free_0003e558)" ( (pointer_expression "*(code *)PTR_free_0003e558" * (cast_expression "(code *)PTR_free_0003e558" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(param_1 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x24) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x24)" * (cast_expression "(undefined4 *)(param_1 + 0x24)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = number_literal) ;) })) (labeled_statement "LAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" statement_identifier : (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" if (parenthesized_expression "(local_1c == *(int *)puVar1)" ( (binary_expression "local_1c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar2;\n  }" { (return_statement "return iVar2;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e518)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e518)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e518)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003e518" * (cast_expression "(code *)PTR___stack_chk_fail_0003e518" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression & IDENT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) , (binary_expression IDENT != LIT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (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) )))) < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (pointer_expression * IDENT)) <= IDENT) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (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) ))))) ))) * (pointer_expression * IDENT)) <= IDENT) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (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) )))) < 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 = (cast_expression ( (type_descriptor TYPE) ) (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) )))) < 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) )))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (pointer_expression * IDENT)) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (subscript_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) | LIT)) ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (return_statement return LIT ;) })))
(function_definition "int hash_delete(int param_1,undefined4 param_2)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}" (primitive_type "int") (function_declarator "hash_delete(int param_1,undefined4 param_2)" (identifier "hash_delete") (parameter_list "(int param_1,undefined4 param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  float *pfVar4;\n  double dVar5;\n  uint uVar6;\n  float fVar8;\n  double dVar7;\n  float fVar9;\n  int *local_20;\n  int local_1c;\n  \n  puVar1 = PTR___stack_chk_guard_0003e550;\n  local_1c = *(int *)PTR___stack_chk_guard_0003e550;\n  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);\n  if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }\n  FUN_0001e8e8(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar5 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  dVar7 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }\n  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;\n  fVar8 = (float)dVar5 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,uVar6);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }\n  (*(code *)PTR___stack_chk_fail_0003e518)();\n  return 0;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "float *pfVar4;" (primitive_type "float") (pointer_declarator "*pfVar4" (* "*") (identifier "pfVar4")) (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "float fVar8;" (primitive_type "float") (identifier "fVar8") (; ";")) (declaration "double dVar7;" (primitive_type "double") (identifier "dVar7") (; ";")) (declaration "float fVar9;" (primitive_type "float") (identifier "fVar9") (; ";")) (declaration "int *local_20;" (primitive_type "int") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_0003e550;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0003e550" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_0003e550")) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0003e550;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0003e550" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0003e550" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0003e550" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0003e550")))) (; ";")) (expression_statement "iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);" (assignment_expression "iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1)" (identifier "iVar2") (= "=") (call_expression "FUN_0001e7a0(param_1,param_2,&local_20,1)" (identifier "FUN_0001e7a0") (argument_list "(param_1,param_2,&local_20,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "&local_20" (& "&") (identifier "local_20")) (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if ((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0001fbbc;" (if "if") (parenthesized_expression "((iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))" (( "(") (binary_expression "(iVar2 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" (parenthesized_expression "(iVar2 == 0)" (( "(") (binary_expression "iVar2 == 0" (identifier "iVar2") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" (( "(") (comma_expression "iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0" (assignment_expression "iVar3 = *local_20" (identifier "iVar3") (= "=") (pointer_expression "*local_20" (* "*") (identifier "local_20"))) (, ",") (comma_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x10) + -1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")))) () ")"))) () ")")) (goto_statement "goto LAB_0001fbbc;" (goto "goto") (statement_identifier "LAB_0001fbbc") (; ";"))) (expression_statement "iVar3 = *(int *)(param_1 + 0xc) + -1;" (assignment_expression "iVar3 = *(int *)(param_1 + 0xc) + -1" (identifier "iVar3") (= "=") (binary_expression "*(int *)(param_1 + 0xc) + -1" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0xc) = iVar3;" (assignment_expression "*(int *)(param_1 + 0xc) = iVar3" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }\n  else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" (if "if") (parenthesized_expression "(iVar3 < 0)" (( "(") (binary_expression "iVar3 < 0" (identifier "iVar3") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;\nLAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;\n  }" ({ "{") (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" (identifier "pfVar4") (= "=") (pointer_expression "*(float **)(param_1 + 0x14)" (* "*") (cast_expression "(float **)(param_1 + 0x14)" (( "(") (type_descriptor "float **" (primitive_type "float") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));" (assignment_expression "fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" (identifier "fVar8") (= "=") (cast_expression "(float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" (( "(") (binary_expression "(double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (cast_expression "(double)iVar3" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar3")) (+ "+") (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (* "*") (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x3d30")) () ")"))))) () ")")))) (; ";")) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" (identifier "dVar5") (= "=") (cast_expression "(double)*(int *)(param_1 + 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (if_statement "if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 8) < 0)" (( "(") (binary_expression "*(int *)(param_1 + 8) < 0" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001fd14;" (goto "goto") (statement_identifier "LAB_0001fd14") (; ";"))) (labeled_statement "LAB_0001fc18:\n    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;" (statement_identifier "LAB_0001fc18") (: ":") (if_statement "if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;" (if "if") (parenthesized_expression "((float)dVar5 * *pfVar4 <= fVar8)" (( "(") (binary_expression "(float)dVar5 * *pfVar4 <= fVar8" (binary_expression "(float)dVar5 * *pfVar4" (cast_expression "(float)dVar5" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar5")) (* "*") (pointer_expression "*pfVar4" (* "*") (identifier "pfVar4"))) (<= "<=") (identifier "fVar8")) () ")")) (goto_statement "goto LAB_0001fbbc;" (goto "goto") (statement_identifier "LAB_0001fbbc") (; ";")))) (} "}")) (else_clause "else {\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" (else "else") (compound_statement "{\n    fVar8 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar5 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;\nLAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;\n  }" ({ "{") (expression_statement "fVar8 = (float)iVar3;" (assignment_expression "fVar8 = (float)iVar3" (identifier "fVar8") (= "=") (cast_expression "(float)iVar3" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "iVar3"))) (; ";")) (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" (identifier "pfVar4") (= "=") (pointer_expression "*(float **)(param_1 + 0x14)" (* "*") (cast_expression "(float **)(param_1 + 0x14)" (( "(") (type_descriptor "float **" (primitive_type "float") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" (identifier "dVar5") (= "=") (cast_expression "(double)*(int *)(param_1 + 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (if_statement "if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;" (if "if") (parenthesized_expression "(-1 < *(int *)(param_1 + 8))" (( "(") (binary_expression "-1 < *(int *)(param_1 + 8)" (number_literal "-1") (< "<") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (goto_statement "goto LAB_0001fc18;" (goto "goto") (statement_identifier "LAB_0001fc18") (; ";"))) (labeled_statement "LAB_0001fd14:\n    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;" (statement_identifier "LAB_0001fd14") (: ":") (if_statement "if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)\n    goto LAB_0001fbbc;" (if "if") (parenthesized_expression "((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)" (( "(") (binary_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8" (binary_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4" (cast_expression "(float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30))" (( "(") (binary_expression "dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (identifier "dVar5") (+ "+") (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (* "*") (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x3d30")) () ")"))))) () ")"))) (* "*") (pointer_expression "*pfVar4" (* "*") (identifier "pfVar4"))) (<= "<=") (identifier "fVar8")) () ")")) (goto_statement "goto LAB_0001fbbc;" (goto "goto") (statement_identifier "LAB_0001fbbc") (; ";")))) (} "}")))) (expression_statement "FUN_0001e8e8(param_1 + 0x14);" (call_expression "FUN_0001e8e8(param_1 + 0x14)" (identifier "FUN_0001e8e8") (argument_list "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))) (; ";")) (expression_statement "pfVar4 = *(float **)(param_1 + 0x14);" (assignment_expression "pfVar4 = *(float **)(param_1 + 0x14)" (identifier "pfVar4") (= "=") (pointer_expression "*(float **)(param_1 + 0x14)" (* "*") (cast_expression "(float **)(param_1 + 0x14)" (( "(") (type_descriptor "float **" (primitive_type "float") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "dVar5 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar5 = (double)*(int *)(param_1 + 8)" (identifier "dVar5") (= "=") (cast_expression "(double)*(int *)(param_1 + 8)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (if_statement "if (*(int *)(param_1 + 8) < 0) {\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 8) < 0)" (( "(") (binary_expression "*(int *)(param_1 + 8) < 0" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" ({ "{") (expression_statement "dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (identifier "dVar5") (= "=") (binary_expression "dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (identifier "dVar5") (+ "+") (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (* "*") (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x3d30")) () ")")))))) (; ";")) (} "}"))) (expression_statement "dVar7 = (double)*(int *)(param_1 + 0xc);" (assignment_expression "dVar7 = (double)*(int *)(param_1 + 0xc)" (identifier "dVar7") (= "=") (cast_expression "(double)*(int *)(param_1 + 0xc)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0xc) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xc) < 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) < 0" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);\n  }" ({ "{") (expression_statement "dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);" (assignment_expression "dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (identifier "dVar7") (= "=") (binary_expression "dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (identifier "dVar7") (+ "+") (pointer_expression "*(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (* "*") (cast_expression "(double *)(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3d30)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x3d30" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x3d30")) () ")")))))) (; ";")) (} "}"))) (if_statement "if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;" (if "if") (parenthesized_expression "((float)dVar5 * *pfVar4 <= (float)dVar7)" (( "(") (binary_expression "(float)dVar5 * *pfVar4 <= (float)dVar7" (binary_expression "(float)dVar5 * *pfVar4" (cast_expression "(float)dVar5" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar5")) (* "*") (pointer_expression "*pfVar4" (* "*") (identifier "pfVar4"))) (<= "<=") (cast_expression "(float)dVar7" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar7"))) () ")")) (goto_statement "goto LAB_0001fbbc;" (goto "goto") (statement_identifier "LAB_0001fbbc") (; ";"))) (expression_statement "fVar8 = (float)dVar5 * pfVar4[1];" (assignment_expression "fVar8 = (float)dVar5 * pfVar4[1]" (identifier "fVar8") (= "=") (binary_expression "(float)dVar5 * pfVar4[1]" (cast_expression "(float)dVar5" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar5")) (* "*") (subscript_expression "pfVar4[1]" (identifier "pfVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }\n  else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" (if "if") (parenthesized_expression "(*(char *)(pfVar4 + 4) == '\0')" (( "(") (binary_expression "*(char *)(pfVar4 + 4) == '\0'" (pointer_expression "*(char *)(pfVar4 + 4)" (* "*") (cast_expression "(char *)(pfVar4 + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pfVar4 + 4)" (( "(") (binary_expression "pfVar4 + 4" (identifier "pfVar4") (+ "+") (number_literal "4")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    fVar8 = fVar8 * pfVar4[2];\n    if (fVar9 <= fVar8) goto LAB_0001fcbc;\nLAB_0001fd84:\n    uVar6 = (uint)fVar8;\n  }" ({ "{") (expression_statement "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" (identifier "fVar9") (= "=") (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" (* "*") (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x3ba4")) () ")"))))) (; ";")) (expression_statement "fVar8 = fVar8 * pfVar4[2];" (assignment_expression "fVar8 = fVar8 * pfVar4[2]" (identifier "fVar8") (= "=") (binary_expression "fVar8 * pfVar4[2]" (identifier "fVar8") (* "*") (subscript_expression "pfVar4[2]" (identifier "pfVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (fVar9 <= fVar8) goto LAB_0001fcbc;" (if "if") (parenthesized_expression "(fVar9 <= fVar8)" (( "(") (binary_expression "fVar9 <= fVar8" (identifier "fVar9") (<= "<=") (identifier "fVar8")) () ")")) (goto_statement "goto LAB_0001fcbc;" (goto "goto") (statement_identifier "LAB_0001fcbc") (; ";"))) (labeled_statement "LAB_0001fd84:\n    uVar6 = (uint)fVar8;" (statement_identifier "LAB_0001fd84") (: ":") (expression_statement "uVar6 = (uint)fVar8;" (assignment_expression "uVar6 = (uint)fVar8" (identifier "uVar6") (= "=") (cast_expression "(uint)fVar8" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar8"))) (; ";"))) (} "}")) (else_clause "else {\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" (else "else") (compound_statement "{\n    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);\n    if (fVar8 < fVar9) goto LAB_0001fd84;\nLAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;\n  }" ({ "{") (expression_statement "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);" (assignment_expression "fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" (identifier "fVar9") (= "=") (pointer_expression "*(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" (* "*") (cast_expression "(float *)(PTR_DAT_0003e1b8 + -0x3ba4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e1b8 + -0x3ba4)" (( "(") (binary_expression "PTR_DAT_0003e1b8 + -0x3ba4" (identifier "PTR_DAT_0003e1b8") (+ "+") (number_literal "-0x3ba4")) () ")"))))) (; ";")) (if_statement "if (fVar8 < fVar9) goto LAB_0001fd84;" (if "if") (parenthesized_expression "(fVar8 < fVar9)" (( "(") (binary_expression "fVar8 < fVar9" (identifier "fVar8") (< "<") (identifier "fVar9")) () ")")) (goto_statement "goto LAB_0001fd84;" (goto "goto") (statement_identifier "LAB_0001fd84") (; ";"))) (labeled_statement "LAB_0001fcbc:\n    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;" (statement_identifier "LAB_0001fcbc") (: ":") (expression_statement "uVar6 = (int)(fVar8 - fVar9) | 0x80000000;" (assignment_expression "uVar6 = (int)(fVar8 - fVar9) | 0x80000000" (identifier "uVar6") (= "=") (binary_expression "(int)(fVar8 - fVar9) | 0x80000000" (cast_expression "(int)(fVar8 - fVar9)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(fVar8 - fVar9)" (( "(") (binary_expression "fVar8 - fVar9" (identifier "fVar8") (- "-") (identifier "fVar9")) () ")"))) (| "|") (number_literal "0x80000000"))) (; ";"))) (} "}")))) (expression_statement "iVar3 = hash_rehash(param_1,uVar6);" (assignment_expression "iVar3 = hash_rehash(param_1,uVar6)" (identifier "iVar3") (= "=") (call_expression "hash_rehash(param_1,uVar6)" (identifier "hash_rehash") (argument_list "(param_1,uVar6)" (( "(") (identifier "param_1") (, ",") (identifier "uVar6") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }" ({ "{") (expression_statement "iVar3 = *(int *)(param_1 + 0x24);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x24)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (while_statement "while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }" (while "while") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_0003e558)();\n    }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar3 + 4);" (assignment_expression "iVar3 = *(int *)(iVar3 + 4)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar3 + 4)" (* "*") (cast_expression "(int *)(iVar3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "(*(code *)PTR_free_0003e558)();" (call_expression "(*(code *)PTR_free_0003e558)()" (parenthesized_expression "(*(code *)PTR_free_0003e558)" (( "(") (pointer_expression "*(code *)PTR_free_0003e558" (* "*") (cast_expression "(code *)PTR_free_0003e558" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e558"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(param_1 + 0x24) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x24) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x24)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x24)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (labeled_statement "LAB_0001fbbc:\n  if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" (statement_identifier "LAB_0001fbbc") (: ":") (if_statement "if (local_1c == *(int *)puVar1) {\n    return iVar2;\n  }" (if "if") (parenthesized_expression "(local_1c == *(int *)puVar1)" (( "(") (binary_expression "local_1c == *(int *)puVar1" (identifier "local_1c") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return iVar2;\n  }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e518)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e518)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e518)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0003e518" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0003e518" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0003e518"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

void * function_1(type_1 *table,void *entry)

{
  type_2 *puVar1;
  type_3 extraout_var;
  void *var_2;
  size_t sVar3;
  type_4 _Var4;
  void *var_3;
  type_5 *pHVar6;
  type_6 *var_12;
  double var_6;
  float var_5;
  double var_8;
  float var_9;
  type_6 *bucket;
  int var_13;
  
  puVar1 = PTR___stack_chk_guard_0003e550;
  var_13 = *(int *)PTR___stack_chk_guard_0003e550;
  var_2 = var_1(table,entry,&bucket,true);
  if ((var_2 == (void *)0x0) ||
     (var_3 = bucket->data, table->n_entries = table->n_entries - 1, var_3 != (void *)0x0))
  goto LAB_0001fbbc;
  sVar3 = table->n_buckets_used - 1;
  table->n_buckets_used = sVar3;
  if ((int)sVar3 < 0) {
    pHVar6 = table->tuning;
    var_5 = (float)((double)(int)sVar3 + *(double *)(var_4 + -0x3d30));
    var_6 = (double)(int)table->n_buckets;
    if ((int)table->n_buckets < 0) goto LAB_0001fd14;
LAB_0001fc18:
    if ((float)var_6 * pHVar6->shrink_threshold <= var_5) goto LAB_0001fbbc;
  }
  else {
    var_5 = (float)(int)sVar3;
    pHVar6 = table->tuning;
    var_6 = (double)(int)table->n_buckets;
    if (-1 < (int)table->n_buckets) goto LAB_0001fc18;
LAB_0001fd14:
    if ((float)(var_6 + *(double *)(var_4 + -0x3d30)) * pHVar6->shrink_threshold <=
        var_5) goto LAB_0001fbbc;
  }
  var_7((type_1 *)&table->tuning);
  pHVar6 = table->tuning;
  var_6 = (double)(int)table->n_buckets;
  if ((int)table->n_buckets < 0) {
    var_6 = var_6 + *(double *)(var_4 + -0x3d30);
  }
  var_8 = (double)(int)table->n_buckets_used;
  if ((int)table->n_buckets_used < 0) {
    var_8 = var_8 + *(double *)(var_4 + -0x3d30);
  }
  if ((float)var_6 * pHVar6->shrink_threshold <= (float)var_8) goto LAB_0001fbbc;
  var_5 = (float)var_6 * pHVar6->shrink_factor;
  if (pHVar6->is_n_buckets == false) {
    var_9 = *(float *)(var_4 + -0x3ba4);
    var_5 = var_5 * pHVar6->growth_threshold;
    if (var_9 <= var_5) goto LAB_0001fcbc;
LAB_0001fd84:
    sVar3 = (size_t)var_5;
  }
  else {
    var_9 = *(float *)(var_4 + -0x3ba4);
    if (var_5 < var_9) goto LAB_0001fd84;
LAB_0001fcbc:
    sVar3 = (int)(var_5 - var_9) | 0x80000000;
  }
  _Var4 = var_10(table,sVar3);
  if (var_11(extraout_var,_Var4) == 0) {
    var_12 = table->free_entry_list;
    while (var_12 != (type_6 *)0x0) {
      var_12 = var_12->next;
      (*(type_7 *)PTR_free_0003e558)();
    }
    table->free_entry_list = (type_6 *)0x0;
  }
LAB_0001fbbc:
  if (var_13 == *(int *)puVar1) {
    return var_2;
  }
  (*(type_7 *)PTR___stack_chk_fail_0003e518)();
  return (void *)0x0;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (identifier)) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (comma_expression left: (assignment_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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_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))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (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)))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (identifier))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (number_literal) 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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (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: (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: (pointer_expression argument: (identifier))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (subscript_expression argument: (identifier) index: (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: (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: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (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: (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: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (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: (identifier)))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_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))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_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 (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) (labeled_statement label: (statement_identifier) (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: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (return_statement (number_literal)))))

int MASKED(int param_1,undefined4 param_2)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  float *pfVar4;
  double dVar5;
  uint uVar6;
  float fVar8;
  double dVar7;
  float fVar9;
  int *local_20;
  int local_1c;
  
  puVar1 = PTR___stack_chk_guard_0003e550;
  local_1c = *(int *)PTR___stack_chk_guard_0003e550;
  iVar2 = FUN_0001e7a0(param_1,param_2,&local_20,1);
  if ((iVar2 == 0) ||
     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))
  goto LAB_0001fbbc;
  iVar3 = *(int *)(param_1 + 0xc) + -1;
  *(int *)(param_1 + 0xc) = iVar3;
  if (iVar3 < 0) {
    pfVar4 = *(float **)(param_1 + 0x14);
    fVar8 = (float)((double)iVar3 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30));
    dVar5 = (double)*(int *)(param_1 + 8);
    if (*(int *)(param_1 + 8) < 0) goto LAB_0001fd14;
LAB_0001fc18:
    if ((float)dVar5 * *pfVar4 <= fVar8) goto LAB_0001fbbc;
  }
  else {
    fVar8 = (float)iVar3;
    pfVar4 = *(float **)(param_1 + 0x14);
    dVar5 = (double)*(int *)(param_1 + 8);
    if (-1 < *(int *)(param_1 + 8)) goto LAB_0001fc18;
LAB_0001fd14:
    if ((float)(dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30)) * *pfVar4 <= fVar8)
    goto LAB_0001fbbc;
  }
  FUN_0001e8e8(param_1 + 0x14);
  pfVar4 = *(float **)(param_1 + 0x14);
  dVar5 = (double)*(int *)(param_1 + 8);
  if (*(int *)(param_1 + 8) < 0) {
    dVar5 = dVar5 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);
  }
  dVar7 = (double)*(int *)(param_1 + 0xc);
  if (*(int *)(param_1 + 0xc) < 0) {
    dVar7 = dVar7 + *(double *)(PTR_DAT_0003e1b8 + -0x3d30);
  }
  if ((float)dVar5 * *pfVar4 <= (float)dVar7) goto LAB_0001fbbc;
  fVar8 = (float)dVar5 * pfVar4[1];
  if (*(char *)(pfVar4 + 4) == '\0') {
    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);
    fVar8 = fVar8 * pfVar4[2];
    if (fVar9 <= fVar8) goto LAB_0001fcbc;
LAB_0001fd84:
    uVar6 = (uint)fVar8;
  }
  else {
    fVar9 = *(float *)(PTR_DAT_0003e1b8 + -0x3ba4);
    if (fVar8 < fVar9) goto LAB_0001fd84;
LAB_0001fcbc:
    uVar6 = (int)(fVar8 - fVar9) | 0x80000000;
  }
  iVar3 = hash_rehash(param_1,uVar6);
  if (iVar3 == 0) {
    iVar3 = *(int *)(param_1 + 0x24);
    while (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 4);
      (*(code *)PTR_free_0003e558)();
    }
    *(undefined4 *)(param_1 + 0x24) = 0;
  }
LAB_0001fbbc:
  if (local_1c == *(int *)puVar1) {
    return iVar2;
  }
  (*(code *)PTR___stack_chk_fail_0003e518)();
  return 0;
}

