
_Bool hash_rehash(Hash_table *table,size_t candidate)

{
  undefined *puVar1;
  undefined3 extraout_var;
  undefined3 extraout_var_00;
  undefined3 extraout_var_01;
  size_t sVar2;
  _Bool _Var3;
  undefined1 uVar4;
  int iVar5;
  int iVar6;
  Hash_tuning *pHVar7;
  double dVar8;
  float fVar9;
  Hash_table storage;
  
  puVar1 = PTR___stack_chk_guard_00033430;
  pHVar7 = table->tuning;
  iVar5 = *(int *)PTR___stack_chk_guard_00033430;
  if (pHVar7->is_n_buckets == false) {
    dVar8 = (double)(int)candidate;
    if ((int)candidate < 0) {
      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);
    }
    fVar9 = (float)dVar8 / pHVar7->growth_threshold;
    if (fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {
      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {
        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;
      }
      else {
        candidate = (size_t)fVar9;
      }
      goto LAB_00015d5c;
    }
LAB_00015e70:
    iVar6 = 0;
  }
  else {
LAB_00015d5c:
    sVar2 = next_prime(candidate);
    if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;
    if (table->n_buckets == sVar2) {
      iVar6 = 1;
    }
    else {
      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);
      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;
      storage.hasher = table->hasher;
      storage.bucket_limit = storage.bucket + sVar2;
      storage.comparator = table->comparator;
      storage.data_freer = table->data_freer;
      storage.free_entry_list = table->free_entry_list;
      storage.n_buckets_used = 0;
      storage.n_entries = 0;
      storage.n_buckets = sVar2;
      storage.tuning = pHVar7;
      _Var3 = transfer_entries(&storage,table,false);
      iVar6 = CONCAT31(extraout_var,_Var3);
      if (iVar6 == 0) {
        table->free_entry_list = storage.free_entry_list;
        _Var3 = transfer_entries(table,&storage,true);
        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||
           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))
        goto LAB_00015f14;
        (*(code *)PTR_free_00033438)(storage.bucket);
      }
      else {
        (*(code *)PTR_free_00033438)(table->bucket);
        table->bucket = storage.bucket;
        table->bucket_limit = storage.bucket_limit;
        table->n_buckets = storage.n_buckets;
        table->n_buckets_used = storage.n_buckets_used;
        table->free_entry_list = storage.free_entry_list;
      }
    }
  }
  if (iVar5 == *(int *)puVar1) {
    return SUB41(iVar6,0);
  }
  (*(code *)PTR___stack_chk_fail_00033414)();
LAB_00015f14:
  uVar4 = (*(code *)PTR_abort_00033300)();
  return (_Bool)uVar4;
}



int hash_rehash(int *param_1,uint param_2)

{
  undefined *puVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  double dVar5;
  float fVar6;
  int local_4c;
  int local_48;
  uint local_44;
  int local_40;
  undefined4 local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  
  puVar1 = PTR___stack_chk_guard_00033430;
  iVar4 = param_1[5];
  local_24 = *(int *)PTR___stack_chk_guard_00033430;
  if (*(char *)(iVar4 + 0x10) == '\0') {
    dVar5 = (double)(int)param_2;
    if ((int)param_2 < 0) {
      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);
    }
    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);
    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {
      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {
        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;
      }
      else {
        param_2 = (uint)fVar6;
      }
      goto LAB_00015d5c;
    }
LAB_00015e70:
    iVar4 = 0;
  }
  else {
LAB_00015d5c:
    uVar2 = FUN_00014d80(param_2);
    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;
    if (param_1[2] == uVar2) {
      iVar4 = 1;
    }
    else {
      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);
      if (local_4c == 0) goto LAB_00015e70;
      local_34 = param_1[6];
      local_48 = local_4c + uVar2 * 8;
      local_30 = param_1[7];
      local_2c = param_1[8];
      local_28 = param_1[9];
      local_40 = 0;
      local_3c = 0;
      local_44 = uVar2;
      local_38 = iVar4;
      iVar4 = FUN_000150ac(&local_4c,param_1,0);
      if (iVar4 == 0) {
        param_1[9] = local_28;
        iVar3 = FUN_000150ac(param_1,&local_4c,1);
        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))
        goto LAB_00015f14;
        (*(code *)PTR_free_00033438)(local_4c);
      }
      else {
        (*(code *)PTR_free_00033438)(*param_1);
        *param_1 = local_4c;
        param_1[1] = local_48;
        param_1[2] = local_44;
        param_1[3] = local_40;
        param_1[9] = local_28;
      }
    }
  }
  if (local_24 == *(int *)puVar1) {
    return iVar4;
  }
  (*(code *)PTR___stack_chk_fail_00033414)();
LAB_00015f14:
  iVar4 = (*(code *)PTR_abort_00033300)();
  return iVar4;
}


lui gp,0x2
addiu gp,gp,0x5418
addu gp,gp,t9
addiu sp,sp,-0x68
sw s3,0x58(sp)
sw s2,0x54(sp)
lw s3,0x14(a0)
lw s2,-0x7ca0(gp)
sw gp,0x10(sp)
sw s1,0x50(sp)
or s1,a0,zero
sw ra,0x64(sp)
sw s5,0x60(sp)
sw s4,0x5c(sp)
sw s0,0x4c(sp)
lw v1,0x0(s2)
lbu v0,0x10(s3)
sw v1,0x44(sp)
bne v0,zero,0x00015d5c
_lw t9,-0x7fcc(gp)
mtc1 a1,f0
bltz a1,0x00015ea8
_cvt.d.W f0,f0
lwc1 f2,0x8(s3)
cvt.s.D f0,f0
lw v0,-0x7fc8(gp)
div.S f0,f0,f2
lwc1 f2,0x1bb8(v0)
c.le.S f2,f0
bc1t 0x00015e70
_lw v0,-0x7fc8(gp)
lwc1 f2,0x1bbc(v0)
c.le.S f2,f0
bc1f 0x1,0x00015eb8
_nop
sub.S S f0,f0,f2
lui v0,0x8000
trunc.w.S f0,f0
mfc1 a1,f0
or a1,a1,v0
lw t9,-0x7fcc(gp)
addiu t9,t9,0x4d80
bal 0x00014d80
_or a0,a1,zero
or s0,v0,zero
lw gp,0x10(sp)
srl v0,v0,0x1e
sll v1,s0,0x2
bltz v1,0x00015e70
_sltu v0,zero,v0
bne v0,zero,0x00015e70
_nop
beq s0,zero,0x00015e70
_nop
lw v0,0x8(s1)
beq v0,s0,0x00015ec4
_lw t9,-0x7dfc(gp)
li a1,0x8
jalr t9
_or a0,s0,zero
lw gp,0x10(sp)
beq v0,zero,0x00015e70
_sw v0,0x1c(sp)
sll v1,s0,0x3
lw s4,-0x7fcc(gp)
lw t1,0x18(s1)
addiu s5,sp,0x1c
addu v0,v0,v1
lw t0,0x1c(s1)
lw a3,0x20(s1)
addiu s4,s4,0x50ac
lw v1,0x24(s1)
or a2,zero,zero
sw s0,0x24(sp)
or a1,s1,zero
or a0,s5,zero
sw v0,0x20(sp)
sw zero,0x28(sp)
or t9,s4,zero
sw zero,0x2c(sp)
sw s3,0x30(sp)
sw t1,0x34(sp)
sw t0,0x38(sp)
sw a3,0x3c(sp)
bal 0x000150ac
_sw v1,0x40(sp)
lw gp,0x10(sp)
bne v0,zero,0x00015ecc
_or s0,v0,zero
lw v0,0x40(sp)
li a2,0x1
or a1,s5,zero
or a0,s1,zero
or t9,s4,zero
bal 0x000150ac
_sw v0,0x24(s1)
beq v0,zero,0x00015f14
_lw gp,0x10(sp)
or a2,zero,zero
or a1,s5,zero
or t9,s4,zero
bal 0x000150ac
_or a0,s1,zero
beq v0,zero,0x00015f14
_lw gp,0x10(sp)
lw t9,-0x7c98(gp)
jalr t9
_lw a0,0x1c(sp)
b 0x00015e74
_lw gp,0x10(sp)
or s0,zero,zero
lw a0,0x44(sp)
or v0,s0,zero
lw v1,0x0(s2)
bne a0,v1,0x00015f08
_lw ra,0x64(sp)
lw s5,0x60(sp)
lw s4,0x5c(sp)
lw s3,0x58(sp)
lw s2,0x54(sp)
lw s1,0x50(sp)
lw s0,0x4c(sp)
jr ra
_addiu sp,sp,0x68
lw v0,-0x7fc8(gp)
ldc1 f2,0x1bc0(v0)
b 0x00015d14
_add.D f0,f0,f2
trunc.w.S f0,f0
b 0x00015d58
_mfc1 a1,f0
b 0x00015e74
_li s0,0x1
lw t9,-0x7c98(gp)
jalr t9
_lw a0,0x0(s1)
lw v0,0x1c(sp)
lw gp,0x10(sp)
sw v0,0x0(s1)
lw v0,0x20(sp)
sw v0,0x4(s1)
lw v0,0x24(sp)
sw v0,0x8(s1)
lw v0,0x28(sp)
sw v0,0xc(s1)
lw v0,0x40(sp)
b 0x00015e74
_sw v0,0x24(s1)
lw t9,-0x7cbc(gp)
jalr t9
_nop
lw t9,-0x7dd0(gp)
jalr t9
_nop
(translation_unit "int hash_rehash(int *param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}\n\n" (function_definition "int hash_rehash(int *param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}" primitive_type (function_declarator "hash_rehash(int *param_1,uint param_2)" identifier (parameter_list "(int *param_1,uint param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "float fVar6;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00033430;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00033430" identifier = identifier) ;) (expression_statement "iVar4 = param_1[5];" (assignment_expression "iVar4 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_00033430;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_00033430" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00033430" * (cast_expression "(int *)PTR___stack_chk_guard_00033430" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar4 + 0x10) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x10) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x10)" * (cast_expression "(char *)(iVar4 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }" { (expression_statement "dVar5 = (double)(int)param_2;" (assignment_expression "dVar5 = (double)(int)param_2" identifier = (cast_expression "(double)(int)param_2" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" if (parenthesized_expression "((int)param_2 < 0)" ( (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" { (expression_statement "dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);" (assignment_expression "dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" identifier = (binary_expression "dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00033108 + 0x1bc0)" * (cast_expression "(double *)(PTR_LAB_00033108 + 0x1bc0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bc0)" ( (binary_expression "PTR_LAB_00033108 + 0x1bc0" identifier + number_literal) )))))) ;) })) (expression_statement "fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);" (assignment_expression "fVar6 = (float)dVar5 / *(float *)(iVar4 + 8)" identifier = (binary_expression "(float)dVar5 / *(float *)(iVar4 + 8)" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) / (pointer_expression "*(float *)(iVar4 + 8)" * (cast_expression "(float *)(iVar4 + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))))) ;) (if_statement "if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }" if (parenthesized_expression "(fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8))" ( (binary_expression "fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)" identifier < (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bb8)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bb8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bb8)" ( (binary_expression "PTR_LAB_00033108 + 0x1bb8" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }" { (if_statement "if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }" if (parenthesized_expression "(*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6)" ( (binary_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6" (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" ( (binary_expression "PTR_LAB_00033108 + 0x1bbc" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }" { (expression_statement "param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;" (assignment_expression "param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" identifier = (binary_expression "(int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" (cast_expression "(int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" ( (binary_expression "fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)" identifier - (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" ( (binary_expression "PTR_LAB_00033108 + 0x1bbc" identifier + number_literal) ))))) ))) | number_literal)) ;) }) (else_clause "else {\n        param_2 = (uint)fVar6;\n      }" else (compound_statement "{\n        param_2 = (uint)fVar6;\n      }" { (expression_statement "param_2 = (uint)fVar6;" (assignment_expression "param_2 = (uint)fVar6" identifier = (cast_expression "(uint)fVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (goto_statement "goto LAB_00015d5c;" goto statement_identifier ;) })) (labeled_statement "LAB_00015e70:\n    iVar4 = 0;" statement_identifier : (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" { (labeled_statement "LAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);" statement_identifier : (expression_statement "uVar2 = FUN_00014d80(param_2);" (assignment_expression "uVar2 = FUN_00014d80(param_2)" identifier = (call_expression "FUN_00014d80(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;)) (if_statement "if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;" if (parenthesized_expression "((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0))" ( (binary_expression "(((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)" (parenthesized_expression "(((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0))" ( (binary_expression "((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)" (parenthesized_expression "((int)(uVar2 << 2) < 0)" ( (binary_expression "(int)(uVar2 << 2) < 0" (cast_expression "(int)(uVar2 << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 2)" ( (binary_expression "uVar2 << 2" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar2 >> 0x1e != 0)" ( (binary_expression "uVar2 >> 0x1e != 0" (binary_expression "uVar2 >> 0x1e" identifier >> number_literal) != number_literal) ))) )) || (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00015e70;" goto statement_identifier ;)) (if_statement "if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" if (parenthesized_expression "(param_1[2] == uVar2)" ( (binary_expression "param_1[2] == uVar2" (subscript_expression "param_1[2]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      iVar4 = 1;\n    }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" else (compound_statement "{\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" { (expression_statement "local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);" (assignment_expression "local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8)" identifier = (call_expression "(*(code *)PTR_calloc_000332d4)(uVar2,8)" (parenthesized_expression "(*(code *)PTR_calloc_000332d4)" ( (pointer_expression "*(code *)PTR_calloc_000332d4" * (cast_expression "(code *)PTR_calloc_000332d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2,8)" ( identifier , number_literal )))) ;) (if_statement "if (local_4c == 0) goto LAB_00015e70;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00015e70;" goto statement_identifier ;)) (expression_statement "local_34 = param_1[6];" (assignment_expression "local_34 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "local_48 = local_4c + uVar2 * 8;" (assignment_expression "local_48 = local_4c + uVar2 * 8" identifier = (binary_expression "local_4c + uVar2 * 8" identifier + (binary_expression "uVar2 * 8" identifier * number_literal))) ;) (expression_statement "local_30 = param_1[7];" (assignment_expression "local_30 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "local_2c = param_1[8];" (assignment_expression "local_2c = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_1[9];" (assignment_expression "local_28 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_44 = uVar2;" (assignment_expression "local_44 = uVar2" identifier = identifier) ;) (expression_statement "local_38 = iVar4;" (assignment_expression "local_38 = iVar4" identifier = identifier) ;) (expression_statement "iVar4 = FUN_000150ac(&local_4c,param_1,0);" (assignment_expression "iVar4 = FUN_000150ac(&local_4c,param_1,0)" identifier = (call_expression "FUN_000150ac(&local_4c,param_1,0)" identifier (argument_list "(&local_4c,param_1,0)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal )))) ;) (if_statement "if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }" { (expression_statement "param_1[9] = local_28;" (assignment_expression "param_1[9] = local_28" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = FUN_000150ac(param_1,&local_4c,1);" (assignment_expression "iVar3 = FUN_000150ac(param_1,&local_4c,1)" identifier = (call_expression "FUN_000150ac(param_1,&local_4c,1)" identifier (argument_list "(param_1,&local_4c,1)" ( identifier , (pointer_expression "&local_4c" & identifier) , number_literal )))) ;) (if_statement "if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;" if (parenthesized_expression "((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))" ( (binary_expression "(iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0)" ( (comma_expression "iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0" (assignment_expression "iVar3 = FUN_000150ac(param_1,&local_4c,0)" identifier = (call_expression "FUN_000150ac(param_1,&local_4c,0)" identifier (argument_list "(param_1,&local_4c,0)" ( identifier , (pointer_expression "&local_4c" & identifier) , number_literal )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00015f14;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_free_00033438)(local_4c);" (call_expression "(*(code *)PTR_free_00033438)(local_4c)" (parenthesized_expression "(*(code *)PTR_free_00033438)" ( (pointer_expression "*(code *)PTR_free_00033438" * (cast_expression "(code *)PTR_free_00033438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_4c)" ( identifier ))) ;) }) (else_clause "else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" else (compound_statement "{\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" { (expression_statement "(*(code *)PTR_free_00033438)(*param_1);" (call_expression "(*(code *)PTR_free_00033438)(*param_1)" (parenthesized_expression "(*(code *)PTR_free_00033438)" ( (pointer_expression "*(code *)PTR_free_00033438" * (cast_expression "(code *)PTR_free_00033438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "*param_1 = local_4c;" (assignment_expression "*param_1 = local_4c" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_48;" (assignment_expression "param_1[1] = local_48" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_44;" (assignment_expression "param_1[2] = local_44" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = local_40;" (assignment_expression "param_1[3] = local_40" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = local_28;" (assignment_expression "param_1[9] = local_28" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) }))) }))) }))) (if_statement "if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }" if (parenthesized_expression "(local_24 == *(int *)puVar1)" ( (binary_expression "local_24 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00033414)();" (call_expression "(*(code *)PTR___stack_chk_fail_00033414)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00033414)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00033414" * (cast_expression "(code *)PTR___stack_chk_fail_00033414" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();" statement_identifier : (expression_statement "iVar4 = (*(code *)PTR_abort_00033300)();" (assignment_expression "iVar4 = (*(code *)PTR_abort_00033300)()" identifier = (call_expression "(*(code *)PTR_abort_00033300)()" (parenthesized_expression "(*(code *)PTR_abort_00033300)" ( (pointer_expression "*(code *)PTR_abort_00033300" * (cast_expression "(code *)PTR_abort_00033300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;)) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "_Bool hash_rehash(Hash_table *table,size_t candidate)\n\n{\n  undefined *puVar1;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  undefined3 extraout_var_01;\n  size_t sVar2;\n  _Bool _Var3;\n  undefined1 uVar4;\n  int iVar5;\n  int iVar6;\n  Hash_tuning *pHVar7;\n  double dVar8;\n  float fVar9;\n  Hash_table storage;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  pHVar7 = table->tuning;\n  iVar5 = *(int *)PTR___stack_chk_guard_00033430;\n  if (pHVar7->is_n_buckets == false) {\n    dVar8 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar9 = (float)dVar8 / pHVar7->growth_threshold;\n    if (fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar6 = 0;\n  }\n  else {\nLAB_00015d5c:\n    sVar2 = next_prime(candidate);\n    if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;\n    if (table->n_buckets == sVar2) {\n      iVar6 = 1;\n    }\n    else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }\n  }\n  if (iVar5 == *(int *)puVar1) {\n    return SUB41(iVar6,0);\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  uVar4 = (*(code *)PTR_abort_00033300)();\n  return (_Bool)uVar4;\n}\n\n" (function_definition "_Bool hash_rehash(Hash_table *table,size_t candidate)\n\n{\n  undefined *puVar1;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  undefined3 extraout_var_01;\n  size_t sVar2;\n  _Bool _Var3;\n  undefined1 uVar4;\n  int iVar5;\n  int iVar6;\n  Hash_tuning *pHVar7;\n  double dVar8;\n  float fVar9;\n  Hash_table storage;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  pHVar7 = table->tuning;\n  iVar5 = *(int *)PTR___stack_chk_guard_00033430;\n  if (pHVar7->is_n_buckets == false) {\n    dVar8 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar9 = (float)dVar8 / pHVar7->growth_threshold;\n    if (fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar6 = 0;\n  }\n  else {\nLAB_00015d5c:\n    sVar2 = next_prime(candidate);\n    if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;\n    if (table->n_buckets == sVar2) {\n      iVar6 = 1;\n    }\n    else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }\n  }\n  if (iVar5 == *(int *)puVar1) {\n    return SUB41(iVar6,0);\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  uVar4 = (*(code *)PTR_abort_00033300)();\n  return (_Bool)uVar4;\n}" type_identifier (function_declarator "hash_rehash(Hash_table *table,size_t candidate)" identifier (parameter_list "(Hash_table *table,size_t candidate)" ( (parameter_declaration "Hash_table *table" type_identifier (pointer_declarator "*table" * identifier)) , (parameter_declaration "size_t candidate" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined3 extraout_var;\n  undefined3 extraout_var_00;\n  undefined3 extraout_var_01;\n  size_t sVar2;\n  _Bool _Var3;\n  undefined1 uVar4;\n  int iVar5;\n  int iVar6;\n  Hash_tuning *pHVar7;\n  double dVar8;\n  float fVar9;\n  Hash_table storage;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  pHVar7 = table->tuning;\n  iVar5 = *(int *)PTR___stack_chk_guard_00033430;\n  if (pHVar7->is_n_buckets == false) {\n    dVar8 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar9 = (float)dVar8 / pHVar7->growth_threshold;\n    if (fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar6 = 0;\n  }\n  else {\nLAB_00015d5c:\n    sVar2 = next_prime(candidate);\n    if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;\n    if (table->n_buckets == sVar2) {\n      iVar6 = 1;\n    }\n    else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }\n  }\n  if (iVar5 == *(int *)puVar1) {\n    return SUB41(iVar6,0);\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  uVar4 = (*(code *)PTR_abort_00033300)();\n  return (_Bool)uVar4;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "undefined3 extraout_var_00;" type_identifier identifier ;) (declaration "undefined3 extraout_var_01;" type_identifier identifier ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "_Bool _Var3;" type_identifier identifier ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "Hash_tuning *pHVar7;" type_identifier (pointer_declarator "*pHVar7" * identifier) ;) (declaration "double dVar8;" primitive_type identifier ;) (declaration "float fVar9;" primitive_type identifier ;) (declaration "Hash_table storage;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00033430;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00033430" identifier = identifier) ;) (expression_statement "pHVar7 = table->tuning;" (assignment_expression "pHVar7 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (expression_statement "iVar5 = *(int *)PTR___stack_chk_guard_00033430;" (assignment_expression "iVar5 = *(int *)PTR___stack_chk_guard_00033430" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00033430" * (cast_expression "(int *)PTR___stack_chk_guard_00033430" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (pHVar7->is_n_buckets == false) {\n    dVar8 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar9 = (float)dVar8 / pHVar7->growth_threshold;\n    if (fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar6 = 0;\n  }\n  else {\nLAB_00015d5c:\n    sVar2 = next_prime(candidate);\n    if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;\n    if (table->n_buckets == sVar2) {\n      iVar6 = 1;\n    }\n    else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }\n  }" if (parenthesized_expression "(pHVar7->is_n_buckets == false)" ( (binary_expression "pHVar7->is_n_buckets == false" (field_expression "pHVar7->is_n_buckets" identifier -> field_identifier) == false) )) (compound_statement "{\n    dVar8 = (double)(int)candidate;\n    if ((int)candidate < 0) {\n      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar9 = (float)dVar8 / pHVar7->growth_threshold;\n    if (fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar6 = 0;\n  }" { (expression_statement "dVar8 = (double)(int)candidate;" (assignment_expression "dVar8 = (double)(int)candidate" identifier = (cast_expression "(double)(int)candidate" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)candidate" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)candidate < 0) {\n      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" if (parenthesized_expression "((int)candidate < 0)" ( (binary_expression "(int)candidate < 0" (cast_expression "(int)candidate" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" { (expression_statement "dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0);" (assignment_expression "dVar8 = dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" identifier = (binary_expression "dVar8 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00033108 + 0x1bc0)" * (cast_expression "(double *)(PTR_LAB_00033108 + 0x1bc0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bc0)" ( (binary_expression "PTR_LAB_00033108 + 0x1bc0" identifier + number_literal) )))))) ;) })) (expression_statement "fVar9 = (float)dVar8 / pHVar7->growth_threshold;" (assignment_expression "fVar9 = (float)dVar8 / pHVar7->growth_threshold" identifier = (binary_expression "(float)dVar8 / pHVar7->growth_threshold" (cast_expression "(float)dVar8" ( (type_descriptor "float" primitive_type) ) identifier) / (field_expression "pHVar7->growth_threshold" identifier -> field_identifier))) ;) (if_statement "if (fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }\n      goto LAB_00015d5c;\n    }" if (parenthesized_expression "(fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8))" ( (binary_expression "fVar9 < *(float *)(PTR_LAB_00033108 + 0x1bb8)" identifier < (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bb8)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bb8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bb8)" ( (binary_expression "PTR_LAB_00033108 + 0x1bb8" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }\n      goto LAB_00015d5c;\n    }" { (if_statement "if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9) {\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        candidate = (size_t)fVar9;\n      }" if (parenthesized_expression "(*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9)" ( (binary_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar9" (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" ( (binary_expression "PTR_LAB_00033108 + 0x1bbc" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }" { (expression_statement "candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;" (assignment_expression "candidate = (int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" identifier = (binary_expression "(int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" (cast_expression "(int)(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" ( (binary_expression "fVar9 - *(float *)(PTR_LAB_00033108 + 0x1bbc)" identifier - (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" ( (binary_expression "PTR_LAB_00033108 + 0x1bbc" identifier + number_literal) ))))) ))) | number_literal)) ;) }) (else_clause "else {\n        candidate = (size_t)fVar9;\n      }" else (compound_statement "{\n        candidate = (size_t)fVar9;\n      }" { (expression_statement "candidate = (size_t)fVar9;" (assignment_expression "candidate = (size_t)fVar9" identifier = (cast_expression "(size_t)fVar9" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) }))) (goto_statement "goto LAB_00015d5c;" goto statement_identifier ;) })) (labeled_statement "LAB_00015e70:\n    iVar6 = 0;" statement_identifier : (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00015d5c:\n    sVar2 = next_prime(candidate);\n    if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;\n    if (table->n_buckets == sVar2) {\n      iVar6 = 1;\n    }\n    else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00015d5c:\n    sVar2 = next_prime(candidate);\n    if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;\n    if (table->n_buckets == sVar2) {\n      iVar6 = 1;\n    }\n    else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }\n  }" { (labeled_statement "LAB_00015d5c:\n    sVar2 = next_prime(candidate);" statement_identifier : (expression_statement "sVar2 = next_prime(candidate);" (assignment_expression "sVar2 = next_prime(candidate)" identifier = (call_expression "next_prime(candidate)" identifier (argument_list "(candidate)" ( identifier )))) ;)) (if_statement "if ((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)) goto LAB_00015e70;" if (parenthesized_expression "((((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0))" ( (binary_expression "(((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)) || (sVar2 == 0)" (parenthesized_expression "(((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0))" ( (binary_expression "((int)(sVar2 << 2) < 0) || (sVar2 >> 0x1e != 0)" (parenthesized_expression "((int)(sVar2 << 2) < 0)" ( (binary_expression "(int)(sVar2 << 2) < 0" (cast_expression "(int)(sVar2 << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(sVar2 << 2)" ( (binary_expression "sVar2 << 2" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(sVar2 >> 0x1e != 0)" ( (binary_expression "sVar2 >> 0x1e != 0" (binary_expression "sVar2 >> 0x1e" identifier >> number_literal) != number_literal) ))) )) || (parenthesized_expression "(sVar2 == 0)" ( (binary_expression "sVar2 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00015e70;" goto statement_identifier ;)) (if_statement "if (table->n_buckets == sVar2) {\n      iVar6 = 1;\n    }\n    else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }" if (parenthesized_expression "(table->n_buckets == sVar2)" ( (binary_expression "table->n_buckets == sVar2" (field_expression "table->n_buckets" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      iVar6 = 1;\n    }" { (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }" else (compound_statement "{\n      storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);\n      if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;\n      storage.hasher = table->hasher;\n      storage.bucket_limit = storage.bucket + sVar2;\n      storage.comparator = table->comparator;\n      storage.data_freer = table->data_freer;\n      storage.free_entry_list = table->free_entry_list;\n      storage.n_buckets_used = 0;\n      storage.n_entries = 0;\n      storage.n_buckets = sVar2;\n      storage.tuning = pHVar7;\n      _Var3 = transfer_entries(&storage,table,false);\n      iVar6 = CONCAT31(extraout_var,_Var3);\n      if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }\n    }" { (expression_statement "storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8);" (assignment_expression "storage.bucket = (hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8)" (field_expression "storage.bucket" identifier . field_identifier) = (cast_expression "(hash_entry *)(*(code *)PTR_calloc_000332d4)(sVar2,8)" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_calloc_000332d4)(sVar2,8)" (parenthesized_expression "(*(code *)PTR_calloc_000332d4)" ( (pointer_expression "*(code *)PTR_calloc_000332d4" * (cast_expression "(code *)PTR_calloc_000332d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(sVar2,8)" ( identifier , number_literal ))))) ;) (if_statement "if (storage.bucket == (hash_entry *)0x0) goto LAB_00015e70;" if (parenthesized_expression "(storage.bucket == (hash_entry *)0x0)" ( (binary_expression "storage.bucket == (hash_entry *)0x0" (field_expression "storage.bucket" identifier . field_identifier) == (cast_expression "(hash_entry *)0x0" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00015e70;" goto statement_identifier ;)) (expression_statement "storage.hasher = table->hasher;" (assignment_expression "storage.hasher = table->hasher" (field_expression "storage.hasher" identifier . field_identifier) = (field_expression "table->hasher" identifier -> field_identifier)) ;) (expression_statement "storage.bucket_limit = storage.bucket + sVar2;" (assignment_expression "storage.bucket_limit = storage.bucket + sVar2" (field_expression "storage.bucket_limit" identifier . field_identifier) = (binary_expression "storage.bucket + sVar2" (field_expression "storage.bucket" identifier . field_identifier) + identifier)) ;) (expression_statement "storage.comparator = table->comparator;" (assignment_expression "storage.comparator = table->comparator" (field_expression "storage.comparator" identifier . field_identifier) = (field_expression "table->comparator" identifier -> field_identifier)) ;) (expression_statement "storage.data_freer = table->data_freer;" (assignment_expression "storage.data_freer = table->data_freer" (field_expression "storage.data_freer" identifier . field_identifier) = (field_expression "table->data_freer" identifier -> field_identifier)) ;) (expression_statement "storage.free_entry_list = table->free_entry_list;" (assignment_expression "storage.free_entry_list = table->free_entry_list" (field_expression "storage.free_entry_list" identifier . field_identifier) = (field_expression "table->free_entry_list" identifier -> field_identifier)) ;) (expression_statement "storage.n_buckets_used = 0;" (assignment_expression "storage.n_buckets_used = 0" (field_expression "storage.n_buckets_used" identifier . field_identifier) = number_literal) ;) (expression_statement "storage.n_entries = 0;" (assignment_expression "storage.n_entries = 0" (field_expression "storage.n_entries" identifier . field_identifier) = number_literal) ;) (expression_statement "storage.n_buckets = sVar2;" (assignment_expression "storage.n_buckets = sVar2" (field_expression "storage.n_buckets" identifier . field_identifier) = identifier) ;) (expression_statement "storage.tuning = pHVar7;" (assignment_expression "storage.tuning = pHVar7" (field_expression "storage.tuning" identifier . field_identifier) = identifier) ;) (expression_statement "_Var3 = transfer_entries(&storage,table,false);" (assignment_expression "_Var3 = transfer_entries(&storage,table,false)" identifier = (call_expression "transfer_entries(&storage,table,false)" identifier (argument_list "(&storage,table,false)" ( (pointer_expression "&storage" & identifier) , identifier , false )))) ;) (expression_statement "iVar6 = CONCAT31(extraout_var,_Var3);" (assignment_expression "iVar6 = CONCAT31(extraout_var,_Var3)" identifier = (call_expression "CONCAT31(extraout_var,_Var3)" identifier (argument_list "(extraout_var,_Var3)" ( identifier , identifier )))) ;) (if_statement "if (iVar6 == 0) {\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        table->free_entry_list = storage.free_entry_list;\n        _Var3 = transfer_entries(table,&storage,true);\n        if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(storage.bucket);\n      }" { (expression_statement "table->free_entry_list = storage.free_entry_list;" (assignment_expression "table->free_entry_list = storage.free_entry_list" (field_expression "table->free_entry_list" identifier -> field_identifier) = (field_expression "storage.free_entry_list" identifier . field_identifier)) ;) (expression_statement "_Var3 = transfer_entries(table,&storage,true);" (assignment_expression "_Var3 = transfer_entries(table,&storage,true)" identifier = (call_expression "transfer_entries(table,&storage,true)" identifier (argument_list "(table,&storage,true)" ( identifier , (pointer_expression "&storage" & identifier) , true )))) ;) (if_statement "if ((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))\n        goto LAB_00015f14;" if (parenthesized_expression "((CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0))" ( (binary_expression "(CONCAT31(extraout_var_00,_Var3) == 0) ||\n           (_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0)" (parenthesized_expression "(CONCAT31(extraout_var_00,_Var3) == 0)" ( (binary_expression "CONCAT31(extraout_var_00,_Var3) == 0" (call_expression "CONCAT31(extraout_var_00,_Var3)" identifier (argument_list "(extraout_var_00,_Var3)" ( identifier , identifier ))) == number_literal) )) || (parenthesized_expression "(_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0)" ( (comma_expression "_Var3 = transfer_entries(table,&storage,false), CONCAT31(extraout_var_01,_Var3) == 0" (assignment_expression "_Var3 = transfer_entries(table,&storage,false)" identifier = (call_expression "transfer_entries(table,&storage,false)" identifier (argument_list "(table,&storage,false)" ( identifier , (pointer_expression "&storage" & identifier) , false )))) , (binary_expression "CONCAT31(extraout_var_01,_Var3) == 0" (call_expression "CONCAT31(extraout_var_01,_Var3)" identifier (argument_list "(extraout_var_01,_Var3)" ( identifier , identifier ))) == number_literal)) ))) )) (goto_statement "goto LAB_00015f14;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_free_00033438)(storage.bucket);" (call_expression "(*(code *)PTR_free_00033438)(storage.bucket)" (parenthesized_expression "(*(code *)PTR_free_00033438)" ( (pointer_expression "*(code *)PTR_free_00033438" * (cast_expression "(code *)PTR_free_00033438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(storage.bucket)" ( (field_expression "storage.bucket" identifier . field_identifier) ))) ;) }) (else_clause "else {\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }" else (compound_statement "{\n        (*(code *)PTR_free_00033438)(table->bucket);\n        table->bucket = storage.bucket;\n        table->bucket_limit = storage.bucket_limit;\n        table->n_buckets = storage.n_buckets;\n        table->n_buckets_used = storage.n_buckets_used;\n        table->free_entry_list = storage.free_entry_list;\n      }" { (expression_statement "(*(code *)PTR_free_00033438)(table->bucket);" (call_expression "(*(code *)PTR_free_00033438)(table->bucket)" (parenthesized_expression "(*(code *)PTR_free_00033438)" ( (pointer_expression "*(code *)PTR_free_00033438" * (cast_expression "(code *)PTR_free_00033438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(table->bucket)" ( (field_expression "table->bucket" identifier -> field_identifier) ))) ;) (expression_statement "table->bucket = storage.bucket;" (assignment_expression "table->bucket = storage.bucket" (field_expression "table->bucket" identifier -> field_identifier) = (field_expression "storage.bucket" identifier . field_identifier)) ;) (expression_statement "table->bucket_limit = storage.bucket_limit;" (assignment_expression "table->bucket_limit = storage.bucket_limit" (field_expression "table->bucket_limit" identifier -> field_identifier) = (field_expression "storage.bucket_limit" identifier . field_identifier)) ;) (expression_statement "table->n_buckets = storage.n_buckets;" (assignment_expression "table->n_buckets = storage.n_buckets" (field_expression "table->n_buckets" identifier -> field_identifier) = (field_expression "storage.n_buckets" identifier . field_identifier)) ;) (expression_statement "table->n_buckets_used = storage.n_buckets_used;" (assignment_expression "table->n_buckets_used = storage.n_buckets_used" (field_expression "table->n_buckets_used" identifier -> field_identifier) = (field_expression "storage.n_buckets_used" identifier . field_identifier)) ;) (expression_statement "table->free_entry_list = storage.free_entry_list;" (assignment_expression "table->free_entry_list = storage.free_entry_list" (field_expression "table->free_entry_list" identifier -> field_identifier) = (field_expression "storage.free_entry_list" identifier . field_identifier)) ;) }))) }))) }))) (if_statement "if (iVar5 == *(int *)puVar1) {\n    return SUB41(iVar6,0);\n  }" if (parenthesized_expression "(iVar5 == *(int *)puVar1)" ( (binary_expression "iVar5 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return SUB41(iVar6,0);\n  }" { (return_statement "return SUB41(iVar6,0);" return (call_expression "SUB41(iVar6,0)" identifier (argument_list "(iVar6,0)" ( identifier , number_literal ))) ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00033414)();" (call_expression "(*(code *)PTR___stack_chk_fail_00033414)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00033414)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00033414" * (cast_expression "(code *)PTR___stack_chk_fail_00033414" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00015f14:\n  uVar4 = (*(code *)PTR_abort_00033300)();" statement_identifier : (expression_statement "uVar4 = (*(code *)PTR_abort_00033300)();" (assignment_expression "uVar4 = (*(code *)PTR_abort_00033300)()" identifier = (call_expression "(*(code *)PTR_abort_00033300)()" (parenthesized_expression "(*(code *)PTR_abort_00033300)" ( (pointer_expression "*(code *)PTR_abort_00033300" * (cast_expression "(code *)PTR_abort_00033300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;)) (return_statement "return (_Bool)uVar4;" return (cast_expression "(_Bool)uVar4" ( (type_descriptor "_Bool" type_identifier) ) identifier) ;) })))
(translation_unit "int hash_rehash(int *param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}\n\n" (function_definition "int hash_rehash(int *param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}" primitive_type (function_declarator "hash_rehash(int *param_1,uint param_2)" identifier (parameter_list "(int *param_1,uint param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint param_2" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "double dVar5;" primitive_type identifier ;) (declaration "float fVar6;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "int local_24;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_00033430;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00033430" identifier = identifier) ;) (expression_statement "iVar4 = param_1[5];" (assignment_expression "iVar4 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_00033430;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_00033430" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00033430" * (cast_expression "(int *)PTR___stack_chk_guard_00033430" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar4 + 0x10) == '\0')" ( (binary_expression "*(char *)(iVar4 + 0x10) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x10)" * (cast_expression "(char *)(iVar4 + 0x10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }" { (expression_statement "dVar5 = (double)(int)param_2;" (assignment_expression "dVar5 = (double)(int)param_2" identifier = (cast_expression "(double)(int)param_2" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" if (parenthesized_expression "((int)param_2 < 0)" ( (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" { (expression_statement "dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);" (assignment_expression "dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" identifier = (binary_expression "dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" identifier + (pointer_expression "*(double *)(PTR_LAB_00033108 + 0x1bc0)" * (cast_expression "(double *)(PTR_LAB_00033108 + 0x1bc0)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bc0)" ( (binary_expression "PTR_LAB_00033108 + 0x1bc0" identifier + number_literal) )))))) ;) })) (expression_statement "fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);" (assignment_expression "fVar6 = (float)dVar5 / *(float *)(iVar4 + 8)" identifier = (binary_expression "(float)dVar5 / *(float *)(iVar4 + 8)" (cast_expression "(float)dVar5" ( (type_descriptor "float" primitive_type) ) identifier) / (pointer_expression "*(float *)(iVar4 + 8)" * (cast_expression "(float *)(iVar4 + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))))) ;) (if_statement "if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }" if (parenthesized_expression "(fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8))" ( (binary_expression "fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)" identifier < (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bb8)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bb8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bb8)" ( (binary_expression "PTR_LAB_00033108 + 0x1bb8" identifier + number_literal) ))))) )) (compound_statement "{\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }" { (if_statement "if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }" if (parenthesized_expression "(*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6)" ( (binary_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6" (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" ( (binary_expression "PTR_LAB_00033108 + 0x1bbc" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }" { (expression_statement "param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;" (assignment_expression "param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" identifier = (binary_expression "(int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" (cast_expression "(int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" ( (binary_expression "fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)" identifier - (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" * (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" ( (binary_expression "PTR_LAB_00033108 + 0x1bbc" identifier + number_literal) ))))) ))) | number_literal)) ;) }) (else_clause "else {\n        param_2 = (uint)fVar6;\n      }" else (compound_statement "{\n        param_2 = (uint)fVar6;\n      }" { (expression_statement "param_2 = (uint)fVar6;" (assignment_expression "param_2 = (uint)fVar6" identifier = (cast_expression "(uint)fVar6" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (goto_statement "goto LAB_00015d5c;" goto statement_identifier ;) })) (labeled_statement "LAB_00015e70:\n    iVar4 = 0;" statement_identifier : (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" else (compound_statement "{\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" { (labeled_statement "LAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);" statement_identifier : (expression_statement "uVar2 = FUN_00014d80(param_2);" (assignment_expression "uVar2 = FUN_00014d80(param_2)" identifier = (call_expression "FUN_00014d80(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;)) (if_statement "if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;" if (parenthesized_expression "((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0))" ( (binary_expression "(((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)" (parenthesized_expression "(((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0))" ( (binary_expression "((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)" (parenthesized_expression "((int)(uVar2 << 2) < 0)" ( (binary_expression "(int)(uVar2 << 2) < 0" (cast_expression "(int)(uVar2 << 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar2 << 2)" ( (binary_expression "uVar2 << 2" identifier << number_literal) ))) < number_literal) )) || (parenthesized_expression "(uVar2 >> 0x1e != 0)" ( (binary_expression "uVar2 >> 0x1e != 0" (binary_expression "uVar2 >> 0x1e" identifier >> number_literal) != number_literal) ))) )) || (parenthesized_expression "(uVar2 == 0)" ( (binary_expression "uVar2 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_00015e70;" goto statement_identifier ;)) (if_statement "if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" if (parenthesized_expression "(param_1[2] == uVar2)" ( (binary_expression "param_1[2] == uVar2" (subscript_expression "param_1[2]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      iVar4 = 1;\n    }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" else (compound_statement "{\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" { (expression_statement "local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);" (assignment_expression "local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8)" identifier = (call_expression "(*(code *)PTR_calloc_000332d4)(uVar2,8)" (parenthesized_expression "(*(code *)PTR_calloc_000332d4)" ( (pointer_expression "*(code *)PTR_calloc_000332d4" * (cast_expression "(code *)PTR_calloc_000332d4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2,8)" ( identifier , number_literal )))) ;) (if_statement "if (local_4c == 0) goto LAB_00015e70;" if (parenthesized_expression "(local_4c == 0)" ( (binary_expression "local_4c == 0" identifier == number_literal) )) (goto_statement "goto LAB_00015e70;" goto statement_identifier ;)) (expression_statement "local_34 = param_1[6];" (assignment_expression "local_34 = param_1[6]" identifier = (subscript_expression "param_1[6]" identifier [ number_literal ])) ;) (expression_statement "local_48 = local_4c + uVar2 * 8;" (assignment_expression "local_48 = local_4c + uVar2 * 8" identifier = (binary_expression "local_4c + uVar2 * 8" identifier + (binary_expression "uVar2 * 8" identifier * number_literal))) ;) (expression_statement "local_30 = param_1[7];" (assignment_expression "local_30 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "local_2c = param_1[8];" (assignment_expression "local_2c = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "local_28 = param_1[9];" (assignment_expression "local_28 = param_1[9]" identifier = (subscript_expression "param_1[9]" identifier [ number_literal ])) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "local_44 = uVar2;" (assignment_expression "local_44 = uVar2" identifier = identifier) ;) (expression_statement "local_38 = iVar4;" (assignment_expression "local_38 = iVar4" identifier = identifier) ;) (expression_statement "iVar4 = FUN_000150ac(&local_4c,param_1,0);" (assignment_expression "iVar4 = FUN_000150ac(&local_4c,param_1,0)" identifier = (call_expression "FUN_000150ac(&local_4c,param_1,0)" identifier (argument_list "(&local_4c,param_1,0)" ( (pointer_expression "&local_4c" & identifier) , identifier , number_literal )))) ;) (if_statement "if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }" { (expression_statement "param_1[9] = local_28;" (assignment_expression "param_1[9] = local_28" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = FUN_000150ac(param_1,&local_4c,1);" (assignment_expression "iVar3 = FUN_000150ac(param_1,&local_4c,1)" identifier = (call_expression "FUN_000150ac(param_1,&local_4c,1)" identifier (argument_list "(param_1,&local_4c,1)" ( identifier , (pointer_expression "&local_4c" & identifier) , number_literal )))) ;) (if_statement "if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;" if (parenthesized_expression "((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))" ( (binary_expression "(iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0)" (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0)" ( (comma_expression "iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0" (assignment_expression "iVar3 = FUN_000150ac(param_1,&local_4c,0)" identifier = (call_expression "FUN_000150ac(param_1,&local_4c,0)" identifier (argument_list "(param_1,&local_4c,0)" ( identifier , (pointer_expression "&local_4c" & identifier) , number_literal )))) , (binary_expression "iVar3 == 0" identifier == number_literal)) ))) )) (goto_statement "goto LAB_00015f14;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_free_00033438)(local_4c);" (call_expression "(*(code *)PTR_free_00033438)(local_4c)" (parenthesized_expression "(*(code *)PTR_free_00033438)" ( (pointer_expression "*(code *)PTR_free_00033438" * (cast_expression "(code *)PTR_free_00033438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_4c)" ( identifier ))) ;) }) (else_clause "else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" else (compound_statement "{\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" { (expression_statement "(*(code *)PTR_free_00033438)(*param_1);" (call_expression "(*(code *)PTR_free_00033438)(*param_1)" (parenthesized_expression "(*(code *)PTR_free_00033438)" ( (pointer_expression "*(code *)PTR_free_00033438" * (cast_expression "(code *)PTR_free_00033438" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;) (expression_statement "*param_1 = local_4c;" (assignment_expression "*param_1 = local_4c" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "param_1[1] = local_48;" (assignment_expression "param_1[1] = local_48" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[2] = local_44;" (assignment_expression "param_1[2] = local_44" (subscript_expression "param_1[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[3] = local_40;" (assignment_expression "param_1[3] = local_40" (subscript_expression "param_1[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_1[9] = local_28;" (assignment_expression "param_1[9] = local_28" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) }))) }))) }))) (if_statement "if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }" if (parenthesized_expression "(local_24 == *(int *)puVar1)" ( (binary_expression "local_24 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00033414)();" (call_expression "(*(code *)PTR___stack_chk_fail_00033414)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00033414)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00033414" * (cast_expression "(code *)PTR___stack_chk_fail_00033414" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();" statement_identifier : (expression_statement "iVar4 = (*(code *)PTR_abort_00033300)();" (assignment_expression "iVar4 = (*(code *)PTR_abort_00033300)()" identifier = (call_expression "(*(code *)PTR_abort_00033300)()" (parenthesized_expression "(*(code *)PTR_abort_00033300)" ( (pointer_expression "*(code *)PTR_abort_00033300" * (cast_expression "(code *)PTR_abort_00033300" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;)) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) / (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) < LIT) )) || (parenthesized_expression ( (binary_expression (binary_expression IDENT >> LIT) != LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , LIT )))) , (binary_expression IDENT == LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;)) (return_statement return IDENT ;) })))
(function_definition "int hash_rehash(int *param_1,uint param_2)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}" (primitive_type "int") (function_declarator "hash_rehash(int *param_1,uint param_2)" (identifier "hash_rehash") (parameter_list "(int *param_1,uint param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint param_2" (type_identifier "uint") (identifier "param_2")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  double dVar5;\n  float fVar6;\n  int local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  undefined4 local_3c;\n  int local_38;\n  int local_34;\n  int local_30;\n  int local_2c;\n  int local_28;\n  int local_24;\n  \n  puVar1 = PTR___stack_chk_guard_00033430;\n  iVar4 = param_1[5];\n  local_24 = *(int *)PTR___stack_chk_guard_00033430;\n  if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }\n  if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00033414)();\nLAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();\n  return iVar4;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "double dVar5;" (primitive_type "double") (identifier "dVar5") (; ";")) (declaration "float fVar6;" (primitive_type "float") (identifier "fVar6") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "int local_48;" (primitive_type "int") (identifier "local_48") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "int local_40;" (primitive_type "int") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "int local_38;" (primitive_type "int") (identifier "local_38") (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_00033430;" (assignment_expression "puVar1 = PTR___stack_chk_guard_00033430" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_00033430")) (; ";")) (expression_statement "iVar4 = param_1[5];" (assignment_expression "iVar4 = param_1[5]" (identifier "iVar4") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "local_24 = *(int *)PTR___stack_chk_guard_00033430;" (assignment_expression "local_24 = *(int *)PTR___stack_chk_guard_00033430" (identifier "local_24") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00033430" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00033430" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00033430")))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x10) == '\0') {\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }\n  else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x10) == '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x10) == '\0'" (pointer_expression "*(char *)(iVar4 + 0x10)" (* "*") (cast_expression "(char *)(iVar4 + 0x10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    dVar5 = (double)(int)param_2;\n    if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }\n    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);\n    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }\nLAB_00015e70:\n    iVar4 = 0;\n  }" ({ "{") (expression_statement "dVar5 = (double)(int)param_2;" (assignment_expression "dVar5 = (double)(int)param_2" (identifier "dVar5") (= "=") (cast_expression "(double)(int)param_2" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (if_statement "if ((int)param_2 < 0) {\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" (if "if") (parenthesized_expression "((int)param_2 < 0)" (( "(") (binary_expression "(int)param_2 < 0" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);\n    }" ({ "{") (expression_statement "dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);" (assignment_expression "dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" (identifier "dVar5") (= "=") (binary_expression "dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0)" (identifier "dVar5") (+ "+") (pointer_expression "*(double *)(PTR_LAB_00033108 + 0x1bc0)" (* "*") (cast_expression "(double *)(PTR_LAB_00033108 + 0x1bc0)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00033108 + 0x1bc0)" (( "(") (binary_expression "PTR_LAB_00033108 + 0x1bc0" (identifier "PTR_LAB_00033108") (+ "+") (number_literal "0x1bc0")) () ")")))))) (; ";")) (} "}"))) (expression_statement "fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);" (assignment_expression "fVar6 = (float)dVar5 / *(float *)(iVar4 + 8)" (identifier "fVar6") (= "=") (binary_expression "(float)dVar5 / *(float *)(iVar4 + 8)" (cast_expression "(float)dVar5" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "dVar5")) (/ "/") (pointer_expression "*(float *)(iVar4 + 8)" (* "*") (cast_expression "(float *)(iVar4 + 8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")")))))) (; ";")) (if_statement "if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }" (if "if") (parenthesized_expression "(fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8))" (( "(") (binary_expression "fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)" (identifier "fVar6") (< "<") (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bb8)" (* "*") (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bb8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00033108 + 0x1bb8)" (( "(") (binary_expression "PTR_LAB_00033108 + 0x1bb8" (identifier "PTR_LAB_00033108") (+ "+") (number_literal "0x1bb8")) () ")"))))) () ")")) (compound_statement "{\n      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }\n      goto LAB_00015d5c;\n    }" ({ "{") (if_statement "if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }\n      else {\n        param_2 = (uint)fVar6;\n      }" (if "if") (parenthesized_expression "(*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6)" (( "(") (binary_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6" (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" (* "*") (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" (( "(") (binary_expression "PTR_LAB_00033108 + 0x1bbc" (identifier "PTR_LAB_00033108") (+ "+") (number_literal "0x1bbc")) () ")")))) (<= "<=") (identifier "fVar6")) () ")")) (compound_statement "{\n        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;\n      }" ({ "{") (expression_statement "param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;" (assignment_expression "param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" (identifier "param_2") (= "=") (binary_expression "(int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000" (cast_expression "(int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc))" (( "(") (binary_expression "fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)" (identifier "fVar6") (- "-") (pointer_expression "*(float *)(PTR_LAB_00033108 + 0x1bbc)" (* "*") (cast_expression "(float *)(PTR_LAB_00033108 + 0x1bbc)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00033108 + 0x1bbc)" (( "(") (binary_expression "PTR_LAB_00033108 + 0x1bbc" (identifier "PTR_LAB_00033108") (+ "+") (number_literal "0x1bbc")) () ")"))))) () ")"))) (| "|") (number_literal "0x80000000"))) (; ";")) (} "}")) (else_clause "else {\n        param_2 = (uint)fVar6;\n      }" (else "else") (compound_statement "{\n        param_2 = (uint)fVar6;\n      }" ({ "{") (expression_statement "param_2 = (uint)fVar6;" (assignment_expression "param_2 = (uint)fVar6" (identifier "param_2") (= "=") (cast_expression "(uint)fVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "fVar6"))) (; ";")) (} "}")))) (goto_statement "goto LAB_00015d5c;" (goto "goto") (statement_identifier "LAB_00015d5c") (; ";")) (} "}"))) (labeled_statement "LAB_00015e70:\n    iVar4 = 0;" (statement_identifier "LAB_00015e70") (: ":") (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" (else "else") (compound_statement "{\nLAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);\n    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;\n    if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_00015d5c:\n    uVar2 = FUN_00014d80(param_2);" (statement_identifier "LAB_00015d5c") (: ":") (expression_statement "uVar2 = FUN_00014d80(param_2);" (assignment_expression "uVar2 = FUN_00014d80(param_2)" (identifier "uVar2") (= "=") (call_expression "FUN_00014d80(param_2)" (identifier "FUN_00014d80") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";"))) (if_statement "if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;" (if "if") (parenthesized_expression "((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0))" (( "(") (binary_expression "(((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)" (parenthesized_expression "(((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0))" (( "(") (binary_expression "((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)" (parenthesized_expression "((int)(uVar2 << 2) < 0)" (( "(") (binary_expression "(int)(uVar2 << 2) < 0" (cast_expression "(int)(uVar2 << 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar2 << 2)" (( "(") (binary_expression "uVar2 << 2" (identifier "uVar2") (<< "<<") (number_literal "2")) () ")"))) (< "<") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar2 >> 0x1e != 0)" (( "(") (binary_expression "uVar2 >> 0x1e != 0" (binary_expression "uVar2 >> 0x1e" (identifier "uVar2") (>> ">>") (number_literal "0x1e")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(uVar2 == 0)" (( "(") (binary_expression "uVar2 == 0" (identifier "uVar2") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00015e70;" (goto "goto") (statement_identifier "LAB_00015e70") (; ";"))) (if_statement "if (param_1[2] == uVar2) {\n      iVar4 = 1;\n    }\n    else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" (if "if") (parenthesized_expression "(param_1[2] == uVar2)" (( "(") (binary_expression "param_1[2] == uVar2" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (identifier "uVar2")) () ")")) (compound_statement "{\n      iVar4 = 1;\n    }" ({ "{") (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" (else "else") (compound_statement "{\n      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);\n      if (local_4c == 0) goto LAB_00015e70;\n      local_34 = param_1[6];\n      local_48 = local_4c + uVar2 * 8;\n      local_30 = param_1[7];\n      local_2c = param_1[8];\n      local_28 = param_1[9];\n      local_40 = 0;\n      local_3c = 0;\n      local_44 = uVar2;\n      local_38 = iVar4;\n      iVar4 = FUN_000150ac(&local_4c,param_1,0);\n      if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }\n    }" ({ "{") (expression_statement "local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);" (assignment_expression "local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8)" (identifier "local_4c") (= "=") (call_expression "(*(code *)PTR_calloc_000332d4)(uVar2,8)" (parenthesized_expression "(*(code *)PTR_calloc_000332d4)" (( "(") (pointer_expression "*(code *)PTR_calloc_000332d4" (* "*") (cast_expression "(code *)PTR_calloc_000332d4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_calloc_000332d4"))) () ")")) (argument_list "(uVar2,8)" (( "(") (identifier "uVar2") (, ",") (number_literal "8") () ")")))) (; ";")) (if_statement "if (local_4c == 0) goto LAB_00015e70;" (if "if") (parenthesized_expression "(local_4c == 0)" (( "(") (binary_expression "local_4c == 0" (identifier "local_4c") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00015e70;" (goto "goto") (statement_identifier "LAB_00015e70") (; ";"))) (expression_statement "local_34 = param_1[6];" (assignment_expression "local_34 = param_1[6]" (identifier "local_34") (= "=") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "local_48 = local_4c + uVar2 * 8;" (assignment_expression "local_48 = local_4c + uVar2 * 8" (identifier "local_48") (= "=") (binary_expression "local_4c + uVar2 * 8" (identifier "local_4c") (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8")))) (; ";")) (expression_statement "local_30 = param_1[7];" (assignment_expression "local_30 = param_1[7]" (identifier "local_30") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "local_2c = param_1[8];" (assignment_expression "local_2c = param_1[8]" (identifier "local_2c") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "local_28 = param_1[9];" (assignment_expression "local_28 = param_1[9]" (identifier "local_28") (= "=") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_44 = uVar2;" (assignment_expression "local_44 = uVar2" (identifier "local_44") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "local_38 = iVar4;" (assignment_expression "local_38 = iVar4" (identifier "local_38") (= "=") (identifier "iVar4")) (; ";")) (expression_statement "iVar4 = FUN_000150ac(&local_4c,param_1,0);" (assignment_expression "iVar4 = FUN_000150ac(&local_4c,param_1,0)" (identifier "iVar4") (= "=") (call_expression "FUN_000150ac(&local_4c,param_1,0)" (identifier "FUN_000150ac") (argument_list "(&local_4c,param_1,0)" (( "(") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (identifier "param_1") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) {\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }\n      else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        param_1[9] = local_28;\n        iVar3 = FUN_000150ac(param_1,&local_4c,1);\n        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;\n        (*(code *)PTR_free_00033438)(local_4c);\n      }" ({ "{") (expression_statement "param_1[9] = local_28;" (assignment_expression "param_1[9] = local_28" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_28")) (; ";")) (expression_statement "iVar3 = FUN_000150ac(param_1,&local_4c,1);" (assignment_expression "iVar3 = FUN_000150ac(param_1,&local_4c,1)" (identifier "iVar3") (= "=") (call_expression "FUN_000150ac(param_1,&local_4c,1)" (identifier "FUN_000150ac") (argument_list "(param_1,&local_4c,1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))\n        goto LAB_00015f14;" (if "if") (parenthesized_expression "((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))" (( "(") (binary_expression "(iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0)" (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0)" (( "(") (comma_expression "iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0" (assignment_expression "iVar3 = FUN_000150ac(param_1,&local_4c,0)" (identifier "iVar3") (= "=") (call_expression "FUN_000150ac(param_1,&local_4c,0)" (identifier "FUN_000150ac") (argument_list "(param_1,&local_4c,0)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_4c" (& "&") (identifier "local_4c")) (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00015f14;" (goto "goto") (statement_identifier "LAB_00015f14") (; ";"))) (expression_statement "(*(code *)PTR_free_00033438)(local_4c);" (call_expression "(*(code *)PTR_free_00033438)(local_4c)" (parenthesized_expression "(*(code *)PTR_free_00033438)" (( "(") (pointer_expression "*(code *)PTR_free_00033438" (* "*") (cast_expression "(code *)PTR_free_00033438" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00033438"))) () ")")) (argument_list "(local_4c)" (( "(") (identifier "local_4c") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" (else "else") (compound_statement "{\n        (*(code *)PTR_free_00033438)(*param_1);\n        *param_1 = local_4c;\n        param_1[1] = local_48;\n        param_1[2] = local_44;\n        param_1[3] = local_40;\n        param_1[9] = local_28;\n      }" ({ "{") (expression_statement "(*(code *)PTR_free_00033438)(*param_1);" (call_expression "(*(code *)PTR_free_00033438)(*param_1)" (parenthesized_expression "(*(code *)PTR_free_00033438)" (( "(") (pointer_expression "*(code *)PTR_free_00033438" (* "*") (cast_expression "(code *)PTR_free_00033438" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00033438"))) () ")")) (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";")) (expression_statement "*param_1 = local_4c;" (assignment_expression "*param_1 = local_4c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "local_4c")) (; ";")) (expression_statement "param_1[1] = local_48;" (assignment_expression "param_1[1] = local_48" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_48")) (; ";")) (expression_statement "param_1[2] = local_44;" (assignment_expression "param_1[2] = local_44" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "local_44")) (; ";")) (expression_statement "param_1[3] = local_40;" (assignment_expression "param_1[3] = local_40" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "local_40")) (; ";")) (expression_statement "param_1[9] = local_28;" (assignment_expression "param_1[9] = local_28" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "local_28")) (; ";")) (} "}")))) (} "}")))) (} "}")))) (if_statement "if (local_24 == *(int *)puVar1) {\n    return iVar4;\n  }" (if "if") (parenthesized_expression "(local_24 == *(int *)puVar1)" (( "(") (binary_expression "local_24 == *(int *)puVar1" (identifier "local_24") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return iVar4;\n  }" ({ "{") (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___stack_chk_fail_00033414)();" (call_expression "(*(code *)PTR___stack_chk_fail_00033414)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00033414)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00033414" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00033414" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00033414"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_00015f14:\n  iVar4 = (*(code *)PTR_abort_00033300)();" (statement_identifier "LAB_00015f14") (: ":") (expression_statement "iVar4 = (*(code *)PTR_abort_00033300)();" (assignment_expression "iVar4 = (*(code *)PTR_abort_00033300)()" (identifier "iVar4") (= "=") (call_expression "(*(code *)PTR_abort_00033300)()" (parenthesized_expression "(*(code *)PTR_abort_00033300)" (( "(") (pointer_expression "*(code *)PTR_abort_00033300" (* "*") (cast_expression "(code *)PTR_abort_00033300" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_abort_00033300"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";"))) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) alternative: (else_clause (compound_statement (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 (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))))) (return_statement (identifier)))))

int MASKED(int *param_1,uint param_2)

{
  undefined *puVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  double dVar5;
  float fVar6;
  int local_4c;
  int local_48;
  uint local_44;
  int local_40;
  undefined4 local_3c;
  int local_38;
  int local_34;
  int local_30;
  int local_2c;
  int local_28;
  int local_24;
  
  puVar1 = PTR___stack_chk_guard_00033430;
  iVar4 = param_1[5];
  local_24 = *(int *)PTR___stack_chk_guard_00033430;
  if (*(char *)(iVar4 + 0x10) == '\0') {
    dVar5 = (double)(int)param_2;
    if ((int)param_2 < 0) {
      dVar5 = dVar5 + *(double *)(PTR_LAB_00033108 + 0x1bc0);
    }
    fVar6 = (float)dVar5 / *(float *)(iVar4 + 8);
    if (fVar6 < *(float *)(PTR_LAB_00033108 + 0x1bb8)) {
      if (*(float *)(PTR_LAB_00033108 + 0x1bbc) <= fVar6) {
        param_2 = (int)(fVar6 - *(float *)(PTR_LAB_00033108 + 0x1bbc)) | 0x80000000;
      }
      else {
        param_2 = (uint)fVar6;
      }
      goto LAB_00015d5c;
    }
LAB_00015e70:
    iVar4 = 0;
  }
  else {
LAB_00015d5c:
    uVar2 = FUN_00014d80(param_2);
    if ((((int)(uVar2 << 2) < 0) || (uVar2 >> 0x1e != 0)) || (uVar2 == 0)) goto LAB_00015e70;
    if (param_1[2] == uVar2) {
      iVar4 = 1;
    }
    else {
      local_4c = (*(code *)PTR_calloc_000332d4)(uVar2,8);
      if (local_4c == 0) goto LAB_00015e70;
      local_34 = param_1[6];
      local_48 = local_4c + uVar2 * 8;
      local_30 = param_1[7];
      local_2c = param_1[8];
      local_28 = param_1[9];
      local_40 = 0;
      local_3c = 0;
      local_44 = uVar2;
      local_38 = iVar4;
      iVar4 = FUN_000150ac(&local_4c,param_1,0);
      if (iVar4 == 0) {
        param_1[9] = local_28;
        iVar3 = FUN_000150ac(param_1,&local_4c,1);
        if ((iVar3 == 0) || (iVar3 = FUN_000150ac(param_1,&local_4c,0), iVar3 == 0))
        goto LAB_00015f14;
        (*(code *)PTR_free_00033438)(local_4c);
      }
      else {
        (*(code *)PTR_free_00033438)(*param_1);
        *param_1 = local_4c;
        param_1[1] = local_48;
        param_1[2] = local_44;
        param_1[3] = local_40;
        param_1[9] = local_28;
      }
    }
  }
  if (local_24 == *(int *)puVar1) {
    return iVar4;
  }
  (*(code *)PTR___stack_chk_fail_00033414)();
LAB_00015f14:
  iVar4 = (*(code *)PTR_abort_00033300)();
  return iVar4;
}

