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

{
  undefined3 extraout_var;
  void *pvVar1;
  _Bool _Var3;
  size_t sVar2;
  void *pvVar4;
  Hash_tuning *pHVar5;
  void *extraout_v1;
  hash_entry *phVar6;
  undefined4 *puVar7;
  undefined *puVar8;
  double dVar9;
  float fVar11;
  double dVar10;
  float fVar12;
  hash_entry *bucket;
  undefined4 *local_1c;
  
  puVar8 = PTR___stack_chk_guard_000495fc;
  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;
  pvVar1 = hash_find_entry(table,entry,&bucket,true);
  if ((pvVar1 == (void *)0x0) ||
     (pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0))
  goto LAB_0002172c;
  sVar2 = table->n_buckets_used - 1;
  table->n_buckets_used = sVar2;
  if ((int)sVar2 < 0) {
    pHVar5 = table->tuning;
    fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0));
    dVar9 = (double)(int)table->n_buckets;
    if ((int)table->n_buckets < 0) goto LAB_00021884;
LAB_00021788:
    if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;
  }
  else {
    fVar11 = (float)(int)sVar2;
    pHVar5 = table->tuning;
    dVar9 = (double)(int)table->n_buckets;
    if (-1 < (int)table->n_buckets) goto LAB_00021788;
LAB_00021884:
    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11
       ) goto LAB_0002172c;
  }
  check_tuning((Hash_table *)&table->tuning);
  pHVar5 = table->tuning;
  dVar9 = (double)(int)table->n_buckets;
  if ((int)table->n_buckets < 0) {
    dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0);
  }
  dVar10 = (double)(int)table->n_buckets_used;
  if ((int)table->n_buckets_used < 0) {
    dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0);
  }
  if ((float)dVar9 * pHVar5->shrink_threshold <= (float)dVar10) goto LAB_0002172c;
  fVar11 = (float)dVar9 * pHVar5->shrink_factor;
  if (pHVar5->is_n_buckets == false) {
    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);
    fVar11 = fVar11 * pHVar5->growth_threshold;
    if (fVar12 <= fVar11) goto LAB_0002182c;
LAB_000218f4:
    entry = (void *)(int)fVar11;
  }
  else {
    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);
    if (fVar11 < fVar12) goto LAB_000218f4;
LAB_0002182c:
    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);
  }
  _Var3 = hash_rehash(table,(size_t)entry);
  if (CONCAT31(extraout_var,_Var3) == 0) {
    phVar6 = table->free_entry_list;
    while (phVar6 != (hash_entry *)0x0) {
      phVar6 = phVar6->next;
      (*(code *)PTR_free_00049608)();
    }
    table->free_entry_list = (hash_entry *)0x0;
  }
LAB_0002172c:
  if (local_1c == *(undefined4 **)puVar8) {
    return pvVar1;
  }
  puVar7 = local_1c;
  puVar8 = PTR___stack_chk_fail_000495d0;
  (*(code *)PTR___stack_chk_fail_000495d0)();
  puVar8 = puVar8 + 0x2f8d0;
  sVar2 = hash_pjw((void *)*puVar7,(size_t)entry);
  __umoddi3(puVar7[2],puVar7[3] ^ sVar2,0,entry,puVar8);
  return extraout_v1;
}



int hash_delete(int param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  float *pfVar4;
  int extraout_v1;
  undefined4 *puVar5;
  undefined *puVar6;
  double dVar7;
  float fVar9;
  double dVar8;
  float fVar10;
  int *local_20;
  undefined4 *local_1c;
  
  puVar6 = PTR___stack_chk_guard_000495fc;
  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;
  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);
  if ((iVar1 == 0) ||
     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))
  goto LAB_0002172c;
  iVar3 = *(int *)(param_1 + 0xc) + -1;
  *(int *)(param_1 + 0xc) = iVar3;
  if (iVar3 < 0) {
    pfVar4 = *(float **)(param_1 + 0x14);
    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));
    dVar7 = (double)*(int *)(param_1 + 8);
    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;
LAB_00021788:
    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;
  }
  else {
    fVar9 = (float)iVar3;
    pfVar4 = *(float **)(param_1 + 0x14);
    dVar7 = (double)*(int *)(param_1 + 8);
    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;
LAB_00021884:
    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)
    goto LAB_0002172c;
  }
  FUN_00020458(param_1 + 0x14);
  pfVar4 = *(float **)(param_1 + 0x14);
  dVar7 = (double)*(int *)(param_1 + 8);
  if (*(int *)(param_1 + 8) < 0) {
    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);
  }
  dVar8 = (double)*(int *)(param_1 + 0xc);
  if (*(int *)(param_1 + 0xc) < 0) {
    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);
  }
  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;
  fVar9 = (float)dVar7 * pfVar4[1];
  if (*(char *)(pfVar4 + 4) == '\0') {
    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);
    fVar9 = fVar9 * pfVar4[2];
    if (fVar10 <= fVar9) goto LAB_0002182c;
LAB_000218f4:
    param_2 = (uint)fVar9;
  }
  else {
    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);
    if (fVar9 < fVar10) goto LAB_000218f4;
LAB_0002182c:
    param_2 = (int)(fVar9 - fVar10) | 0x80000000;
  }
  iVar3 = hash_rehash(param_1,param_2);
  if (iVar3 == 0) {
    iVar3 = *(int *)(param_1 + 0x24);
    while (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 4);
      (*(code *)PTR_free_00049608)();
    }
    *(undefined4 *)(param_1 + 0x24) = 0;
  }
LAB_0002172c:
  if (local_1c == *(undefined4 **)puVar6) {
    return iVar1;
  }
  puVar5 = local_1c;
  puVar6 = PTR___stack_chk_fail_000495d0;
  (*(code *)PTR___stack_chk_fail_000495d0)();
  puVar6 = puVar6 + 0x2f8d0;
  uVar2 = hash_pjw(*puVar5);
  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);
  return extraout_v1;
}


lui gp,0x3
addiu gp,gp,-0x4d8
addu gp,gp,t9
addiu sp,sp,-0x38
lw t9,-0x7f60(gp)
li a3,0x1
addiu a2,sp,0x18
sw s1,0x28(sp)
addiu t9,t9,0x310
lw s1,-0x7be4(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 0x00020310
_nop
lw gp,0x10(sp)
beq v0,zero,0x0002172c
_or s2,v0,zero
lw v1,0x18(sp)
lw v0,0x10(s0)
lw v1,0x0(v1)
addiu v0,v0,-0x1
beq v1,zero,0x00021758
_sw v0,0x10(s0)
lw a0,0x1c(sp)
or v0,s2,zero
lw v1,0x0(s1)
bne a0,v1,0x00021900
_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,0x000218ac
_cvt.d.W f0,f0
lw v0,0x8(s0)
cvt.s.D f2,f0
lw v1,0x14(s0)
mtc1 v0,f0
bltz v0,0x00021880
_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 0x0002172c
_lw t9,-0x7f60(gp)
addiu t9,t9,0x458
bal 0x00020458
_addiu a0,s0,0x14
lw v1,0x8(s0)
lw gp,0x10(sp)
lw v0,0x14(s0)
mtc1 v1,f0
bgez v1,0x000217d0
_cvt.d.W f0,f0
lw v1,-0x7fc8(gp)
ldc1 f2,0x66f0(v1)
add.D f0,f0,f2
lw v1,0xc(s0)
cvt.s.D f0,f0
mtc1 v1,f2
bgez v1,0x000217f0
_cvt.d.W f2,f2
lw v1,-0x7fc8(gp)
ldc1 f4,0x66f0(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,0x0002172c
_nop
lwc1 f2,0x4(v0)
lbu v1,0x10(v0)
beq v1,zero,0x000218d8
_mul.S f0,f0,f2
lw v0,-0x7fc8(gp)
lwc1 f2,0x66ec(v0)
c.le.S f2,f0
bc1f 0x2,0x000218f4
_nop
sub.S S f0,f0,f2
lui v0,0x8000
trunc.w.S f0,f0
mfc1 a1,f0
or a1,a1,v0
lw t9,-0x7e58(gp)
bal 0x00021118
_or a0,s0,zero
bne v0,zero,0x0002172c
_lw gp,0x10(sp)
lw a0,0x24(s0)
beq a0,zero,0x00021878
_nop
lw t9,-0x7bd8(gp)
jalr t9
_lw s3,0x4(a0)
lw gp,0x10(sp)
bne s3,zero,0x00021860
_or a0,s3,zero
b 0x0002172c
_sw zero,0x24(s0)
lw v0,-0x7fc8(gp)
ldc1 f4,0x66f0(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 0x0002172c
_lw t9,-0x7f60(gp)
b 0x000217a4
_addiu t9,t9,0x458
lw v0,-0x7fc8(gp)
lw v1,0x14(s0)
ldc1 f2,0x66f0(v0)
lw v0,0x8(s0)
add.D f0,f0,f2
cvt.s.D f2,f0
mtc1 v0,f0
bgez v0,0x00021788
_cvt.d.W f0,f0
b 0x00021884
_lw v0,-0x7fc8(gp)
lwc1 f4,0x8(v0)
lw v0,-0x7fc8(gp)
lwc1 f2,0x66ec(v0)
mul.S f0,f0,f4
c.le.S f2,f0
bc1t 0x3,0x0002182c
_nop
trunc.w.S f0,f0
b 0x00021840
_mfc1 a1,f0
lw t9,-0x7c10(gp)
jalr t9
_nop
nop
(translation_unit "int hash_delete(int param_1,uint param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}\n\n" (function_definition "int hash_delete(int param_1,uint param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}" primitive_type (function_declarator "hash_delete(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "float *pfVar4;" primitive_type (pointer_declarator "*pfVar4" * identifier) ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_guard_000495fc;" (assignment_expression "puVar6 = PTR___stack_chk_guard_000495fc" identifier = identifier) ;) (expression_statement "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;" (assignment_expression "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000495fc" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_000495fc" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar1 = FUN_00020310(param_1,param_2,&local_20,1);" (assignment_expression "iVar1 = FUN_00020310(param_1,param_2,&local_20,1)" identifier = (call_expression "FUN_00020310(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 ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;" if (parenthesized_expression "((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))" ( (binary_expression "(iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 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_0002172c;" 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    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\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 "fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));" (assignment_expression "fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" identifier = (cast_expression "(float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (binary_expression "(double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (cast_expression "(double)iVar3" ( (type_descriptor "double" primitive_type) ) identifier) + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) ))))) )))) ;) (expression_statement "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (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_00021884;" 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_00021884;" goto statement_identifier ;)) (labeled_statement "LAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;" statement_identifier : (if_statement "if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;" if (parenthesized_expression "((float)dVar7 * *pfVar4 <= fVar9)" ( (binary_expression "(float)dVar7 * *pfVar4 <= fVar9" (binary_expression "(float)dVar7 * *pfVar4" (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;))) }) (else_clause "else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" else (compound_statement "{\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" { (expression_statement "fVar9 = (float)iVar3;" (assignment_expression "fVar9 = (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 "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (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_00021788;" 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_00021788;" goto statement_identifier ;)) (labeled_statement "LAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;" statement_identifier : (if_statement "if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;" if (parenthesized_expression "((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)" ( (binary_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9" (binary_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4" (cast_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (binary_expression "dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) ))))) ))) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;))) }))) (expression_statement "FUN_00020458(param_1 + 0x14);" (call_expression "FUN_00020458(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 "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (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    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" { (expression_statement "dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier = (binary_expression "dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) )))))) ;) })) (expression_statement "dVar8 = (double)*(int *)(param_1 + 0xc);" (assignment_expression "dVar8 = (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    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" { (expression_statement "dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier = (binary_expression "dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) )))))) ;) })) (if_statement "if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;" if (parenthesized_expression "((float)dVar7 * *pfVar4 <= (float)dVar8)" ( (binary_expression "(float)dVar7 * *pfVar4 <= (float)dVar8" (binary_expression "(float)dVar7 * *pfVar4" (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= (cast_expression "(float)dVar8" ( (type_descriptor "float" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;)) (expression_statement "fVar9 = (float)dVar7 * pfVar4[1];" (assignment_expression "fVar9 = (float)dVar7 * pfVar4[1]" identifier = (binary_expression "(float)dVar7 * pfVar4[1]" (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier) * (subscript_expression "pfVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 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    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }" { (expression_statement "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec)" identifier = (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" * (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" ( (binary_expression "PTR_LAB_00049218 + 0x66ec" identifier + number_literal) ))))) ;) (expression_statement "fVar9 = fVar9 * pfVar4[2];" (assignment_expression "fVar9 = fVar9 * pfVar4[2]" identifier = (binary_expression "fVar9 * pfVar4[2]" identifier * (subscript_expression "pfVar4[2]" identifier [ number_literal ]))) ;) (if_statement "if (fVar10 <= fVar9) goto LAB_0002182c;" if (parenthesized_expression "(fVar10 <= fVar9)" ( (binary_expression "fVar10 <= fVar9" identifier <= identifier) )) (goto_statement "goto LAB_0002182c;" goto statement_identifier ;)) (labeled_statement "LAB_000218f4:\n    param_2 = (uint)fVar9;" statement_identifier : (expression_statement "param_2 = (uint)fVar9;" (assignment_expression "param_2 = (uint)fVar9" identifier = (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) }) (else_clause "else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }" else (compound_statement "{\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }" { (expression_statement "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec)" identifier = (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" * (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" ( (binary_expression "PTR_LAB_00049218 + 0x66ec" identifier + number_literal) ))))) ;) (if_statement "if (fVar9 < fVar10) goto LAB_000218f4;" if (parenthesized_expression "(fVar9 < fVar10)" ( (binary_expression "fVar9 < fVar10" identifier < identifier) )) (goto_statement "goto LAB_000218f4;" goto statement_identifier ;)) (labeled_statement "LAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;" statement_identifier : (expression_statement "param_2 = (int)(fVar9 - fVar10) | 0x80000000;" (assignment_expression "param_2 = (int)(fVar9 - fVar10) | 0x80000000" identifier = (binary_expression "(int)(fVar9 - fVar10) | 0x80000000" (cast_expression "(int)(fVar9 - fVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar9 - fVar10)" ( (binary_expression "fVar9 - fVar10" identifier - identifier) ))) | number_literal)) ;)) }))) (expression_statement "iVar3 = hash_rehash(param_1,param_2);" (assignment_expression "iVar3 = hash_rehash(param_1,param_2)" identifier = (call_expression "hash_rehash(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( 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_00049608)();\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_00049608)();\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_00049608)();\n    }" while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\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_00049608)();" (call_expression "(*(code *)PTR_free_00049608)()" (parenthesized_expression "(*(code *)PTR_free_00049608)" ( (pointer_expression "*(code *)PTR_free_00049608" * (cast_expression "(code *)PTR_free_00049608" ( (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_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }" statement_identifier : (if_statement "if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }" if (parenthesized_expression "(local_1c == *(undefined4 **)puVar6)" ( (binary_expression "local_1c == *(undefined4 **)puVar6" identifier == (pointer_expression "*(undefined4 **)puVar6" * (cast_expression "(undefined4 **)puVar6" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return iVar1;\n  }" { (return_statement "return iVar1;" return identifier ;) }))) (expression_statement "puVar5 = local_1c;" (assignment_expression "puVar5 = local_1c" identifier = identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_fail_000495d0;" (assignment_expression "puVar6 = PTR___stack_chk_fail_000495d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000495d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000495d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000495d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000495d0" * (cast_expression "(code *)PTR___stack_chk_fail_000495d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar6 = puVar6 + 0x2f8d0;" (assignment_expression "puVar6 = puVar6 + 0x2f8d0" identifier = (binary_expression "puVar6 + 0x2f8d0" identifier + number_literal)) ;) (expression_statement "uVar2 = hash_pjw(*puVar5);" (assignment_expression "uVar2 = hash_pjw(*puVar5)" identifier = (call_expression "hash_pjw(*puVar5)" identifier (argument_list "(*puVar5)" ( (pointer_expression "*puVar5" * identifier) )))) ;) (expression_statement "FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);" (call_expression "FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6)" identifier (argument_list "(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6)" ( (subscript_expression "puVar5[2]" identifier [ number_literal ]) , (binary_expression "puVar5[3] ^ uVar2" (subscript_expression "puVar5[3]" identifier [ number_literal ]) ^ identifier) , number_literal , identifier , identifier ))) ;) (return_statement "return extraout_v1;" return identifier ;) })))
(translation_unit "void * hash_delete(Hash_table *table,void *entry)\n\n{\n  undefined3 extraout_var;\n  void *pvVar1;\n  _Bool _Var3;\n  size_t sVar2;\n  void *pvVar4;\n  Hash_tuning *pHVar5;\n  void *extraout_v1;\n  hash_entry *phVar6;\n  undefined4 *puVar7;\n  undefined *puVar8;\n  double dVar9;\n  float fVar11;\n  double dVar10;\n  float fVar12;\n  hash_entry *bucket;\n  undefined4 *local_1c;\n  \n  puVar8 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  pvVar1 = hash_find_entry(table,entry,&bucket,true);\n  if ((pvVar1 == (void *)0x0) ||\n     (pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0))\n  goto LAB_0002172c;\n  sVar2 = table->n_buckets_used - 1;\n  table->n_buckets_used = sVar2;\n  if ((int)sVar2 < 0) {\n    pHVar5 = table->tuning;\n    fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar9 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;\n  }\n  else {\n    fVar11 = (float)(int)sVar2;\n    pHVar5 = table->tuning;\n    dVar9 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;\n  }\n  check_tuning((Hash_table *)&table->tuning);\n  pHVar5 = table->tuning;\n  dVar9 = (double)(int)table->n_buckets;\n  if ((int)table->n_buckets < 0) {\n    dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar10 = (double)(int)table->n_buckets_used;\n  if ((int)table->n_buckets_used < 0) {\n    dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar9 * pHVar5->shrink_threshold <= (float)dVar10) goto LAB_0002172c;\n  fVar11 = (float)dVar9 * pHVar5->shrink_factor;\n  if (pHVar5->is_n_buckets == false) {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar11 = fVar11 * pHVar5->growth_threshold;\n    if (fVar12 <= fVar11) goto LAB_0002182c;\nLAB_000218f4:\n    entry = (void *)(int)fVar11;\n  }\n  else {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar11 < fVar12) goto LAB_000218f4;\nLAB_0002182c:\n    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);\n  }\n  _Var3 = hash_rehash(table,(size_t)entry);\n  if (CONCAT31(extraout_var,_Var3) == 0) {\n    phVar6 = table->free_entry_list;\n    while (phVar6 != (hash_entry *)0x0) {\n      phVar6 = phVar6->next;\n      (*(code *)PTR_free_00049608)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar8) {\n    return pvVar1;\n  }\n  puVar7 = local_1c;\n  puVar8 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar8 = puVar8 + 0x2f8d0;\n  sVar2 = hash_pjw((void *)*puVar7,(size_t)entry);\n  __umoddi3(puVar7[2],puVar7[3] ^ sVar2,0,entry,puVar8);\n  return extraout_v1;\n}\n\n" (function_definition "void * hash_delete(Hash_table *table,void *entry)\n\n{\n  undefined3 extraout_var;\n  void *pvVar1;\n  _Bool _Var3;\n  size_t sVar2;\n  void *pvVar4;\n  Hash_tuning *pHVar5;\n  void *extraout_v1;\n  hash_entry *phVar6;\n  undefined4 *puVar7;\n  undefined *puVar8;\n  double dVar9;\n  float fVar11;\n  double dVar10;\n  float fVar12;\n  hash_entry *bucket;\n  undefined4 *local_1c;\n  \n  puVar8 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  pvVar1 = hash_find_entry(table,entry,&bucket,true);\n  if ((pvVar1 == (void *)0x0) ||\n     (pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0))\n  goto LAB_0002172c;\n  sVar2 = table->n_buckets_used - 1;\n  table->n_buckets_used = sVar2;\n  if ((int)sVar2 < 0) {\n    pHVar5 = table->tuning;\n    fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar9 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;\n  }\n  else {\n    fVar11 = (float)(int)sVar2;\n    pHVar5 = table->tuning;\n    dVar9 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;\n  }\n  check_tuning((Hash_table *)&table->tuning);\n  pHVar5 = table->tuning;\n  dVar9 = (double)(int)table->n_buckets;\n  if ((int)table->n_buckets < 0) {\n    dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar10 = (double)(int)table->n_buckets_used;\n  if ((int)table->n_buckets_used < 0) {\n    dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar9 * pHVar5->shrink_threshold <= (float)dVar10) goto LAB_0002172c;\n  fVar11 = (float)dVar9 * pHVar5->shrink_factor;\n  if (pHVar5->is_n_buckets == false) {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar11 = fVar11 * pHVar5->growth_threshold;\n    if (fVar12 <= fVar11) goto LAB_0002182c;\nLAB_000218f4:\n    entry = (void *)(int)fVar11;\n  }\n  else {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar11 < fVar12) goto LAB_000218f4;\nLAB_0002182c:\n    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);\n  }\n  _Var3 = hash_rehash(table,(size_t)entry);\n  if (CONCAT31(extraout_var,_Var3) == 0) {\n    phVar6 = table->free_entry_list;\n    while (phVar6 != (hash_entry *)0x0) {\n      phVar6 = phVar6->next;\n      (*(code *)PTR_free_00049608)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar8) {\n    return pvVar1;\n  }\n  puVar7 = local_1c;\n  puVar8 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar8 = puVar8 + 0x2f8d0;\n  sVar2 = hash_pjw((void *)*puVar7,(size_t)entry);\n  __umoddi3(puVar7[2],puVar7[3] ^ sVar2,0,entry,puVar8);\n  return extraout_v1;\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  undefined3 extraout_var;\n  void *pvVar1;\n  _Bool _Var3;\n  size_t sVar2;\n  void *pvVar4;\n  Hash_tuning *pHVar5;\n  void *extraout_v1;\n  hash_entry *phVar6;\n  undefined4 *puVar7;\n  undefined *puVar8;\n  double dVar9;\n  float fVar11;\n  double dVar10;\n  float fVar12;\n  hash_entry *bucket;\n  undefined4 *local_1c;\n  \n  puVar8 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  pvVar1 = hash_find_entry(table,entry,&bucket,true);\n  if ((pvVar1 == (void *)0x0) ||\n     (pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0))\n  goto LAB_0002172c;\n  sVar2 = table->n_buckets_used - 1;\n  table->n_buckets_used = sVar2;\n  if ((int)sVar2 < 0) {\n    pHVar5 = table->tuning;\n    fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar9 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;\n  }\n  else {\n    fVar11 = (float)(int)sVar2;\n    pHVar5 = table->tuning;\n    dVar9 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;\n  }\n  check_tuning((Hash_table *)&table->tuning);\n  pHVar5 = table->tuning;\n  dVar9 = (double)(int)table->n_buckets;\n  if ((int)table->n_buckets < 0) {\n    dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar10 = (double)(int)table->n_buckets_used;\n  if ((int)table->n_buckets_used < 0) {\n    dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar9 * pHVar5->shrink_threshold <= (float)dVar10) goto LAB_0002172c;\n  fVar11 = (float)dVar9 * pHVar5->shrink_factor;\n  if (pHVar5->is_n_buckets == false) {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar11 = fVar11 * pHVar5->growth_threshold;\n    if (fVar12 <= fVar11) goto LAB_0002182c;\nLAB_000218f4:\n    entry = (void *)(int)fVar11;\n  }\n  else {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar11 < fVar12) goto LAB_000218f4;\nLAB_0002182c:\n    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);\n  }\n  _Var3 = hash_rehash(table,(size_t)entry);\n  if (CONCAT31(extraout_var,_Var3) == 0) {\n    phVar6 = table->free_entry_list;\n    while (phVar6 != (hash_entry *)0x0) {\n      phVar6 = phVar6->next;\n      (*(code *)PTR_free_00049608)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar8) {\n    return pvVar1;\n  }\n  puVar7 = local_1c;\n  puVar8 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar8 = puVar8 + 0x2f8d0;\n  sVar2 = hash_pjw((void *)*puVar7,(size_t)entry);\n  __umoddi3(puVar7[2],puVar7[3] ^ sVar2,0,entry,puVar8);\n  return extraout_v1;\n}" { (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "void *pvVar1;" primitive_type (pointer_declarator "*pvVar1" * identifier) ;) (declaration "_Bool _Var3;" type_identifier identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "void *pvVar4;" primitive_type (pointer_declarator "*pvVar4" * identifier) ;) (declaration "Hash_tuning *pHVar5;" type_identifier (pointer_declarator "*pHVar5" * identifier) ;) (declaration "void *extraout_v1;" primitive_type (pointer_declarator "*extraout_v1" * identifier) ;) (declaration "hash_entry *phVar6;" type_identifier (pointer_declarator "*phVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "float fVar11;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "float fVar12;" primitive_type identifier ;) (declaration "hash_entry *bucket;" type_identifier (pointer_declarator "*bucket" * identifier) ;) (declaration "undefined4 *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_guard_000495fc;" (assignment_expression "puVar8 = PTR___stack_chk_guard_000495fc" identifier = identifier) ;) (expression_statement "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;" (assignment_expression "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000495fc" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_000495fc" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pvVar1 = hash_find_entry(table,entry,&bucket,true);" (assignment_expression "pvVar1 = 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 ((pvVar1 == (void *)0x0) ||\n     (pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0))\n  goto LAB_0002172c;" if (parenthesized_expression "((pvVar1 == (void *)0x0) ||\n     (pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0))" ( (binary_expression "(pvVar1 == (void *)0x0) ||\n     (pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0)" (parenthesized_expression "(pvVar1 == (void *)0x0)" ( (binary_expression "pvVar1 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0)" ( (comma_expression "pvVar4 = bucket->data, table->n_entries = table->n_entries - 1, pvVar4 != (void *)0x0" (assignment_expression "pvVar4 = bucket->data" identifier = (field_expression "bucket->data" identifier -> field_identifier)) , (comma_expression "table->n_entries = table->n_entries - 1, pvVar4 != (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 "pvVar4 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;)) (expression_statement "sVar2 = table->n_buckets_used - 1;" (assignment_expression "sVar2 = 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 = sVar2;" (assignment_expression "table->n_buckets_used = sVar2" (field_expression "table->n_buckets_used" identifier -> field_identifier) = identifier) ;) (if_statement "if ((int)sVar2 < 0) {\n    pHVar5 = table->tuning;\n    fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar9 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;\n  }\n  else {\n    fVar11 = (float)(int)sVar2;\n    pHVar5 = table->tuning;\n    dVar9 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;\n  }" if (parenthesized_expression "((int)sVar2 < 0)" ( (binary_expression "(int)sVar2 < 0" (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    pHVar5 = table->tuning;\n    fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar9 = (double)(int)table->n_buckets;\n    if ((int)table->n_buckets < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;\n  }" { (expression_statement "pHVar5 = table->tuning;" (assignment_expression "pHVar5 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (expression_statement "fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0));" (assignment_expression "fVar11 = (float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0))" identifier = (cast_expression "(float)((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (binary_expression "(double)(int)sVar2 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (cast_expression "(double)(int)sVar2" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) ))))) )))) ;) (expression_statement "dVar9 = (double)(int)table->n_buckets;" (assignment_expression "dVar9 = (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_00021884;" 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_00021884;" goto statement_identifier ;)) (labeled_statement "LAB_00021788:\n    if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;" statement_identifier : (if_statement "if ((float)dVar9 * pHVar5->shrink_threshold <= fVar11) goto LAB_0002172c;" if (parenthesized_expression "((float)dVar9 * pHVar5->shrink_threshold <= fVar11)" ( (binary_expression "(float)dVar9 * pHVar5->shrink_threshold <= fVar11" (binary_expression "(float)dVar9 * pHVar5->shrink_threshold" (cast_expression "(float)dVar9" ( (type_descriptor "float" primitive_type) ) identifier) * (field_expression "pHVar5->shrink_threshold" identifier -> field_identifier)) <= identifier) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;))) }) (else_clause "else {\n    fVar11 = (float)(int)sVar2;\n    pHVar5 = table->tuning;\n    dVar9 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;\n  }" else (compound_statement "{\n    fVar11 = (float)(int)sVar2;\n    pHVar5 = table->tuning;\n    dVar9 = (double)(int)table->n_buckets;\n    if (-1 < (int)table->n_buckets) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;\n  }" { (expression_statement "fVar11 = (float)(int)sVar2;" (assignment_expression "fVar11 = (float)(int)sVar2" identifier = (cast_expression "(float)(int)sVar2" ( (type_descriptor "float" primitive_type) ) (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pHVar5 = table->tuning;" (assignment_expression "pHVar5 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (expression_statement "dVar9 = (double)(int)table->n_buckets;" (assignment_expression "dVar9 = (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_00021788;" 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_00021788;" goto statement_identifier ;)) (labeled_statement "LAB_00021884:\n    if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;" statement_identifier : (if_statement "if ((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       ) goto LAB_0002172c;" if (parenthesized_expression "((float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11\n       )" ( (binary_expression "(float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold <= fVar11" (binary_expression "(float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * pHVar5->shrink_threshold" (cast_expression "(float)(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (binary_expression "dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) ))))) ))) * (field_expression "pHVar5->shrink_threshold" identifier -> field_identifier)) <= identifier) )) (goto_statement "goto LAB_0002172c;" 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 "pHVar5 = table->tuning;" (assignment_expression "pHVar5 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (expression_statement "dVar9 = (double)(int)table->n_buckets;" (assignment_expression "dVar9 = (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    dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" { (expression_statement "dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar9 = dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier = (binary_expression "dVar9 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) )))))) ;) })) (expression_statement "dVar10 = (double)(int)table->n_buckets_used;" (assignment_expression "dVar10 = (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    dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" { (expression_statement "dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar10 = dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier = (binary_expression "dVar10 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) )))))) ;) })) (if_statement "if ((float)dVar9 * pHVar5->shrink_threshold <= (float)dVar10) goto LAB_0002172c;" if (parenthesized_expression "((float)dVar9 * pHVar5->shrink_threshold <= (float)dVar10)" ( (binary_expression "(float)dVar9 * pHVar5->shrink_threshold <= (float)dVar10" (binary_expression "(float)dVar9 * pHVar5->shrink_threshold" (cast_expression "(float)dVar9" ( (type_descriptor "float" primitive_type) ) identifier) * (field_expression "pHVar5->shrink_threshold" identifier -> field_identifier)) <= (cast_expression "(float)dVar10" ( (type_descriptor "float" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;)) (expression_statement "fVar11 = (float)dVar9 * pHVar5->shrink_factor;" (assignment_expression "fVar11 = (float)dVar9 * pHVar5->shrink_factor" identifier = (binary_expression "(float)dVar9 * pHVar5->shrink_factor" (cast_expression "(float)dVar9" ( (type_descriptor "float" primitive_type) ) identifier) * (field_expression "pHVar5->shrink_factor" identifier -> field_identifier))) ;) (if_statement "if (pHVar5->is_n_buckets == false) {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar11 = fVar11 * pHVar5->growth_threshold;\n    if (fVar12 <= fVar11) goto LAB_0002182c;\nLAB_000218f4:\n    entry = (void *)(int)fVar11;\n  }\n  else {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar11 < fVar12) goto LAB_000218f4;\nLAB_0002182c:\n    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);\n  }" if (parenthesized_expression "(pHVar5->is_n_buckets == false)" ( (binary_expression "pHVar5->is_n_buckets == false" (field_expression "pHVar5->is_n_buckets" identifier -> field_identifier) == false) )) (compound_statement "{\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar11 = fVar11 * pHVar5->growth_threshold;\n    if (fVar12 <= fVar11) goto LAB_0002182c;\nLAB_000218f4:\n    entry = (void *)(int)fVar11;\n  }" { (expression_statement "fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec)" identifier = (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" * (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" ( (binary_expression "PTR_LAB_00049218 + 0x66ec" identifier + number_literal) ))))) ;) (expression_statement "fVar11 = fVar11 * pHVar5->growth_threshold;" (assignment_expression "fVar11 = fVar11 * pHVar5->growth_threshold" identifier = (binary_expression "fVar11 * pHVar5->growth_threshold" identifier * (field_expression "pHVar5->growth_threshold" identifier -> field_identifier))) ;) (if_statement "if (fVar12 <= fVar11) goto LAB_0002182c;" if (parenthesized_expression "(fVar12 <= fVar11)" ( (binary_expression "fVar12 <= fVar11" identifier <= identifier) )) (goto_statement "goto LAB_0002182c;" goto statement_identifier ;)) (labeled_statement "LAB_000218f4:\n    entry = (void *)(int)fVar11;" statement_identifier : (expression_statement "entry = (void *)(int)fVar11;" (assignment_expression "entry = (void *)(int)fVar11" identifier = (cast_expression "(void *)(int)fVar11" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)fVar11" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) }) (else_clause "else {\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar11 < fVar12) goto LAB_000218f4;\nLAB_0002182c:\n    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);\n  }" else (compound_statement "{\n    fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar11 < fVar12) goto LAB_000218f4;\nLAB_0002182c:\n    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);\n  }" { (expression_statement "fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar12 = *(float *)(PTR_LAB_00049218 + 0x66ec)" identifier = (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" * (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" ( (binary_expression "PTR_LAB_00049218 + 0x66ec" identifier + number_literal) ))))) ;) (if_statement "if (fVar11 < fVar12) goto LAB_000218f4;" if (parenthesized_expression "(fVar11 < fVar12)" ( (binary_expression "fVar11 < fVar12" identifier < identifier) )) (goto_statement "goto LAB_000218f4;" goto statement_identifier ;)) (labeled_statement "LAB_0002182c:\n    entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);" statement_identifier : (expression_statement "entry = (void *)((int)(fVar11 - fVar12) | 0x80000000);" (assignment_expression "entry = (void *)((int)(fVar11 - fVar12) | 0x80000000)" identifier = (cast_expression "(void *)((int)(fVar11 - fVar12) | 0x80000000)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)(fVar11 - fVar12) | 0x80000000)" ( (binary_expression "(int)(fVar11 - fVar12) | 0x80000000" (cast_expression "(int)(fVar11 - fVar12)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar11 - fVar12)" ( (binary_expression "fVar11 - fVar12" identifier - identifier) ))) | number_literal) )))) ;)) }))) (expression_statement "_Var3 = hash_rehash(table,(size_t)entry);" (assignment_expression "_Var3 = hash_rehash(table,(size_t)entry)" identifier = (call_expression "hash_rehash(table,(size_t)entry)" identifier (argument_list "(table,(size_t)entry)" ( identifier , (cast_expression "(size_t)entry" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) ;) (if_statement "if (CONCAT31(extraout_var,_Var3) == 0) {\n    phVar6 = table->free_entry_list;\n    while (phVar6 != (hash_entry *)0x0) {\n      phVar6 = phVar6->next;\n      (*(code *)PTR_free_00049608)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }" if (parenthesized_expression "(CONCAT31(extraout_var,_Var3) == 0)" ( (binary_expression "CONCAT31(extraout_var,_Var3) == 0" (call_expression "CONCAT31(extraout_var,_Var3)" identifier (argument_list "(extraout_var,_Var3)" ( identifier , identifier ))) == number_literal) )) (compound_statement "{\n    phVar6 = table->free_entry_list;\n    while (phVar6 != (hash_entry *)0x0) {\n      phVar6 = phVar6->next;\n      (*(code *)PTR_free_00049608)();\n    }\n    table->free_entry_list = (hash_entry *)0x0;\n  }" { (expression_statement "phVar6 = table->free_entry_list;" (assignment_expression "phVar6 = table->free_entry_list" identifier = (field_expression "table->free_entry_list" identifier -> field_identifier)) ;) (while_statement "while (phVar6 != (hash_entry *)0x0) {\n      phVar6 = phVar6->next;\n      (*(code *)PTR_free_00049608)();\n    }" while (parenthesized_expression "(phVar6 != (hash_entry *)0x0)" ( (binary_expression "phVar6 != (hash_entry *)0x0" identifier != (cast_expression "(hash_entry *)0x0" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      phVar6 = phVar6->next;\n      (*(code *)PTR_free_00049608)();\n    }" { (expression_statement "phVar6 = phVar6->next;" (assignment_expression "phVar6 = phVar6->next" identifier = (field_expression "phVar6->next" identifier -> field_identifier)) ;) (expression_statement "(*(code *)PTR_free_00049608)();" (call_expression "(*(code *)PTR_free_00049608)()" (parenthesized_expression "(*(code *)PTR_free_00049608)" ( (pointer_expression "*(code *)PTR_free_00049608" * (cast_expression "(code *)PTR_free_00049608" ( (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_0002172c:\n  if (local_1c == *(undefined4 **)puVar8) {\n    return pvVar1;\n  }" statement_identifier : (if_statement "if (local_1c == *(undefined4 **)puVar8) {\n    return pvVar1;\n  }" if (parenthesized_expression "(local_1c == *(undefined4 **)puVar8)" ( (binary_expression "local_1c == *(undefined4 **)puVar8" identifier == (pointer_expression "*(undefined4 **)puVar8" * (cast_expression "(undefined4 **)puVar8" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return pvVar1;\n  }" { (return_statement "return pvVar1;" return identifier ;) }))) (expression_statement "puVar7 = local_1c;" (assignment_expression "puVar7 = local_1c" identifier = identifier) ;) (expression_statement "puVar8 = PTR___stack_chk_fail_000495d0;" (assignment_expression "puVar8 = PTR___stack_chk_fail_000495d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000495d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000495d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000495d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000495d0" * (cast_expression "(code *)PTR___stack_chk_fail_000495d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar8 = puVar8 + 0x2f8d0;" (assignment_expression "puVar8 = puVar8 + 0x2f8d0" identifier = (binary_expression "puVar8 + 0x2f8d0" identifier + number_literal)) ;) (expression_statement "sVar2 = hash_pjw((void *)*puVar7,(size_t)entry);" (assignment_expression "sVar2 = hash_pjw((void *)*puVar7,(size_t)entry)" identifier = (call_expression "hash_pjw((void *)*puVar7,(size_t)entry)" identifier (argument_list "((void *)*puVar7,(size_t)entry)" ( (cast_expression "(void *)*puVar7" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier)) , (cast_expression "(size_t)entry" ( (type_descriptor "size_t" primitive_type) ) identifier) )))) ;) (expression_statement "__umoddi3(puVar7[2],puVar7[3] ^ sVar2,0,entry,puVar8);" (call_expression "__umoddi3(puVar7[2],puVar7[3] ^ sVar2,0,entry,puVar8)" identifier (argument_list "(puVar7[2],puVar7[3] ^ sVar2,0,entry,puVar8)" ( (subscript_expression "puVar7[2]" identifier [ number_literal ]) , (binary_expression "puVar7[3] ^ sVar2" (subscript_expression "puVar7[3]" identifier [ number_literal ]) ^ identifier) , number_literal , identifier , identifier ))) ;) (return_statement "return extraout_v1;" return identifier ;) })))
(translation_unit "int hash_delete(int param_1,uint param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}\n\n" (function_definition "int hash_delete(int param_1,uint param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}" primitive_type (function_declarator "hash_delete(int param_1,uint param_2)" identifier (parameter_list "(int param_1,uint param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "float *pfVar4;" primitive_type (pointer_declarator "*pfVar4" * identifier) ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "double dVar7;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "float fVar10;" primitive_type identifier ;) (declaration "int *local_20;" primitive_type (pointer_declarator "*local_20" * identifier) ;) (declaration "undefined4 *local_1c;" type_identifier (pointer_declarator "*local_1c" * identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_guard_000495fc;" (assignment_expression "puVar6 = PTR___stack_chk_guard_000495fc" identifier = identifier) ;) (expression_statement "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;" (assignment_expression "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000495fc" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_000495fc" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar1 = FUN_00020310(param_1,param_2,&local_20,1);" (assignment_expression "iVar1 = FUN_00020310(param_1,param_2,&local_20,1)" identifier = (call_expression "FUN_00020310(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 ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;" if (parenthesized_expression "((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))" ( (binary_expression "(iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 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_0002172c;" 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    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" if (parenthesized_expression "(iVar3 < 0)" ( (binary_expression "iVar3 < 0" identifier < number_literal) )) (compound_statement "{\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\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 "fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));" (assignment_expression "fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" identifier = (cast_expression "(float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (binary_expression "(double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (cast_expression "(double)iVar3" ( (type_descriptor "double" primitive_type) ) identifier) + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) ))))) )))) ;) (expression_statement "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (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_00021884;" 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_00021884;" goto statement_identifier ;)) (labeled_statement "LAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;" statement_identifier : (if_statement "if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;" if (parenthesized_expression "((float)dVar7 * *pfVar4 <= fVar9)" ( (binary_expression "(float)dVar7 * *pfVar4 <= fVar9" (binary_expression "(float)dVar7 * *pfVar4" (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;))) }) (else_clause "else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" else (compound_statement "{\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" { (expression_statement "fVar9 = (float)iVar3;" (assignment_expression "fVar9 = (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 "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (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_00021788;" 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_00021788;" goto statement_identifier ;)) (labeled_statement "LAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;" statement_identifier : (if_statement "if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;" if (parenthesized_expression "((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)" ( (binary_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9" (binary_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4" (cast_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0))" ( (binary_expression "dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) ))))) ))) * (pointer_expression "*pfVar4" * identifier)) <= identifier) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;))) }))) (expression_statement "FUN_00020458(param_1 + 0x14);" (call_expression "FUN_00020458(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 "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (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    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" { (expression_statement "dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier = (binary_expression "dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) )))))) ;) })) (expression_statement "dVar8 = (double)*(int *)(param_1 + 0xc);" (assignment_expression "dVar8 = (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    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" { (expression_statement "dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier = (binary_expression "dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" * (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" ( (binary_expression "PTR_LAB_00049218 + 0x66f0" identifier + number_literal) )))))) ;) })) (if_statement "if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;" if (parenthesized_expression "((float)dVar7 * *pfVar4 <= (float)dVar8)" ( (binary_expression "(float)dVar7 * *pfVar4 <= (float)dVar8" (binary_expression "(float)dVar7 * *pfVar4" (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier) * (pointer_expression "*pfVar4" * identifier)) <= (cast_expression "(float)dVar8" ( (type_descriptor "float" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0002172c;" goto statement_identifier ;)) (expression_statement "fVar9 = (float)dVar7 * pfVar4[1];" (assignment_expression "fVar9 = (float)dVar7 * pfVar4[1]" identifier = (binary_expression "(float)dVar7 * pfVar4[1]" (cast_expression "(float)dVar7" ( (type_descriptor "float" primitive_type) ) identifier) * (subscript_expression "pfVar4[1]" identifier [ number_literal ]))) ;) (if_statement "if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 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    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }" { (expression_statement "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec)" identifier = (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" * (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" ( (binary_expression "PTR_LAB_00049218 + 0x66ec" identifier + number_literal) ))))) ;) (expression_statement "fVar9 = fVar9 * pfVar4[2];" (assignment_expression "fVar9 = fVar9 * pfVar4[2]" identifier = (binary_expression "fVar9 * pfVar4[2]" identifier * (subscript_expression "pfVar4[2]" identifier [ number_literal ]))) ;) (if_statement "if (fVar10 <= fVar9) goto LAB_0002182c;" if (parenthesized_expression "(fVar10 <= fVar9)" ( (binary_expression "fVar10 <= fVar9" identifier <= identifier) )) (goto_statement "goto LAB_0002182c;" goto statement_identifier ;)) (labeled_statement "LAB_000218f4:\n    param_2 = (uint)fVar9;" statement_identifier : (expression_statement "param_2 = (uint)fVar9;" (assignment_expression "param_2 = (uint)fVar9" identifier = (cast_expression "(uint)fVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) }) (else_clause "else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }" else (compound_statement "{\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }" { (expression_statement "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec)" identifier = (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" * (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" ( (binary_expression "PTR_LAB_00049218 + 0x66ec" identifier + number_literal) ))))) ;) (if_statement "if (fVar9 < fVar10) goto LAB_000218f4;" if (parenthesized_expression "(fVar9 < fVar10)" ( (binary_expression "fVar9 < fVar10" identifier < identifier) )) (goto_statement "goto LAB_000218f4;" goto statement_identifier ;)) (labeled_statement "LAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;" statement_identifier : (expression_statement "param_2 = (int)(fVar9 - fVar10) | 0x80000000;" (assignment_expression "param_2 = (int)(fVar9 - fVar10) | 0x80000000" identifier = (binary_expression "(int)(fVar9 - fVar10) | 0x80000000" (cast_expression "(int)(fVar9 - fVar10)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar9 - fVar10)" ( (binary_expression "fVar9 - fVar10" identifier - identifier) ))) | number_literal)) ;)) }))) (expression_statement "iVar3 = hash_rehash(param_1,param_2);" (assignment_expression "iVar3 = hash_rehash(param_1,param_2)" identifier = (call_expression "hash_rehash(param_1,param_2)" identifier (argument_list "(param_1,param_2)" ( 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_00049608)();\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_00049608)();\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_00049608)();\n    }" while (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\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_00049608)();" (call_expression "(*(code *)PTR_free_00049608)()" (parenthesized_expression "(*(code *)PTR_free_00049608)" ( (pointer_expression "*(code *)PTR_free_00049608" * (cast_expression "(code *)PTR_free_00049608" ( (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_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }" statement_identifier : (if_statement "if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }" if (parenthesized_expression "(local_1c == *(undefined4 **)puVar6)" ( (binary_expression "local_1c == *(undefined4 **)puVar6" identifier == (pointer_expression "*(undefined4 **)puVar6" * (cast_expression "(undefined4 **)puVar6" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return iVar1;\n  }" { (return_statement "return iVar1;" return identifier ;) }))) (expression_statement "puVar5 = local_1c;" (assignment_expression "puVar5 = local_1c" identifier = identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_fail_000495d0;" (assignment_expression "puVar6 = PTR___stack_chk_fail_000495d0" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_000495d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000495d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000495d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000495d0" * (cast_expression "(code *)PTR___stack_chk_fail_000495d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "puVar6 = puVar6 + 0x2f8d0;" (assignment_expression "puVar6 = puVar6 + 0x2f8d0" identifier = (binary_expression "puVar6 + 0x2f8d0" identifier + number_literal)) ;) (expression_statement "uVar2 = hash_pjw(*puVar5);" (assignment_expression "uVar2 = hash_pjw(*puVar5)" identifier = (call_expression "hash_pjw(*puVar5)" identifier (argument_list "(*puVar5)" ( (pointer_expression "*puVar5" * identifier) )))) ;) (expression_statement "FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);" (call_expression "FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6)" identifier (argument_list "(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6)" ( (subscript_expression "puVar5[2]" identifier [ number_literal ]) , (binary_expression "puVar5[3] ^ uVar2" (subscript_expression "puVar5[3]" identifier [ number_literal ]) ^ identifier) , number_literal , identifier , identifier ))) ;) (return_statement "return extraout_v1;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (binary_expression (subscript_expression IDENT [ LIT ]) ^ IDENT) , LIT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })))
(function_definition "int hash_delete(int param_1,uint param_2)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}" (primitive_type "int") (function_declarator "hash_delete(int param_1,uint param_2)" (identifier "hash_delete") (parameter_list "(int param_1,uint param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  float *pfVar4;\n  int extraout_v1;\n  undefined4 *puVar5;\n  undefined *puVar6;\n  double dVar7;\n  float fVar9;\n  double dVar8;\n  float fVar10;\n  int *local_20;\n  undefined4 *local_1c;\n  \n  puVar6 = PTR___stack_chk_guard_000495fc;\n  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;\n  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);\n  if ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;\n  iVar3 = *(int *)(param_1 + 0xc) + -1;\n  *(int *)(param_1 + 0xc) = iVar3;\n  if (iVar3 < 0) {\n    pfVar4 = *(float **)(param_1 + 0x14);\n    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }\n  FUN_00020458(param_1 + 0x14);\n  pfVar4 = *(float **)(param_1 + 0x14);\n  dVar7 = (double)*(int *)(param_1 + 8);\n  if (*(int *)(param_1 + 8) < 0) {\n    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  dVar8 = (double)*(int *)(param_1 + 0xc);\n  if (*(int *)(param_1 + 0xc) < 0) {\n    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }\n  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;\n  fVar9 = (float)dVar7 * pfVar4[1];\n  if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }\n  iVar3 = hash_rehash(param_1,param_2);\n  if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\n    }\n    *(undefined4 *)(param_1 + 0x24) = 0;\n  }\nLAB_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }\n  puVar5 = local_1c;\n  puVar6 = PTR___stack_chk_fail_000495d0;\n  (*(code *)PTR___stack_chk_fail_000495d0)();\n  puVar6 = puVar6 + 0x2f8d0;\n  uVar2 = hash_pjw(*puVar5);\n  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);\n  return extraout_v1;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "float *pfVar4;" (primitive_type "float") (pointer_declarator "*pfVar4" (* "*") (identifier "pfVar4")) (; ";")) (declaration "int extraout_v1;" (primitive_type "int") (identifier "extraout_v1") (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "double dVar7;" (primitive_type "double") (identifier "dVar7") (; ";")) (declaration "float fVar9;" (primitive_type "float") (identifier "fVar9") (; ";")) (declaration "double dVar8;" (primitive_type "double") (identifier "dVar8") (; ";")) (declaration "float fVar10;" (primitive_type "float") (identifier "fVar10") (; ";")) (declaration "int *local_20;" (primitive_type "int") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "undefined4 *local_1c;" (type_identifier "undefined4") (pointer_declarator "*local_1c" (* "*") (identifier "local_1c")) (; ";")) (expression_statement "puVar6 = PTR___stack_chk_guard_000495fc;" (assignment_expression "puVar6 = PTR___stack_chk_guard_000495fc" (identifier "puVar6") (= "=") (identifier "PTR___stack_chk_guard_000495fc")) (; ";")) (expression_statement "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;" (assignment_expression "local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc" (identifier "local_1c") (= "=") (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_000495fc" (* "*") (cast_expression "(undefined4 **)PTR___stack_chk_guard_000495fc" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_000495fc")))) (; ";")) (expression_statement "iVar1 = FUN_00020310(param_1,param_2,&local_20,1);" (assignment_expression "iVar1 = FUN_00020310(param_1,param_2,&local_20,1)" (identifier "iVar1") (= "=") (call_expression "FUN_00020310(param_1,param_2,&local_20,1)" (identifier "FUN_00020310") (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 ((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))\n  goto LAB_0002172c;" (if "if") (parenthesized_expression "((iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))" (( "(") (binary_expression "(iVar1 == 0) ||\n     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0)" (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (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_0002172c;" (goto "goto") (statement_identifier "LAB_0002172c") (; ";"))) (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    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\n  }\n  else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\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    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;\nLAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;\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 "fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));" (assignment_expression "fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" (identifier "fVar9") (= "=") (cast_expression "(float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0))" (( "(") (binary_expression "(double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (cast_expression "(double)iVar3" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar3")) (+ "+") (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" (* "*") (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" (( "(") (binary_expression "PTR_LAB_00049218 + 0x66f0" (identifier "PTR_LAB_00049218") (+ "+") (number_literal "0x66f0")) () ")"))))) () ")")))) (; ";")) (expression_statement "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (double)*(int *)(param_1 + 8)" (identifier "dVar7") (= "=") (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_00021884;" (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_00021884;" (goto "goto") (statement_identifier "LAB_00021884") (; ";"))) (labeled_statement "LAB_00021788:\n    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;" (statement_identifier "LAB_00021788") (: ":") (if_statement "if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;" (if "if") (parenthesized_expression "((float)dVar7 * *pfVar4 <= fVar9)" (( "(") (binary_expression "(float)dVar7 * *pfVar4 <= fVar9" (binary_expression "(float)dVar7 * *pfVar4" (cast_expression "(float)dVar7" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar7")) (* "*") (pointer_expression "*pfVar4" (* "*") (identifier "pfVar4"))) (<= "<=") (identifier "fVar9")) () ")")) (goto_statement "goto LAB_0002172c;" (goto "goto") (statement_identifier "LAB_0002172c") (; ";")))) (} "}")) (else_clause "else {\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" (else "else") (compound_statement "{\n    fVar9 = (float)iVar3;\n    pfVar4 = *(float **)(param_1 + 0x14);\n    dVar7 = (double)*(int *)(param_1 + 8);\n    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;\nLAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;\n  }" ({ "{") (expression_statement "fVar9 = (float)iVar3;" (assignment_expression "fVar9 = (float)iVar3" (identifier "fVar9") (= "=") (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 "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (double)*(int *)(param_1 + 8)" (identifier "dVar7") (= "=") (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_00021788;" (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_00021788;" (goto "goto") (statement_identifier "LAB_00021788") (; ";"))) (labeled_statement "LAB_00021884:\n    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;" (statement_identifier "LAB_00021884") (: ":") (if_statement "if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)\n    goto LAB_0002172c;" (if "if") (parenthesized_expression "((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)" (( "(") (binary_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9" (binary_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4" (cast_expression "(float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0))" (( "(") (binary_expression "dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (identifier "dVar7") (+ "+") (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" (* "*") (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" (( "(") (binary_expression "PTR_LAB_00049218 + 0x66f0" (identifier "PTR_LAB_00049218") (+ "+") (number_literal "0x66f0")) () ")"))))) () ")"))) (* "*") (pointer_expression "*pfVar4" (* "*") (identifier "pfVar4"))) (<= "<=") (identifier "fVar9")) () ")")) (goto_statement "goto LAB_0002172c;" (goto "goto") (statement_identifier "LAB_0002172c") (; ";")))) (} "}")))) (expression_statement "FUN_00020458(param_1 + 0x14);" (call_expression "FUN_00020458(param_1 + 0x14)" (identifier "FUN_00020458") (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 "dVar7 = (double)*(int *)(param_1 + 8);" (assignment_expression "dVar7 = (double)*(int *)(param_1 + 8)" (identifier "dVar7") (= "=") (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    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" ({ "{") (expression_statement "dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (identifier "dVar7") (= "=") (binary_expression "dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (identifier "dVar7") (+ "+") (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" (* "*") (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" (( "(") (binary_expression "PTR_LAB_00049218 + 0x66f0" (identifier "PTR_LAB_00049218") (+ "+") (number_literal "0x66f0")) () ")")))))) (; ";")) (} "}"))) (expression_statement "dVar8 = (double)*(int *)(param_1 + 0xc);" (assignment_expression "dVar8 = (double)*(int *)(param_1 + 0xc)" (identifier "dVar8") (= "=") (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    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\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    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);\n  }" ({ "{") (expression_statement "dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);" (assignment_expression "dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (identifier "dVar8") (= "=") (binary_expression "dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0)" (identifier "dVar8") (+ "+") (pointer_expression "*(double *)(PTR_LAB_00049218 + 0x66f0)" (* "*") (cast_expression "(double *)(PTR_LAB_00049218 + 0x66f0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00049218 + 0x66f0)" (( "(") (binary_expression "PTR_LAB_00049218 + 0x66f0" (identifier "PTR_LAB_00049218") (+ "+") (number_literal "0x66f0")) () ")")))))) (; ";")) (} "}"))) (if_statement "if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;" (if "if") (parenthesized_expression "((float)dVar7 * *pfVar4 <= (float)dVar8)" (( "(") (binary_expression "(float)dVar7 * *pfVar4 <= (float)dVar8" (binary_expression "(float)dVar7 * *pfVar4" (cast_expression "(float)dVar7" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar7")) (* "*") (pointer_expression "*pfVar4" (* "*") (identifier "pfVar4"))) (<= "<=") (cast_expression "(float)dVar8" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar8"))) () ")")) (goto_statement "goto LAB_0002172c;" (goto "goto") (statement_identifier "LAB_0002172c") (; ";"))) (expression_statement "fVar9 = (float)dVar7 * pfVar4[1];" (assignment_expression "fVar9 = (float)dVar7 * pfVar4[1]" (identifier "fVar9") (= "=") (binary_expression "(float)dVar7 * pfVar4[1]" (cast_expression "(float)dVar7" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar7")) (* "*") (subscript_expression "pfVar4[1]" (identifier "pfVar4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (*(char *)(pfVar4 + 4) == '\0') {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }\n  else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 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    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    fVar9 = fVar9 * pfVar4[2];\n    if (fVar10 <= fVar9) goto LAB_0002182c;\nLAB_000218f4:\n    param_2 = (uint)fVar9;\n  }" ({ "{") (expression_statement "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec)" (identifier "fVar10") (= "=") (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" (* "*") (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" (( "(") (binary_expression "PTR_LAB_00049218 + 0x66ec" (identifier "PTR_LAB_00049218") (+ "+") (number_literal "0x66ec")) () ")"))))) (; ";")) (expression_statement "fVar9 = fVar9 * pfVar4[2];" (assignment_expression "fVar9 = fVar9 * pfVar4[2]" (identifier "fVar9") (= "=") (binary_expression "fVar9 * pfVar4[2]" (identifier "fVar9") (* "*") (subscript_expression "pfVar4[2]" (identifier "pfVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (fVar10 <= fVar9) goto LAB_0002182c;" (if "if") (parenthesized_expression "(fVar10 <= fVar9)" (( "(") (binary_expression "fVar10 <= fVar9" (identifier "fVar10") (<= "<=") (identifier "fVar9")) () ")")) (goto_statement "goto LAB_0002182c;" (goto "goto") (statement_identifier "LAB_0002182c") (; ";"))) (labeled_statement "LAB_000218f4:\n    param_2 = (uint)fVar9;" (statement_identifier "LAB_000218f4") (: ":") (expression_statement "param_2 = (uint)fVar9;" (assignment_expression "param_2 = (uint)fVar9" (identifier "param_2") (= "=") (cast_expression "(uint)fVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar9"))) (; ";"))) (} "}")) (else_clause "else {\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }" (else "else") (compound_statement "{\n    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);\n    if (fVar9 < fVar10) goto LAB_000218f4;\nLAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;\n  }" ({ "{") (expression_statement "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);" (assignment_expression "fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec)" (identifier "fVar10") (= "=") (pointer_expression "*(float *)(PTR_LAB_00049218 + 0x66ec)" (* "*") (cast_expression "(float *)(PTR_LAB_00049218 + 0x66ec)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00049218 + 0x66ec)" (( "(") (binary_expression "PTR_LAB_00049218 + 0x66ec" (identifier "PTR_LAB_00049218") (+ "+") (number_literal "0x66ec")) () ")"))))) (; ";")) (if_statement "if (fVar9 < fVar10) goto LAB_000218f4;" (if "if") (parenthesized_expression "(fVar9 < fVar10)" (( "(") (binary_expression "fVar9 < fVar10" (identifier "fVar9") (< "<") (identifier "fVar10")) () ")")) (goto_statement "goto LAB_000218f4;" (goto "goto") (statement_identifier "LAB_000218f4") (; ";"))) (labeled_statement "LAB_0002182c:\n    param_2 = (int)(fVar9 - fVar10) | 0x80000000;" (statement_identifier "LAB_0002182c") (: ":") (expression_statement "param_2 = (int)(fVar9 - fVar10) | 0x80000000;" (assignment_expression "param_2 = (int)(fVar9 - fVar10) | 0x80000000" (identifier "param_2") (= "=") (binary_expression "(int)(fVar9 - fVar10) | 0x80000000" (cast_expression "(int)(fVar9 - fVar10)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(fVar9 - fVar10)" (( "(") (binary_expression "fVar9 - fVar10" (identifier "fVar9") (- "-") (identifier "fVar10")) () ")"))) (| "|") (number_literal "0x80000000"))) (; ";"))) (} "}")))) (expression_statement "iVar3 = hash_rehash(param_1,param_2);" (assignment_expression "iVar3 = hash_rehash(param_1,param_2)" (identifier "iVar3") (= "=") (call_expression "hash_rehash(param_1,param_2)" (identifier "hash_rehash") (argument_list "(param_1,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n    iVar3 = *(int *)(param_1 + 0x24);\n    while (iVar3 != 0) {\n      iVar3 = *(int *)(iVar3 + 4);\n      (*(code *)PTR_free_00049608)();\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_00049608)();\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_00049608)();\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_00049608)();\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_00049608)();" (call_expression "(*(code *)PTR_free_00049608)()" (parenthesized_expression "(*(code *)PTR_free_00049608)" (( "(") (pointer_expression "*(code *)PTR_free_00049608" (* "*") (cast_expression "(code *)PTR_free_00049608" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00049608"))) () ")")) (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_0002172c:\n  if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }" (statement_identifier "LAB_0002172c") (: ":") (if_statement "if (local_1c == *(undefined4 **)puVar6) {\n    return iVar1;\n  }" (if "if") (parenthesized_expression "(local_1c == *(undefined4 **)puVar6)" (( "(") (binary_expression "local_1c == *(undefined4 **)puVar6" (identifier "local_1c") (== "==") (pointer_expression "*(undefined4 **)puVar6" (* "*") (cast_expression "(undefined4 **)puVar6" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar6")))) () ")")) (compound_statement "{\n    return iVar1;\n  }" ({ "{") (return_statement "return iVar1;" (return "return") (identifier "iVar1") (; ";")) (} "}")))) (expression_statement "puVar5 = local_1c;" (assignment_expression "puVar5 = local_1c" (identifier "puVar5") (= "=") (identifier "local_1c")) (; ";")) (expression_statement "puVar6 = PTR___stack_chk_fail_000495d0;" (assignment_expression "puVar6 = PTR___stack_chk_fail_000495d0" (identifier "puVar6") (= "=") (identifier "PTR___stack_chk_fail_000495d0")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_000495d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000495d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000495d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000495d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000495d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000495d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar6 = puVar6 + 0x2f8d0;" (assignment_expression "puVar6 = puVar6 + 0x2f8d0" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 0x2f8d0" (identifier "puVar6") (+ "+") (number_literal "0x2f8d0"))) (; ";")) (expression_statement "uVar2 = hash_pjw(*puVar5);" (assignment_expression "uVar2 = hash_pjw(*puVar5)" (identifier "uVar2") (= "=") (call_expression "hash_pjw(*puVar5)" (identifier "hash_pjw") (argument_list "(*puVar5)" (( "(") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) () ")")))) (; ";")) (expression_statement "FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);" (call_expression "FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6)" (identifier "FUN_000317b0") (argument_list "(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6)" (( "(") (subscript_expression "puVar5[2]" (identifier "puVar5") ([ "[") (number_literal "2") (] "]")) (, ",") (binary_expression "puVar5[3] ^ uVar2" (subscript_expression "puVar5[3]" (identifier "puVar5") ([ "[") (number_literal "3") (] "]")) (^ "^") (identifier "uVar2")) (, ",") (number_literal "0") (, ",") (identifier "param_2") (, ",") (identifier "puVar6") () ")"))) (; ";")) (return_statement "return extraout_v1;" (return "return") (identifier "extraout_v1") (; ";")) (} "}")))

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

{
  type_2 extraout_var;
  void *var_2;
  type_3 _Var3;
  size_t var_17;
  void *var_3;
  type_4 *pHVar5;
  void *extraout_v1;
  type_5 *var_12;
  type_6 *puVar7;
  type_7 *var_14;
  double var_6;
  float var_5;
  double var_8;
  float var_9;
  type_5 *bucket;
  type_6 *var_13;
  
  var_14 = PTR___stack_chk_guard_000495fc;
  var_13 = *(type_6 **)PTR___stack_chk_guard_000495fc;
  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_0002172c;
  var_17 = table->n_buckets_used - 1;
  table->n_buckets_used = var_17;
  if ((int)var_17 < 0) {
    pHVar5 = table->tuning;
    var_5 = (float)((double)(int)var_17 + *(double *)(var_4 + 0x66f0));
    var_6 = (double)(int)table->n_buckets;
    if ((int)table->n_buckets < 0) goto LAB_00021884;
LAB_00021788:
    if ((float)var_6 * pHVar5->shrink_threshold <= var_5) goto LAB_0002172c;
  }
  else {
    var_5 = (float)(int)var_17;
    pHVar5 = table->tuning;
    var_6 = (double)(int)table->n_buckets;
    if (-1 < (int)table->n_buckets) goto LAB_00021788;
LAB_00021884:
    if ((float)(var_6 + *(double *)(var_4 + 0x66f0)) * pHVar5->shrink_threshold <= var_5
       ) goto LAB_0002172c;
  }
  var_7((type_1 *)&table->tuning);
  pHVar5 = table->tuning;
  var_6 = (double)(int)table->n_buckets;
  if ((int)table->n_buckets < 0) {
    var_6 = var_6 + *(double *)(var_4 + 0x66f0);
  }
  var_8 = (double)(int)table->n_buckets_used;
  if ((int)table->n_buckets_used < 0) {
    var_8 = var_8 + *(double *)(var_4 + 0x66f0);
  }
  if ((float)var_6 * pHVar5->shrink_threshold <= (float)var_8) goto LAB_0002172c;
  var_5 = (float)var_6 * pHVar5->shrink_factor;
  if (pHVar5->is_n_buckets == false) {
    var_9 = *(float *)(var_4 + 0x66ec);
    var_5 = var_5 * pHVar5->growth_threshold;
    if (var_9 <= var_5) goto LAB_0002182c;
LAB_000218f4:
    entry = (void *)(int)var_5;
  }
  else {
    var_9 = *(float *)(var_4 + 0x66ec);
    if (var_5 < var_9) goto LAB_000218f4;
LAB_0002182c:
    entry = (void *)((int)(var_5 - var_9) | 0x80000000);
  }
  _Var3 = var_10(table,(size_t)entry);
  if (var_11(extraout_var,_Var3) == 0) {
    var_12 = table->free_entry_list;
    while (var_12 != (type_5 *)0x0) {
      var_12 = var_12->next;
      (*(type_8 *)PTR_free_00049608)();
    }
    table->free_entry_list = (type_5 *)0x0;
  }
LAB_0002172c:
  if (var_13 == *(type_6 **)var_14) {
    return var_2;
  }
  puVar7 = var_13;
  var_14 = PTR___stack_chk_fail_000495d0;
  (*(type_8 *)PTR___stack_chk_fail_000495d0)();
  var_14 = var_14 + 0x2f8d0;
  var_17 = var_15((void *)*puVar7,(size_t)entry);
  var_16(puVar7[2],puVar7[3] ^ var_17,0,entry,var_14);
  return extraout_v1;
}


(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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (pointer_declarator declarator: (identifier))) (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: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (type_identifier) declarator: (abstract_pointer_declarator 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: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)) (number_literal) (identifier) (identifier)))) (return_statement (identifier)))))

int MASKED(int param_1,uint param_2)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  float *pfVar4;
  int extraout_v1;
  undefined4 *puVar5;
  undefined *puVar6;
  double dVar7;
  float fVar9;
  double dVar8;
  float fVar10;
  int *local_20;
  undefined4 *local_1c;
  
  puVar6 = PTR___stack_chk_guard_000495fc;
  local_1c = *(undefined4 **)PTR___stack_chk_guard_000495fc;
  iVar1 = FUN_00020310(param_1,param_2,&local_20,1);
  if ((iVar1 == 0) ||
     (iVar3 = *local_20, *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + -1, iVar3 != 0))
  goto LAB_0002172c;
  iVar3 = *(int *)(param_1 + 0xc) + -1;
  *(int *)(param_1 + 0xc) = iVar3;
  if (iVar3 < 0) {
    pfVar4 = *(float **)(param_1 + 0x14);
    fVar9 = (float)((double)iVar3 + *(double *)(PTR_LAB_00049218 + 0x66f0));
    dVar7 = (double)*(int *)(param_1 + 8);
    if (*(int *)(param_1 + 8) < 0) goto LAB_00021884;
LAB_00021788:
    if ((float)dVar7 * *pfVar4 <= fVar9) goto LAB_0002172c;
  }
  else {
    fVar9 = (float)iVar3;
    pfVar4 = *(float **)(param_1 + 0x14);
    dVar7 = (double)*(int *)(param_1 + 8);
    if (-1 < *(int *)(param_1 + 8)) goto LAB_00021788;
LAB_00021884:
    if ((float)(dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0)) * *pfVar4 <= fVar9)
    goto LAB_0002172c;
  }
  FUN_00020458(param_1 + 0x14);
  pfVar4 = *(float **)(param_1 + 0x14);
  dVar7 = (double)*(int *)(param_1 + 8);
  if (*(int *)(param_1 + 8) < 0) {
    dVar7 = dVar7 + *(double *)(PTR_LAB_00049218 + 0x66f0);
  }
  dVar8 = (double)*(int *)(param_1 + 0xc);
  if (*(int *)(param_1 + 0xc) < 0) {
    dVar8 = dVar8 + *(double *)(PTR_LAB_00049218 + 0x66f0);
  }
  if ((float)dVar7 * *pfVar4 <= (float)dVar8) goto LAB_0002172c;
  fVar9 = (float)dVar7 * pfVar4[1];
  if (*(char *)(pfVar4 + 4) == '\0') {
    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);
    fVar9 = fVar9 * pfVar4[2];
    if (fVar10 <= fVar9) goto LAB_0002182c;
LAB_000218f4:
    param_2 = (uint)fVar9;
  }
  else {
    fVar10 = *(float *)(PTR_LAB_00049218 + 0x66ec);
    if (fVar9 < fVar10) goto LAB_000218f4;
LAB_0002182c:
    param_2 = (int)(fVar9 - fVar10) | 0x80000000;
  }
  iVar3 = hash_rehash(param_1,param_2);
  if (iVar3 == 0) {
    iVar3 = *(int *)(param_1 + 0x24);
    while (iVar3 != 0) {
      iVar3 = *(int *)(iVar3 + 4);
      (*(code *)PTR_free_00049608)();
    }
    *(undefined4 *)(param_1 + 0x24) = 0;
  }
LAB_0002172c:
  if (local_1c == *(undefined4 **)puVar6) {
    return iVar1;
  }
  puVar5 = local_1c;
  puVar6 = PTR___stack_chk_fail_000495d0;
  (*(code *)PTR___stack_chk_fail_000495d0)();
  puVar6 = puVar6 + 0x2f8d0;
  uVar2 = hash_pjw(*puVar5);
  FUN_000317b0(puVar5[2],puVar5[3] ^ uVar2,0,param_2,puVar6);
  return extraout_v1;
}

