
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int hash_insert_if_absent(Hash_table *table,void *entry,void **matched_ent)

{
  hash_entry *phVar1;
  Hash_tuning *pHVar2;
  float fVar3;
  _Bool _Var4;
  void *pvVar5;
  int iVar6;
  hash_entry *phVar7;
  int in_GS_OFFSET;
  size_t local_3c;
  hash_entry *bucket;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (entry == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  pvVar5 = hash_find_entry(table,entry,&bucket,false);
  if (pvVar5 != (void *)0x0) {
    iVar6 = 0;
    if (matched_ent != (void **)0x0) {
      *matched_ent = pvVar5;
    }
    goto LAB_00014e7a;
  }
  if ((float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used) {
    check_tuning((Hash_table *)&table->tuning);
    pHVar2 = table->tuning;
    if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)
    goto LAB_00014ed8;
    fVar3 = (float)table->n_buckets * pHVar2->growth_factor;
    if (pHVar2->is_n_buckets == false) {
      fVar3 = fVar3 * pHVar2->growth_threshold;
    }
    if (fVar3 < DAT_0001d5c8) {
      local_3c = (size_t)(longlong)ROUND(fVar3);
      _Var4 = hash_rehash(table,local_3c);
      if (_Var4) {
        pvVar5 = hash_find_entry(table,entry,&bucket,false);
        if (pvVar5 != (void *)0x0) {
          iVar6 = hash_insert_if_absent_cold_8();
          return iVar6;
        }
        goto LAB_00014ed8;
      }
    }
LAB_00014f77:
    iVar6 = -1;
  }
  else {
LAB_00014ed8:
    if (bucket->data == (void *)0x0) {
      bucket->data = entry;
      iVar6 = 1;
      table->n_entries = table->n_entries + 1;
      table->n_buckets_used = table->n_buckets_used + 1;
      goto LAB_00014e7a;
    }
    phVar7 = table->free_entry_list;
    if (phVar7 == (hash_entry *)0x0) {
      phVar7 = (hash_entry *)malloc(8);
      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;
    }
    else {
      table->free_entry_list = phVar7->next;
    }
    phVar1 = bucket->next;
    phVar7->data = entry;
    phVar7->next = phVar1;
    bucket->next = phVar7;
    iVar6 = 1;
    table->n_entries = table->n_entries + 1;
  }
LAB_00014e7a:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar6;
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 FUN_00014e20(int param_1,int param_2,int *param_3)

{
  int iVar1;
  float fVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  int in_GS_OFFSET;
  undefined4 local_3c;
  int *local_24;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  iVar4 = FUN_00014220(0);
  if (iVar4 != 0) {
    uVar5 = 0;
    if (param_3 != (int *)0x0) {
      *param_3 = iVar4;
    }
    goto LAB_00014e7a;
  }
  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <
      (float)*(uint *)(param_1 + 0xc)) {
    FUN_00014310();
    iVar4 = *(int *)(param_1 + 0x14);
    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))
    goto LAB_00014ed8;
    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);
    if (*(char *)(iVar4 + 0x10) == '\0') {
      fVar2 = fVar2 * *(float *)(iVar4 + 8);
    }
    if (fVar2 < DAT_0001d5c8) {
      local_3c = (undefined4)(longlong)ROUND(fVar2);
      cVar3 = FUN_00014c50(param_1,local_3c);
      if (cVar3 != '\0') {
        iVar4 = FUN_00014220(0);
        if (iVar4 != 0) {
          uVar5 = FUN_000125af();
          return uVar5;
        }
        goto LAB_00014ed8;
      }
    }
LAB_00014f77:
    uVar5 = 0xffffffff;
  }
  else {
LAB_00014ed8:
    if (*local_24 == 0) {
      *local_24 = param_2;
      uVar5 = 1;
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
      goto LAB_00014e7a;
    }
    piVar6 = *(int **)(param_1 + 0x24);
    if (piVar6 == (int *)0x0) {
      piVar6 = (int *)malloc(8);
      if (piVar6 == (int *)0x0) goto LAB_00014f77;
    }
    else {
      *(int *)(param_1 + 0x24) = piVar6[1];
    }
    iVar4 = local_24[1];
    *piVar6 = param_2;
    piVar6[1] = iVar4;
    local_24[1] = (int)piVar6;
    uVar5 = 1;
    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
  }
LAB_00014e7a:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0001cbb0();
  }
  return uVar5;
}


CALL 0x00013e9c
ADD EAX,0xf1db
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x3c
MOV EDI,dword ptr [ESP + 0x54]
MOV ESI,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x4],EAX
MOV EBX,dword ptr [ESP + 0x58]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
TEST EDI,EDI
JZ 0x000125af
LEA EBP,[ESP + 0x28]
SUB ESP,0xc
MOV EDX,EDI
MOV EAX,ESI
PUSH 0x0
MOV ECX,EBP
CALL 0x00014220
ADD ESP,0x10
MOV EDX,EAX
TEST EAX,EAX
JZ 0x00014e98
XOR EAX,EAX
TEST EBX,EBX
JZ 0x00014e7a
MOV dword ptr [EBX],EDX
MOV ECX,dword ptr [ESP + 0x2c]
XOR ECX,dword ptr GS:[0x14]
JNZ 0x00015022
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0xc]
MOV ECX,dword ptr [ESI + 0x8]
XOR EDX,EDX
XOR EBX,EBX
MOV dword ptr [ESP + 0xc],EDX
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESI + 0x14]
FILD qword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0x8],ECX
MOV dword ptr [ESP + 0xc],EBX
FILD qword ptr [ESP + 0x8]
FMUL dword ptr [EAX + 0x8]
FXCH
FCOMIP ST0,ST1
FSTP ST0
JA 0x00014f18
JMP 0x00014ed8
FSTP ST0
FSTP ST0
LEA ESI,[ESI]
MOV EBP,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JZ 0x00014f88
MOV EAX,dword ptr [ESI + 0x24]
TEST EAX,EAX
JZ 0x00014fa0
MOV EDX,dword ptr [EAX + 0x4]
MOV dword ptr [ESI + 0x24],EDX
MOV EDX,dword ptr [EBP + 0x4]
MOV dword ptr [EAX],EDI
MOV dword ptr [EAX + 0x4],EDX
MOV dword ptr [EBP + 0x4],EAX
MOV EAX,0x1
ADD dword ptr [ESI + 0x10],0x1
JMP 0x00014e7a
LEA EAX,[ESI + 0x14]
XOR EBX,EBX
CALL 0x00014310
MOV ECX,dword ptr [ESI + 0x8]
MOV EAX,dword ptr [ESI + 0x14]
MOV dword ptr [ESP + 0xc],EBX
XOR EBX,EBX
MOV dword ptr [ESP + 0x8],ECX
MOV ECX,dword ptr [ESI + 0xc]
FLD dword ptr [EAX + 0x8]
FILD qword ptr [ESP + 0x8]
MOV dword ptr [ESP + 0xc],EBX
MOV dword ptr [ESP + 0x8],ECX
FILD qword ptr [ESP + 0x8]
FLD ST2
FMUL ST2
FXCH
FCOMIP ST0,ST1
FSTP ST0
JBE 0x00014ed0
CMP byte ptr [EAX + 0x10],0x0
FMUL dword ptr [EAX + 0xc]
JZ 0x00014fc0
FSTP ST1
MOV EAX,dword ptr [ESP + 0x4]
FLD dword ptr [EAX + 0xffff95c8]
FXCH
FCOMI ST0,ST1
FSTP ST1
JC 0x00014fc8
FSTP ST0
MOV EAX,0xffffffff
JMP 0x00014e7a
MOV dword ptr [EBP],EDI
MOV EAX,0x1
ADD dword ptr [ESI + 0x10],0x1
ADD dword ptr [ESI + 0xc],0x1
JMP 0x00014e7a
SUB ESP,0xc
PUSH 0x8
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00012270
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00014f77
JMP 0x00014ef8
FMULP
JMP 0x00014f63
SUB ESP,0x8
FNSTCW word ptr [ESP + 0x22]
MOVZX EAX,word ptr [ESP + 0x22]
OR AH,0xc
MOV word ptr [ESP + 0x20],AX
FLDCW word ptr [ESP + 0x20]
FISTP qword ptr [ESP + 0x18]
FLDCW word ptr [ESP + 0x22]
MOV EAX,dword ptr [ESP + 0x18]
PUSH EAX
PUSH ESI
MOV EBX,dword ptr [ESP + 0x14]
CALL 0x00014c50
ADD ESP,0x10
TEST AL,AL
JZ 0x00014f77
SUB ESP,0xc
MOV ECX,EBP
MOV EDX,EDI
MOV EAX,ESI
PUSH 0x0
CALL 0x00014220
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00014ed8
JMP 0x000125af
CALL 0x0001cbb0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined4 FUN_00014e20(int param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001cbb0();\n  }\n  return uVar5;\n}\n\n" comment (function_definition "undefined4 FUN_00014e20(int param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001cbb0();\n  }\n  return uVar5;\n}" type_identifier (function_declarator "FUN_00014e20(int param_1,int param_2,int *param_3)" identifier (parameter_list "(int param_1,int param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001cbb0();\n  }\n  return uVar5;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "float fVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == 0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar4 = FUN_00014220(0);" (assignment_expression "iVar4 = FUN_00014220(0)" identifier = (call_expression "FUN_00014220(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_3 = iVar4;\n    }" { (expression_statement "*param_3 = iVar4;" (assignment_expression "*param_3 = iVar4" (pointer_expression "*param_3" * identifier) = identifier) ;) })) (goto_statement "goto LAB_00014e7a;" goto statement_identifier ;) })) (if_statement "if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" if (parenthesized_expression "((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc))" ( (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)" (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8)" (cast_expression "(float)*(uint *)(param_1 + 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) * (pointer_expression "*(float *)(*(int *)(param_1 + 0x14) + 8)" * (cast_expression "(float *)(*(int *)(param_1 + 0x14) + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x14) + 8)" ( (binary_expression "*(int *)(param_1 + 0x14) + 8" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal) ))))) < (cast_expression "(float)*(uint *)(param_1 + 0xc)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))))) )) (compound_statement "{\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }" { (expression_statement "FUN_00014310();" (call_expression "FUN_00014310()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;" if (parenthesized_expression "((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))" ( (binary_expression "(float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8)" (cast_expression "(float)*(uint *)(param_1 + 0xc)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) <= (binary_expression "*(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8)" (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) )))) * (cast_expression "(float)*(uint *)(param_1 + 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))))) )) (goto_statement "goto LAB_00014ed8;" goto statement_identifier ;)) (expression_statement "fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);" (assignment_expression "fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc)" identifier = (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc)" (cast_expression "(float)*(uint *)(param_1 + 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) * (pointer_expression "*(float *)(iVar4 + 0xc)" * (cast_expression "(float *)(iVar4 + 0xc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))))) ;) (if_statement "if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\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      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }" { (expression_statement "fVar2 = fVar2 * *(float *)(iVar4 + 8);" (assignment_expression "fVar2 = fVar2 * *(float *)(iVar4 + 8)" identifier = (binary_expression "fVar2 * *(float *)(iVar4 + 8)" 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 (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }" if (parenthesized_expression "(fVar2 < DAT_0001d5c8)" ( (binary_expression "fVar2 < DAT_0001d5c8" identifier < identifier) )) (compound_statement "{\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }" { (expression_statement "local_3c = (undefined4)(longlong)ROUND(fVar2);" (assignment_expression "local_3c = (undefined4)(longlong)ROUND(fVar2)" identifier = (cast_expression "(undefined4)(longlong)ROUND(fVar2)" ( (type_descriptor "undefined4" type_identifier) ) (cast_expression "(longlong)ROUND(fVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar2)" identifier (argument_list "(fVar2)" ( identifier )))))) ;) (expression_statement "cVar3 = FUN_00014c50(param_1,local_3c);" (assignment_expression "cVar3 = FUN_00014c50(param_1,local_3c)" identifier = (call_expression "FUN_00014c50(param_1,local_3c)" identifier (argument_list "(param_1,local_3c)" ( identifier , identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }" { (expression_statement "iVar4 = FUN_00014220(0);" (assignment_expression "iVar4 = FUN_00014220(0)" identifier = (call_expression "FUN_00014220(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }" { (expression_statement "uVar5 = FUN_000125af();" (assignment_expression "uVar5 = FUN_000125af()" identifier = (call_expression "FUN_000125af()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar5;" return identifier ;) })) (goto_statement "goto LAB_00014ed8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00014f77:\n    uVar5 = 0xffffffff;" statement_identifier : (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" else (compound_statement "{\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" { (labeled_statement "LAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" statement_identifier : (if_statement "if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" if (parenthesized_expression "(*local_24 == 0)" ( (binary_expression "*local_24 == 0" (pointer_expression "*local_24" * identifier) == number_literal) )) (compound_statement "{\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" { (expression_statement "*local_24 = param_2;" (assignment_expression "*local_24 = param_2" (pointer_expression "*local_24" * identifier) = identifier) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto LAB_00014e7a;" goto statement_identifier ;) }))) (expression_statement "piVar6 = *(int **)(param_1 + 0x24);" (assignment_expression "piVar6 = *(int **)(param_1 + 0x24)" identifier = (pointer_expression "*(int **)(param_1 + 0x24)" * (cast_expression "(int **)(param_1 + 0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }" { (expression_statement "piVar6 = (int *)malloc(8);" (assignment_expression "piVar6 = (int *)malloc(8)" identifier = (cast_expression "(int *)malloc(8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (if_statement "if (piVar6 == (int *)0x0) goto LAB_00014f77;" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014f77;" goto statement_identifier ;)) }) (else_clause "else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" else (compound_statement "{\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" { (expression_statement "*(int *)(param_1 + 0x24) = piVar6[1];" (assignment_expression "*(int *)(param_1 + 0x24) = piVar6[1]" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = (subscript_expression "piVar6[1]" identifier [ number_literal ])) ;) }))) (expression_statement "iVar4 = local_24[1];" (assignment_expression "iVar4 = local_24[1]" identifier = (subscript_expression "local_24[1]" identifier [ number_literal ])) ;) (expression_statement "*piVar6 = param_2;" (assignment_expression "*piVar6 = param_2" (pointer_expression "*piVar6" * identifier) = identifier) ;) (expression_statement "piVar6[1] = iVar4;" (assignment_expression "piVar6[1] = iVar4" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_24[1] = (int)piVar6;" (assignment_expression "local_24[1] = (int)piVar6" (subscript_expression "local_24[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal)) ;) }))) (labeled_statement "LAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001cbb0();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0001cbb0();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_0001cbb0();\n  }" { comment (expression_statement "FUN_0001cbb0();" (call_expression "FUN_0001cbb0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nint hash_insert_if_absent(Hash_table *table,void *entry,void **matched_ent)\n\n{\n  hash_entry *phVar1;\n  Hash_tuning *pHVar2;\n  float fVar3;\n  _Bool _Var4;\n  void *pvVar5;\n  int iVar6;\n  hash_entry *phVar7;\n  int in_GS_OFFSET;\n  size_t local_3c;\n  hash_entry *bucket;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (entry == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  pvVar5 = hash_find_entry(table,entry,&bucket,false);\n  if (pvVar5 != (void *)0x0) {\n    iVar6 = 0;\n    if (matched_ent != (void **)0x0) {\n      *matched_ent = pvVar5;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used) {\n    check_tuning((Hash_table *)&table->tuning);\n    pHVar2 = table->tuning;\n    if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)\n    goto LAB_00014ed8;\n    fVar3 = (float)table->n_buckets * pHVar2->growth_factor;\n    if (pHVar2->is_n_buckets == false) {\n      fVar3 = fVar3 * pHVar2->growth_threshold;\n    }\n    if (fVar3 < DAT_0001d5c8) {\n      local_3c = (size_t)(longlong)ROUND(fVar3);\n      _Var4 = hash_rehash(table,local_3c);\n      if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    iVar6 = -1;\n  }\n  else {\nLAB_00014ed8:\n    if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }\n    phVar7 = table->free_entry_list;\n    if (phVar7 == (hash_entry *)0x0) {\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }\n    else {\n      table->free_entry_list = phVar7->next;\n    }\n    phVar1 = bucket->next;\n    phVar7->data = entry;\n    phVar7->next = phVar1;\n    bucket->next = phVar7;\n    iVar6 = 1;\n    table->n_entries = table->n_entries + 1;\n  }\nLAB_00014e7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}\n\n" comment comment (function_definition "int hash_insert_if_absent(Hash_table *table,void *entry,void **matched_ent)\n\n{\n  hash_entry *phVar1;\n  Hash_tuning *pHVar2;\n  float fVar3;\n  _Bool _Var4;\n  void *pvVar5;\n  int iVar6;\n  hash_entry *phVar7;\n  int in_GS_OFFSET;\n  size_t local_3c;\n  hash_entry *bucket;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (entry == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  pvVar5 = hash_find_entry(table,entry,&bucket,false);\n  if (pvVar5 != (void *)0x0) {\n    iVar6 = 0;\n    if (matched_ent != (void **)0x0) {\n      *matched_ent = pvVar5;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used) {\n    check_tuning((Hash_table *)&table->tuning);\n    pHVar2 = table->tuning;\n    if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)\n    goto LAB_00014ed8;\n    fVar3 = (float)table->n_buckets * pHVar2->growth_factor;\n    if (pHVar2->is_n_buckets == false) {\n      fVar3 = fVar3 * pHVar2->growth_threshold;\n    }\n    if (fVar3 < DAT_0001d5c8) {\n      local_3c = (size_t)(longlong)ROUND(fVar3);\n      _Var4 = hash_rehash(table,local_3c);\n      if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    iVar6 = -1;\n  }\n  else {\nLAB_00014ed8:\n    if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }\n    phVar7 = table->free_entry_list;\n    if (phVar7 == (hash_entry *)0x0) {\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }\n    else {\n      table->free_entry_list = phVar7->next;\n    }\n    phVar1 = bucket->next;\n    phVar7->data = entry;\n    phVar7->next = phVar1;\n    bucket->next = phVar7;\n    iVar6 = 1;\n    table->n_entries = table->n_entries + 1;\n  }\nLAB_00014e7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}" primitive_type (function_declarator "hash_insert_if_absent(Hash_table *table,void *entry,void **matched_ent)" identifier (parameter_list "(Hash_table *table,void *entry,void **matched_ent)" ( (parameter_declaration "Hash_table *table" type_identifier (pointer_declarator "*table" * identifier)) , (parameter_declaration "void *entry" primitive_type (pointer_declarator "*entry" * identifier)) , (parameter_declaration "void **matched_ent" primitive_type (pointer_declarator "**matched_ent" * (pointer_declarator "*matched_ent" * identifier))) ))) (compound_statement "{\n  hash_entry *phVar1;\n  Hash_tuning *pHVar2;\n  float fVar3;\n  _Bool _Var4;\n  void *pvVar5;\n  int iVar6;\n  hash_entry *phVar7;\n  int in_GS_OFFSET;\n  size_t local_3c;\n  hash_entry *bucket;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (entry == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\n  pvVar5 = hash_find_entry(table,entry,&bucket,false);\n  if (pvVar5 != (void *)0x0) {\n    iVar6 = 0;\n    if (matched_ent != (void **)0x0) {\n      *matched_ent = pvVar5;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used) {\n    check_tuning((Hash_table *)&table->tuning);\n    pHVar2 = table->tuning;\n    if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)\n    goto LAB_00014ed8;\n    fVar3 = (float)table->n_buckets * pHVar2->growth_factor;\n    if (pHVar2->is_n_buckets == false) {\n      fVar3 = fVar3 * pHVar2->growth_threshold;\n    }\n    if (fVar3 < DAT_0001d5c8) {\n      local_3c = (size_t)(longlong)ROUND(fVar3);\n      _Var4 = hash_rehash(table,local_3c);\n      if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    iVar6 = -1;\n  }\n  else {\nLAB_00014ed8:\n    if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }\n    phVar7 = table->free_entry_list;\n    if (phVar7 == (hash_entry *)0x0) {\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }\n    else {\n      table->free_entry_list = phVar7->next;\n    }\n    phVar1 = bucket->next;\n    phVar7->data = entry;\n    phVar7->next = phVar1;\n    bucket->next = phVar7;\n    iVar6 = 1;\n    table->n_entries = table->n_entries + 1;\n  }\nLAB_00014e7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar6;\n}" { (declaration "hash_entry *phVar1;" type_identifier (pointer_declarator "*phVar1" * identifier) ;) (declaration "Hash_tuning *pHVar2;" type_identifier (pointer_declarator "*pHVar2" * identifier) ;) (declaration "float fVar3;" primitive_type identifier ;) (declaration "_Bool _Var4;" type_identifier identifier ;) (declaration "void *pvVar5;" primitive_type (pointer_declarator "*pvVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "hash_entry *phVar7;" type_identifier (pointer_declarator "*phVar7" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "size_t local_3c;" primitive_type identifier ;) (declaration "hash_entry *bucket;" type_identifier (pointer_declarator "*bucket" * identifier) ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (entry == (void *)0x0) {\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" if (parenthesized_expression "(entry == (void *)0x0)" ( (binary_expression "entry == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "pvVar5 = hash_find_entry(table,entry,&bucket,false);" (assignment_expression "pvVar5 = hash_find_entry(table,entry,&bucket,false)" identifier = (call_expression "hash_find_entry(table,entry,&bucket,false)" identifier (argument_list "(table,entry,&bucket,false)" ( identifier , identifier , (pointer_expression "&bucket" & identifier) , false )))) ;) (if_statement "if (pvVar5 != (void *)0x0) {\n    iVar6 = 0;\n    if (matched_ent != (void **)0x0) {\n      *matched_ent = pvVar5;\n    }\n    goto LAB_00014e7a;\n  }" if (parenthesized_expression "(pvVar5 != (void *)0x0)" ( (binary_expression "pvVar5 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar6 = 0;\n    if (matched_ent != (void **)0x0) {\n      *matched_ent = pvVar5;\n    }\n    goto LAB_00014e7a;\n  }" { (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (matched_ent != (void **)0x0) {\n      *matched_ent = pvVar5;\n    }" if (parenthesized_expression "(matched_ent != (void **)0x0)" ( (binary_expression "matched_ent != (void **)0x0" identifier != (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n      *matched_ent = pvVar5;\n    }" { (expression_statement "*matched_ent = pvVar5;" (assignment_expression "*matched_ent = pvVar5" (pointer_expression "*matched_ent" * identifier) = identifier) ;) })) (goto_statement "goto LAB_00014e7a;" goto statement_identifier ;) })) (if_statement "if ((float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used) {\n    check_tuning((Hash_table *)&table->tuning);\n    pHVar2 = table->tuning;\n    if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)\n    goto LAB_00014ed8;\n    fVar3 = (float)table->n_buckets * pHVar2->growth_factor;\n    if (pHVar2->is_n_buckets == false) {\n      fVar3 = fVar3 * pHVar2->growth_threshold;\n    }\n    if (fVar3 < DAT_0001d5c8) {\n      local_3c = (size_t)(longlong)ROUND(fVar3);\n      _Var4 = hash_rehash(table,local_3c);\n      if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    iVar6 = -1;\n  }\n  else {\nLAB_00014ed8:\n    if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }\n    phVar7 = table->free_entry_list;\n    if (phVar7 == (hash_entry *)0x0) {\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }\n    else {\n      table->free_entry_list = phVar7->next;\n    }\n    phVar1 = bucket->next;\n    phVar7->data = entry;\n    phVar7->next = phVar1;\n    bucket->next = phVar7;\n    iVar6 = 1;\n    table->n_entries = table->n_entries + 1;\n  }" if (parenthesized_expression "((float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used)" ( (binary_expression "(float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used" (binary_expression "(float)table->n_buckets * table->tuning->growth_threshold" (cast_expression "(float)table->n_buckets" ( (type_descriptor "float" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)) * (field_expression "table->tuning->growth_threshold" (field_expression "table->tuning" identifier -> field_identifier) -> field_identifier)) < (cast_expression "(float)table->n_buckets_used" ( (type_descriptor "float" primitive_type) ) (field_expression "table->n_buckets_used" identifier -> field_identifier))) )) (compound_statement "{\n    check_tuning((Hash_table *)&table->tuning);\n    pHVar2 = table->tuning;\n    if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)\n    goto LAB_00014ed8;\n    fVar3 = (float)table->n_buckets * pHVar2->growth_factor;\n    if (pHVar2->is_n_buckets == false) {\n      fVar3 = fVar3 * pHVar2->growth_threshold;\n    }\n    if (fVar3 < DAT_0001d5c8) {\n      local_3c = (size_t)(longlong)ROUND(fVar3);\n      _Var4 = hash_rehash(table,local_3c);\n      if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    iVar6 = -1;\n  }" { (expression_statement "check_tuning((Hash_table *)&table->tuning);" (call_expression "check_tuning((Hash_table *)&table->tuning)" identifier (argument_list "((Hash_table *)&table->tuning)" ( (cast_expression "(Hash_table *)&table->tuning" ( (type_descriptor "Hash_table *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&table->tuning" & (field_expression "table->tuning" identifier -> field_identifier))) ))) ;) (expression_statement "pHVar2 = table->tuning;" (assignment_expression "pHVar2 = table->tuning" identifier = (field_expression "table->tuning" identifier -> field_identifier)) ;) (if_statement "if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)\n    goto LAB_00014ed8;" if (parenthesized_expression "((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)" ( (binary_expression "(float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets" (cast_expression "(float)table->n_buckets_used" ( (type_descriptor "float" primitive_type) ) (field_expression "table->n_buckets_used" identifier -> field_identifier)) <= (binary_expression "pHVar2->growth_threshold * (float)table->n_buckets" (field_expression "pHVar2->growth_threshold" identifier -> field_identifier) * (cast_expression "(float)table->n_buckets" ( (type_descriptor "float" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)))) )) (goto_statement "goto LAB_00014ed8;" goto statement_identifier ;)) (expression_statement "fVar3 = (float)table->n_buckets * pHVar2->growth_factor;" (assignment_expression "fVar3 = (float)table->n_buckets * pHVar2->growth_factor" identifier = (binary_expression "(float)table->n_buckets * pHVar2->growth_factor" (cast_expression "(float)table->n_buckets" ( (type_descriptor "float" primitive_type) ) (field_expression "table->n_buckets" identifier -> field_identifier)) * (field_expression "pHVar2->growth_factor" identifier -> field_identifier))) ;) (if_statement "if (pHVar2->is_n_buckets == false) {\n      fVar3 = fVar3 * pHVar2->growth_threshold;\n    }" if (parenthesized_expression "(pHVar2->is_n_buckets == false)" ( (binary_expression "pHVar2->is_n_buckets == false" (field_expression "pHVar2->is_n_buckets" identifier -> field_identifier) == false) )) (compound_statement "{\n      fVar3 = fVar3 * pHVar2->growth_threshold;\n    }" { (expression_statement "fVar3 = fVar3 * pHVar2->growth_threshold;" (assignment_expression "fVar3 = fVar3 * pHVar2->growth_threshold" identifier = (binary_expression "fVar3 * pHVar2->growth_threshold" identifier * (field_expression "pHVar2->growth_threshold" identifier -> field_identifier))) ;) })) (if_statement "if (fVar3 < DAT_0001d5c8) {\n      local_3c = (size_t)(longlong)ROUND(fVar3);\n      _Var4 = hash_rehash(table,local_3c);\n      if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }\n    }" if (parenthesized_expression "(fVar3 < DAT_0001d5c8)" ( (binary_expression "fVar3 < DAT_0001d5c8" identifier < identifier) )) (compound_statement "{\n      local_3c = (size_t)(longlong)ROUND(fVar3);\n      _Var4 = hash_rehash(table,local_3c);\n      if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }\n    }" { (expression_statement "local_3c = (size_t)(longlong)ROUND(fVar3);" (assignment_expression "local_3c = (size_t)(longlong)ROUND(fVar3)" identifier = (cast_expression "(size_t)(longlong)ROUND(fVar3)" ( (type_descriptor "size_t" primitive_type) ) (cast_expression "(longlong)ROUND(fVar3)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar3)" identifier (argument_list "(fVar3)" ( identifier )))))) ;) (expression_statement "_Var4 = hash_rehash(table,local_3c);" (assignment_expression "_Var4 = hash_rehash(table,local_3c)" identifier = (call_expression "hash_rehash(table,local_3c)" identifier (argument_list "(table,local_3c)" ( identifier , identifier )))) ;) (if_statement "if (_Var4) {\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }" if (parenthesized_expression "(_Var4)" ( identifier )) (compound_statement "{\n        pvVar5 = hash_find_entry(table,entry,&bucket,false);\n        if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }\n        goto LAB_00014ed8;\n      }" { (expression_statement "pvVar5 = hash_find_entry(table,entry,&bucket,false);" (assignment_expression "pvVar5 = hash_find_entry(table,entry,&bucket,false)" identifier = (call_expression "hash_find_entry(table,entry,&bucket,false)" identifier (argument_list "(table,entry,&bucket,false)" ( identifier , identifier , (pointer_expression "&bucket" & identifier) , false )))) ;) (if_statement "if (pvVar5 != (void *)0x0) {\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }" if (parenthesized_expression "(pvVar5 != (void *)0x0)" ( (binary_expression "pvVar5 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar6 = hash_insert_if_absent_cold_8();\n          return iVar6;\n        }" { (expression_statement "iVar6 = hash_insert_if_absent_cold_8();" (assignment_expression "iVar6 = hash_insert_if_absent_cold_8()" identifier = (call_expression "hash_insert_if_absent_cold_8()" identifier (argument_list "()" ( )))) ;) (return_statement "return iVar6;" return identifier ;) })) (goto_statement "goto LAB_00014ed8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00014f77:\n    iVar6 = -1;" statement_identifier : (expression_statement "iVar6 = -1;" (assignment_expression "iVar6 = -1" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00014ed8:\n    if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }\n    phVar7 = table->free_entry_list;\n    if (phVar7 == (hash_entry *)0x0) {\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }\n    else {\n      table->free_entry_list = phVar7->next;\n    }\n    phVar1 = bucket->next;\n    phVar7->data = entry;\n    phVar7->next = phVar1;\n    bucket->next = phVar7;\n    iVar6 = 1;\n    table->n_entries = table->n_entries + 1;\n  }" else (compound_statement "{\nLAB_00014ed8:\n    if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }\n    phVar7 = table->free_entry_list;\n    if (phVar7 == (hash_entry *)0x0) {\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }\n    else {\n      table->free_entry_list = phVar7->next;\n    }\n    phVar1 = bucket->next;\n    phVar7->data = entry;\n    phVar7->next = phVar1;\n    bucket->next = phVar7;\n    iVar6 = 1;\n    table->n_entries = table->n_entries + 1;\n  }" { (labeled_statement "LAB_00014ed8:\n    if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }" statement_identifier : (if_statement "if (bucket->data == (void *)0x0) {\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }" if (parenthesized_expression "(bucket->data == (void *)0x0)" ( (binary_expression "bucket->data == (void *)0x0" (field_expression "bucket->data" identifier -> field_identifier) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bucket->data = entry;\n      iVar6 = 1;\n      table->n_entries = table->n_entries + 1;\n      table->n_buckets_used = table->n_buckets_used + 1;\n      goto LAB_00014e7a;\n    }" { (expression_statement "bucket->data = entry;" (assignment_expression "bucket->data = entry" (field_expression "bucket->data" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "table->n_entries = table->n_entries + 1;" (assignment_expression "table->n_entries = table->n_entries + 1" (field_expression "table->n_entries" identifier -> field_identifier) = (binary_expression "table->n_entries + 1" (field_expression "table->n_entries" identifier -> field_identifier) + number_literal)) ;) (expression_statement "table->n_buckets_used = table->n_buckets_used + 1;" (assignment_expression "table->n_buckets_used = table->n_buckets_used + 1" (field_expression "table->n_buckets_used" identifier -> field_identifier) = (binary_expression "table->n_buckets_used + 1" (field_expression "table->n_buckets_used" identifier -> field_identifier) + number_literal)) ;) (goto_statement "goto LAB_00014e7a;" goto statement_identifier ;) }))) (expression_statement "phVar7 = table->free_entry_list;" (assignment_expression "phVar7 = table->free_entry_list" identifier = (field_expression "table->free_entry_list" identifier -> field_identifier)) ;) (if_statement "if (phVar7 == (hash_entry *)0x0) {\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }\n    else {\n      table->free_entry_list = phVar7->next;\n    }" if (parenthesized_expression "(phVar7 == (hash_entry *)0x0)" ( (binary_expression "phVar7 == (hash_entry *)0x0" identifier == (cast_expression "(hash_entry *)0x0" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      phVar7 = (hash_entry *)malloc(8);\n      if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;\n    }" { (expression_statement "phVar7 = (hash_entry *)malloc(8);" (assignment_expression "phVar7 = (hash_entry *)malloc(8)" identifier = (cast_expression "(hash_entry *)malloc(8)" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (if_statement "if (phVar7 == (hash_entry *)0x0) goto LAB_00014f77;" if (parenthesized_expression "(phVar7 == (hash_entry *)0x0)" ( (binary_expression "phVar7 == (hash_entry *)0x0" identifier == (cast_expression "(hash_entry *)0x0" ( (type_descriptor "hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014f77;" goto statement_identifier ;)) }) (else_clause "else {\n      table->free_entry_list = phVar7->next;\n    }" else (compound_statement "{\n      table->free_entry_list = phVar7->next;\n    }" { (expression_statement "table->free_entry_list = phVar7->next;" (assignment_expression "table->free_entry_list = phVar7->next" (field_expression "table->free_entry_list" identifier -> field_identifier) = (field_expression "phVar7->next" identifier -> field_identifier)) ;) }))) (expression_statement "phVar1 = bucket->next;" (assignment_expression "phVar1 = bucket->next" identifier = (field_expression "bucket->next" identifier -> field_identifier)) ;) (expression_statement "phVar7->data = entry;" (assignment_expression "phVar7->data = entry" (field_expression "phVar7->data" identifier -> field_identifier) = identifier) ;) (expression_statement "phVar7->next = phVar1;" (assignment_expression "phVar7->next = phVar1" (field_expression "phVar7->next" identifier -> field_identifier) = identifier) ;) (expression_statement "bucket->next = phVar7;" (assignment_expression "bucket->next = phVar7" (field_expression "bucket->next" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar6 = 1;" (assignment_expression "iVar6 = 1" identifier = number_literal) ;) (expression_statement "table->n_entries = table->n_entries + 1;" (assignment_expression "table->n_entries = table->n_entries + 1" (field_expression "table->n_entries" identifier -> field_identifier) = (binary_expression "table->n_entries + 1" (field_expression "table->n_entries" identifier -> field_identifier) + number_literal)) ;) }))) (labeled_statement "LAB_00014e7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar6;" return identifier ;) })))
(translation_unit "undefined4 FUN_00014e20(int param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    \n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }\n  return uVar5;\n}\n\n" (function_definition "undefined4 FUN_00014e20(int param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    \n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }\n  return uVar5;\n}" type_identifier (function_declarator "FUN_00014e20(int param_1,int param_2,int *param_3)" identifier (parameter_list "(int param_1,int param_2,int *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    \n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }\n  return uVar5;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "float fVar2;" primitive_type identifier ;) (declaration "char cVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (param_2 == 0) {\n                    \n    abort();\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n                    \n    abort();\n  }" { (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar4 = FUN_00014220(0);" (assignment_expression "iVar4 = FUN_00014220(0)" identifier = (call_expression "FUN_00014220(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }" { (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }" if (parenthesized_expression "(param_3 != (int *)0x0)" ( (binary_expression "param_3 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_3 = iVar4;\n    }" { (expression_statement "*param_3 = iVar4;" (assignment_expression "*param_3 = iVar4" (pointer_expression "*param_3" * identifier) = identifier) ;) })) (goto_statement "goto LAB_00014e7a;" goto statement_identifier ;) })) (if_statement "if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" if (parenthesized_expression "((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc))" ( (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)" (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8)" (cast_expression "(float)*(uint *)(param_1 + 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) * (pointer_expression "*(float *)(*(int *)(param_1 + 0x14) + 8)" * (cast_expression "(float *)(*(int *)(param_1 + 0x14) + 8)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x14) + 8)" ( (binary_expression "*(int *)(param_1 + 0x14) + 8" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) + number_literal) ))))) < (cast_expression "(float)*(uint *)(param_1 + 0xc)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))))) )) (compound_statement "{\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }" { (expression_statement "FUN_00014310();" (call_expression "FUN_00014310()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar4 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;" if (parenthesized_expression "((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))" ( (binary_expression "(float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8)" (cast_expression "(float)*(uint *)(param_1 + 0xc)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) <= (binary_expression "*(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8)" (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) )))) * (cast_expression "(float)*(uint *)(param_1 + 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))))) )) (goto_statement "goto LAB_00014ed8;" goto statement_identifier ;)) (expression_statement "fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);" (assignment_expression "fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc)" identifier = (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc)" (cast_expression "(float)*(uint *)(param_1 + 8)" ( (type_descriptor "float" primitive_type) ) (pointer_expression "*(uint *)(param_1 + 8)" * (cast_expression "(uint *)(param_1 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) * (pointer_expression "*(float *)(iVar4 + 0xc)" * (cast_expression "(float *)(iVar4 + 0xc)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) )))))) ;) (if_statement "if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\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      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }" { (expression_statement "fVar2 = fVar2 * *(float *)(iVar4 + 8);" (assignment_expression "fVar2 = fVar2 * *(float *)(iVar4 + 8)" identifier = (binary_expression "fVar2 * *(float *)(iVar4 + 8)" 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 (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }" if (parenthesized_expression "(fVar2 < DAT_0001d5c8)" ( (binary_expression "fVar2 < DAT_0001d5c8" identifier < identifier) )) (compound_statement "{\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }" { (expression_statement "local_3c = (undefined4)(longlong)ROUND(fVar2);" (assignment_expression "local_3c = (undefined4)(longlong)ROUND(fVar2)" identifier = (cast_expression "(undefined4)(longlong)ROUND(fVar2)" ( (type_descriptor "undefined4" type_identifier) ) (cast_expression "(longlong)ROUND(fVar2)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(fVar2)" identifier (argument_list "(fVar2)" ( identifier )))))) ;) (expression_statement "cVar3 = FUN_00014c50(param_1,local_3c);" (assignment_expression "cVar3 = FUN_00014c50(param_1,local_3c)" identifier = (call_expression "FUN_00014c50(param_1,local_3c)" identifier (argument_list "(param_1,local_3c)" ( identifier , identifier )))) ;) (if_statement "if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }" if (parenthesized_expression "(cVar3 != '\0')" ( (binary_expression "cVar3 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }" { (expression_statement "iVar4 = FUN_00014220(0);" (assignment_expression "iVar4 = FUN_00014220(0)" identifier = (call_expression "FUN_00014220(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }" { (expression_statement "uVar5 = FUN_000125af();" (assignment_expression "uVar5 = FUN_000125af()" identifier = (call_expression "FUN_000125af()" identifier (argument_list "()" ( )))) ;) (return_statement "return uVar5;" return identifier ;) })) (goto_statement "goto LAB_00014ed8;" goto statement_identifier ;) })) })) (labeled_statement "LAB_00014f77:\n    uVar5 = 0xffffffff;" statement_identifier : (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;)) }) (else_clause "else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" else (compound_statement "{\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" { (labeled_statement "LAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" statement_identifier : (if_statement "if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" if (parenthesized_expression "(*local_24 == 0)" ( (binary_expression "*local_24 == 0" (pointer_expression "*local_24" * identifier) == number_literal) )) (compound_statement "{\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" { (expression_statement "*local_24 = param_2;" (assignment_expression "*local_24 = param_2" (pointer_expression "*local_24" * identifier) = identifier) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (goto_statement "goto LAB_00014e7a;" goto statement_identifier ;) }))) (expression_statement "piVar6 = *(int **)(param_1 + 0x24);" (assignment_expression "piVar6 = *(int **)(param_1 + 0x24)" identifier = (pointer_expression "*(int **)(param_1 + 0x24)" * (cast_expression "(int **)(param_1 + 0x24)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) ))))) ;) (if_statement "if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }" { (expression_statement "piVar6 = (int *)malloc(8);" (assignment_expression "piVar6 = (int *)malloc(8)" identifier = (cast_expression "(int *)malloc(8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (if_statement "if (piVar6 == (int *)0x0) goto LAB_00014f77;" if (parenthesized_expression "(piVar6 == (int *)0x0)" ( (binary_expression "piVar6 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00014f77;" goto statement_identifier ;)) }) (else_clause "else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" else (compound_statement "{\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" { (expression_statement "*(int *)(param_1 + 0x24) = piVar6[1];" (assignment_expression "*(int *)(param_1 + 0x24) = piVar6[1]" (pointer_expression "*(int *)(param_1 + 0x24)" * (cast_expression "(int *)(param_1 + 0x24)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x24)" ( (binary_expression "param_1 + 0x24" identifier + number_literal) )))) = (subscript_expression "piVar6[1]" identifier [ number_literal ])) ;) }))) (expression_statement "iVar4 = local_24[1];" (assignment_expression "iVar4 = local_24[1]" identifier = (subscript_expression "local_24[1]" identifier [ number_literal ])) ;) (expression_statement "*piVar6 = param_2;" (assignment_expression "*piVar6 = param_2" (pointer_expression "*piVar6" * identifier) = identifier) ;) (expression_statement "piVar6[1] = iVar4;" (assignment_expression "piVar6[1] = iVar4" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_24[1] = (int)piVar6;" (assignment_expression "local_24[1] = (int)piVar6" (subscript_expression "local_24[1]" identifier [ number_literal ]) = (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) + number_literal)) ;) }))) (labeled_statement "LAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_0001cbb0();\n  }" { (expression_statement "FUN_0001cbb0();" (call_expression "FUN_0001cbb0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return uVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) <= (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (return_statement return 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 : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (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 ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 FUN_00014e20(int param_1,int param_2,int *param_3)\n\n{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    \n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }\n  return uVar5;\n}" (type_identifier "undefined4") (function_declarator "FUN_00014e20(int param_1,int param_2,int *param_3)" (identifier "FUN_00014e20") (parameter_list "(int param_1,int param_2,int *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  int iVar1;\n  float fVar2;\n  char cVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int *piVar6;\n  int in_GS_OFFSET;\n  undefined4 local_3c;\n  int *local_24;\n  \n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (param_2 == 0) {\n                    \n    abort();\n  }\n  iVar4 = FUN_00014220(0);\n  if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }\n  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }\nLAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }\n  return uVar5;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "float fVar2;" (primitive_type "float") (identifier "fVar2") (; ";")) (declaration "char cVar3;" (primitive_type "char") (identifier "cVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "int *local_24;" (primitive_type "int") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (param_2 == 0) {\n                    \n    abort();\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n    abort();\n  }" ({ "{") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = FUN_00014220(0);" (assignment_expression "iVar4 = FUN_00014220(0)" (identifier "iVar4") (= "=") (call_expression "FUN_00014220(0)" (identifier "FUN_00014220") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar5 = 0;\n    if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }\n    goto LAB_00014e7a;\n  }" ({ "{") (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_3 != (int *)0x0) {\n      *param_3 = iVar4;\n    }" (if "if") (parenthesized_expression "(param_3 != (int *)0x0)" (( "(") (binary_expression "param_3 != (int *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *param_3 = iVar4;\n    }" ({ "{") (expression_statement "*param_3 = iVar4;" (assignment_expression "*param_3 = iVar4" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar4")) (; ";")) (} "}"))) (goto_statement "goto LAB_00014e7a;" (goto "goto") (statement_identifier "LAB_00014e7a") (; ";")) (} "}"))) (if_statement "if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)) {\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }\n  else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" (if "if") (parenthesized_expression "((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc))" (( "(") (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <\n      (float)*(uint *)(param_1 + 0xc)" (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8)" (cast_expression "(float)*(uint *)(param_1 + 8)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (* "*") (pointer_expression "*(float *)(*(int *)(param_1 + 0x14) + 8)" (* "*") (cast_expression "(float *)(*(int *)(param_1 + 0x14) + 8)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x14) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x14) + 8" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (< "<") (cast_expression "(float)*(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))))) () ")")) (compound_statement "{\n    FUN_00014310();\n    iVar4 = *(int *)(param_1 + 0x14);\n    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;\n    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);\n    if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }\n    if (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }\nLAB_00014f77:\n    uVar5 = 0xffffffff;\n  }" ({ "{") (expression_statement "FUN_00014310();" (call_expression "FUN_00014310()" (identifier "FUN_00014310") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar4 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar4 = *(int *)(param_1 + 0x14)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))\n    goto LAB_00014ed8;" (if "if") (parenthesized_expression "((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))" (( "(") (binary_expression "(float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8)" (cast_expression "(float)*(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (<= "<=") (binary_expression "*(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8)" (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")) () ")")))) (* "*") (cast_expression "(float)*(uint *)(param_1 + 8)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))))) () ")")) (goto_statement "goto LAB_00014ed8;" (goto "goto") (statement_identifier "LAB_00014ed8") (; ";"))) (expression_statement "fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);" (assignment_expression "fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc)" (identifier "fVar2") (= "=") (binary_expression "(float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc)" (cast_expression "(float)*(uint *)(param_1 + 8)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (pointer_expression "*(uint *)(param_1 + 8)" (* "*") (cast_expression "(uint *)(param_1 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (* "*") (pointer_expression "*(float *)(iVar4 + 0xc)" (* "*") (cast_expression "(float *)(iVar4 + 0xc)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x10) == '\0') {\n      fVar2 = fVar2 * *(float *)(iVar4 + 8);\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      fVar2 = fVar2 * *(float *)(iVar4 + 8);\n    }" ({ "{") (expression_statement "fVar2 = fVar2 * *(float *)(iVar4 + 8);" (assignment_expression "fVar2 = fVar2 * *(float *)(iVar4 + 8)" (identifier "fVar2") (= "=") (binary_expression "fVar2 * *(float *)(iVar4 + 8)" (identifier "fVar2") (* "*") (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 (fVar2 < DAT_0001d5c8) {\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }" (if "if") (parenthesized_expression "(fVar2 < DAT_0001d5c8)" (( "(") (binary_expression "fVar2 < DAT_0001d5c8" (identifier "fVar2") (< "<") (identifier "DAT_0001d5c8")) () ")")) (compound_statement "{\n      local_3c = (undefined4)(longlong)ROUND(fVar2);\n      cVar3 = FUN_00014c50(param_1,local_3c);\n      if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }\n    }" ({ "{") (expression_statement "local_3c = (undefined4)(longlong)ROUND(fVar2);" (assignment_expression "local_3c = (undefined4)(longlong)ROUND(fVar2)" (identifier "local_3c") (= "=") (cast_expression "(undefined4)(longlong)ROUND(fVar2)" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (cast_expression "(longlong)ROUND(fVar2)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(fVar2)" (identifier "ROUND") (argument_list "(fVar2)" (( "(") (identifier "fVar2") () ")")))))) (; ";")) (expression_statement "cVar3 = FUN_00014c50(param_1,local_3c);" (assignment_expression "cVar3 = FUN_00014c50(param_1,local_3c)" (identifier "cVar3") (= "=") (call_expression "FUN_00014c50(param_1,local_3c)" (identifier "FUN_00014c50") (argument_list "(param_1,local_3c)" (( "(") (identifier "param_1") (, ",") (identifier "local_3c") () ")")))) (; ";")) (if_statement "if (cVar3 != '\0') {\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }" (if "if") (parenthesized_expression "(cVar3 != '\0')" (( "(") (binary_expression "cVar3 != '\0'" (identifier "cVar3") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar4 = FUN_00014220(0);\n        if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }\n        goto LAB_00014ed8;\n      }" ({ "{") (expression_statement "iVar4 = FUN_00014220(0);" (assignment_expression "iVar4 = FUN_00014220(0)" (identifier "iVar4") (= "=") (call_expression "FUN_00014220(0)" (identifier "FUN_00014220") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar5 = FUN_000125af();\n          return uVar5;\n        }" ({ "{") (expression_statement "uVar5 = FUN_000125af();" (assignment_expression "uVar5 = FUN_000125af()" (identifier "uVar5") (= "=") (call_expression "FUN_000125af()" (identifier "FUN_000125af") (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}"))) (goto_statement "goto LAB_00014ed8;" (goto "goto") (statement_identifier "LAB_00014ed8") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00014f77:\n    uVar5 = 0xffffffff;" (statement_identifier "LAB_00014f77") (: ":") (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" (identifier "uVar5") (= "=") (number_literal "0xffffffff")) (; ";"))) (} "}")) (else_clause "else {\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" (else "else") (compound_statement "{\nLAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }\n    piVar6 = *(int **)(param_1 + 0x24);\n    if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }\n    iVar4 = local_24[1];\n    *piVar6 = param_2;\n    piVar6[1] = iVar4;\n    local_24[1] = (int)piVar6;\n    uVar5 = 1;\n    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n  }" ({ "{") (labeled_statement "LAB_00014ed8:\n    if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" (statement_identifier "LAB_00014ed8") (: ":") (if_statement "if (*local_24 == 0) {\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" (if "if") (parenthesized_expression "(*local_24 == 0)" (( "(") (binary_expression "*local_24 == 0" (pointer_expression "*local_24" (* "*") (identifier "local_24")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      *local_24 = param_2;\n      uVar5 = 1;\n      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;\n      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;\n      goto LAB_00014e7a;\n    }" ({ "{") (expression_statement "*local_24 = param_2;" (assignment_expression "*local_24 = param_2" (pointer_expression "*local_24" (* "*") (identifier "local_24")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0xc) + 1" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00014e7a;" (goto "goto") (statement_identifier "LAB_00014e7a") (; ";")) (} "}")))) (expression_statement "piVar6 = *(int **)(param_1 + 0x24);" (assignment_expression "piVar6 = *(int **)(param_1 + 0x24)" (identifier "piVar6") (= "=") (pointer_expression "*(int **)(param_1 + 0x24)" (* "*") (cast_expression "(int **)(param_1 + 0x24)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (piVar6 == (int *)0x0) {\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }\n    else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" (if "if") (parenthesized_expression "(piVar6 == (int *)0x0)" (( "(") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      piVar6 = (int *)malloc(8);\n      if (piVar6 == (int *)0x0) goto LAB_00014f77;\n    }" ({ "{") (expression_statement "piVar6 = (int *)malloc(8);" (assignment_expression "piVar6 = (int *)malloc(8)" (identifier "piVar6") (= "=") (cast_expression "(int *)malloc(8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "malloc(8)" (identifier "malloc") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (if_statement "if (piVar6 == (int *)0x0) goto LAB_00014f77;" (if "if") (parenthesized_expression "(piVar6 == (int *)0x0)" (( "(") (binary_expression "piVar6 == (int *)0x0" (identifier "piVar6") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00014f77;" (goto "goto") (statement_identifier "LAB_00014f77") (; ";"))) (} "}")) (else_clause "else {\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" (else "else") (compound_statement "{\n      *(int *)(param_1 + 0x24) = piVar6[1];\n    }" ({ "{") (expression_statement "*(int *)(param_1 + 0x24) = piVar6[1];" (assignment_expression "*(int *)(param_1 + 0x24) = piVar6[1]" (pointer_expression "*(int *)(param_1 + 0x24)" (* "*") (cast_expression "(int *)(param_1 + 0x24)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x24)" (( "(") (binary_expression "param_1 + 0x24" (identifier "param_1") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")))) (expression_statement "iVar4 = local_24[1];" (assignment_expression "iVar4 = local_24[1]" (identifier "iVar4") (= "=") (subscript_expression "local_24[1]" (identifier "local_24") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*piVar6 = param_2;" (assignment_expression "*piVar6 = param_2" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "piVar6[1] = iVar4;" (assignment_expression "piVar6[1] = iVar4" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "local_24[1] = (int)piVar6;" (assignment_expression "local_24[1] = (int)piVar6" (subscript_expression "local_24[1]" (identifier "local_24") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int)piVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar6"))) (; ";")) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;" (assignment_expression "*(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x10) + 1" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (labeled_statement "LAB_00014e7a:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }" (statement_identifier "LAB_00014e7a") (: ":") (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0001cbb0();\n  }" (if "if") (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_0001cbb0();\n  }" ({ "{") (expression_statement "FUN_0001cbb0();" (call_expression "FUN_0001cbb0()" (identifier "FUN_0001cbb0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return uVar5;" (return "return") (identifier "uVar5") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int function_1(type_1 *table,void *var_2,void **var_6)

{
  type_2 *phVar1;
  type_3 *pHVar2;
  float var_8;
  type_4 _Var4;
  void *var_5;
  int iVar6;
  type_2 *var_13;
  int var_1;
  size_t local_3c;
  type_2 *bucket;
  int var_15;
  
  var_15 = *(int *)(var_1 + 0x14);
  if (var_2 == (void *)0x0) {
                    /* WARNING: Subroutine does not return */
    var_3();
  }
  var_5 = var_4(table,var_2,&bucket,false);
  if (var_5 != (void *)0x0) {
    iVar6 = 0;
    if (var_6 != (void **)0x0) {
      *var_6 = var_5;
    }
    goto LAB_00014e7a;
  }
  if ((float)table->n_buckets * table->tuning->growth_threshold < (float)table->n_buckets_used) {
    var_7((type_1 *)&table->tuning);
    pHVar2 = table->tuning;
    if ((float)table->n_buckets_used <= pHVar2->growth_threshold * (float)table->n_buckets)
    goto LAB_00014ed8;
    var_8 = (float)table->n_buckets * pHVar2->growth_factor;
    if (pHVar2->is_n_buckets == false) {
      var_8 = var_8 * pHVar2->growth_threshold;
    }
    if (var_8 < var_9) {
      local_3c = (size_t)(type_5)var_10(var_8);
      _Var4 = var_11(table,local_3c);
      if (_Var4) {
        var_5 = var_4(table,var_2,&bucket,false);
        if (var_5 != (void *)0x0) {
          iVar6 = var_12();
          return iVar6;
        }
        goto LAB_00014ed8;
      }
    }
LAB_00014f77:
    iVar6 = -1;
  }
  else {
LAB_00014ed8:
    if (bucket->data == (void *)0x0) {
      bucket->data = var_2;
      iVar6 = 1;
      table->n_entries = table->n_entries + 1;
      table->n_buckets_used = table->n_buckets_used + 1;
      goto LAB_00014e7a;
    }
    var_13 = table->free_entry_list;
    if (var_13 == (type_2 *)0x0) {
      var_13 = (type_2 *)var_14(8);
      if (var_13 == (type_2 *)0x0) goto LAB_00014f77;
    }
    else {
      table->free_entry_list = var_13->next;
    }
    phVar1 = bucket->next;
    var_13->data = var_2;
    var_13->next = phVar1;
    bucket->next = var_13;
    iVar6 = 1;
    table->n_entries = table->n_entries + 1;
  }
LAB_00014e7a:
  if (var_15 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_16();
  }
  return iVar6;
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 MASKED(int param_1,int param_2,int *param_3)

{
  int iVar1;
  float fVar2;
  char cVar3;
  int iVar4;
  undefined4 uVar5;
  int *piVar6;
  int in_GS_OFFSET;
  undefined4 local_3c;
  int *local_24;
  
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (param_2 == 0) {
                    /* WARNING: Subroutine does not return */
    abort();
  }
  iVar4 = FUN_00014220(0);
  if (iVar4 != 0) {
    uVar5 = 0;
    if (param_3 != (int *)0x0) {
      *param_3 = iVar4;
    }
    goto LAB_00014e7a;
  }
  if ((float)*(uint *)(param_1 + 8) * *(float *)(*(int *)(param_1 + 0x14) + 8) <
      (float)*(uint *)(param_1 + 0xc)) {
    FUN_00014310();
    iVar4 = *(int *)(param_1 + 0x14);
    if ((float)*(uint *)(param_1 + 0xc) <= *(float *)(iVar4 + 8) * (float)*(uint *)(param_1 + 8))
    goto LAB_00014ed8;
    fVar2 = (float)*(uint *)(param_1 + 8) * *(float *)(iVar4 + 0xc);
    if (*(char *)(iVar4 + 0x10) == '\0') {
      fVar2 = fVar2 * *(float *)(iVar4 + 8);
    }
    if (fVar2 < DAT_0001d5c8) {
      local_3c = (undefined4)(longlong)ROUND(fVar2);
      cVar3 = FUN_00014c50(param_1,local_3c);
      if (cVar3 != '\0') {
        iVar4 = FUN_00014220(0);
        if (iVar4 != 0) {
          uVar5 = FUN_000125af();
          return uVar5;
        }
        goto LAB_00014ed8;
      }
    }
LAB_00014f77:
    uVar5 = 0xffffffff;
  }
  else {
LAB_00014ed8:
    if (*local_24 == 0) {
      *local_24 = param_2;
      uVar5 = 1;
      *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
      *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
      goto LAB_00014e7a;
    }
    piVar6 = *(int **)(param_1 + 0x24);
    if (piVar6 == (int *)0x0) {
      piVar6 = (int *)malloc(8);
      if (piVar6 == (int *)0x0) goto LAB_00014f77;
    }
    else {
      *(int *)(param_1 + 0x24) = piVar6[1];
    }
    iVar4 = local_24[1];
    *piVar6 = param_2;
    piVar6[1] = iVar4;
    local_24[1] = (int)piVar6;
    uVar5 = 1;
    *(int *)(param_1 + 0x10) = *(int *)(param_1 + 0x10) + 1;
  }
LAB_00014e7a:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0001cbb0();
  }
  return uVar5;
}

