
RtreeSearchPoint * rtreeSearchPointNew(RtreeCursor *pCur,RtreeDValue rScore,u8 iLevel)

{
  u8 uVar1;
  sqlite3_int64 sVar2;
  u8 uVar3;
  u8 uVar4;
  undefined1 uVar5;
  int iVar6;
  undefined4 uVar7;
  RtreeSearchPoint *pRVar8;
  u32 uVar9;
  undefined4 uVar10;
  undefined4 in_a2;
  undefined4 uVar11;
  undefined4 in_a3;
  undefined4 uVar12;
  uint uVar13;
  double dVar14;
  RtreeDValue RVar15;
  byte in_stack_00000013;
  
  uVar13 = (uint)in_stack_00000013;
  uVar1 = pCur->bPoint;
  RVar15 = (RtreeDValue)CONCAT44(in_a2,in_a3);
  uVar9 = pCur->anQueue[uVar13] + 1;
  if (uVar1 == '\0') {
    if (pCur->nPoint == 0) {
      pCur->anQueue[uVar13] = uVar9;
      goto LAB_00136bf4;
    }
    pRVar8 = pCur->aPoint;
    pCur->anQueue[uVar13] = uVar9;
    if ((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))
    goto LAB_00136bf4;
LAB_00136c28:
    if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {
      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);
      return pRVar8;
    }
    if (uVar1 == '\0') goto LAB_00136bf4;
  }
  else {
    pCur->anQueue[uVar13] = uVar9;
    dVar14 = (pCur->sPoint).rScore;
    pRVar8 = &pCur->sPoint;
    if (dVar14 <= RVar15) goto LAB_00136c28;
  }
  pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);
  if (pRVar8 == (RtreeSearchPoint *)0x0) {
    return (RtreeSearchPoint *)0x0;
  }
  iVar6 = ((int)pRVar8 - (int)pCur->aPoint >> 3) * -0x55555555;
  if (iVar6 + 1 < 5) {
    *(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0];
    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;
  }
  else {
    nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);
    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;
  }
  uVar11 = *(undefined4 *)((int)&(pCur->sPoint).rScore + 4);
  uVar10 = *(undefined4 *)&(pCur->sPoint).id;
  sVar2 = (pCur->sPoint).id;
  uVar1 = (pCur->sPoint).iLevel;
  uVar3 = (pCur->sPoint).eWithin;
  uVar4 = (pCur->sPoint).iCell;
  uVar5 = (pCur->sPoint).field_0x13;
  uVar7 = *(undefined4 *)&(pCur->sPoint).field_0x14;
  pCur->aNode[0] = (RtreeNode *)0x0;
  *(undefined4 *)&pRVar8->rScore = uVar12;
  *(undefined4 *)((int)&pRVar8->rScore + 4) = uVar11;
  *(undefined4 *)&pRVar8->id = uVar10;
  *(int *)((int)&pRVar8->id + 4) = (int)sVar2;
  pRVar8->iLevel = uVar1;
  pRVar8->eWithin = uVar3;
  pRVar8->iCell = uVar4;
  pRVar8->field_0x13 = uVar5;
  *(undefined4 *)&pRVar8->field_0x14 = uVar7;
LAB_00136bf4:
  (pCur->sPoint).rScore = RVar15;
  (pCur->sPoint).iLevel = in_stack_00000013;
  pCur->bPoint = '\x01';
  return &pCur->sPoint;
}



undefined4 *
FUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            byte param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  double *pdVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint uVar11;
  double dVar12;
  double dVar13;
  
  uVar11 = (uint)param_5;
  cVar1 = *(char *)((int)param_1 + 5);
  dVar13 = (double)CONCAT44(param_3,param_4);
  iVar4 = param_1[uVar11 + 0x15] + 1;
  if (cVar1 == '\0') {
    if (param_1[6] == 0) {
      param_1[uVar11 + 0x15] = iVar4;
      goto LAB_00136bf4;
    }
    pdVar8 = (double *)param_1[8];
    param_1[uVar11 + 0x15] = iVar4;
    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;
LAB_00136c28:
    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {
      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);
      return puVar3;
    }
    if (cVar1 == '\0') goto LAB_00136bf4;
  }
  else {
    param_1[uVar11 + 0x15] = iVar4;
    dVar12 = *(double *)(param_1 + 10);
    pdVar8 = (double *)(param_1 + 10);
    if (dVar12 <= dVar13) goto LAB_00136c28;
  }
  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);
  if (puVar3 == (undefined4 *)0x0) {
    return (undefined4 *)0x0;
  }
  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;
  if (iVar4 + 1 < 5) {
    param_1[iVar4 + 0x11] = param_1[0x10];
    uVar10 = param_1[10];
  }
  else {
    FUN_0012e4bc(*param_1,param_1[0x10]);
    uVar10 = param_1[10];
  }
  uVar9 = param_1[0xb];
  uVar7 = param_1[0xc];
  uVar6 = param_1[0xd];
  uVar5 = param_1[0xe];
  uVar2 = param_1[0xf];
  param_1[0x10] = 0;
  *puVar3 = uVar10;
  puVar3[1] = uVar9;
  puVar3[2] = uVar7;
  puVar3[3] = uVar6;
  puVar3[4] = uVar5;
  puVar3[5] = uVar2;
LAB_00136bf4:
  *(double *)(param_1 + 10) = dVar13;
  *(byte *)(param_1 + 0xe) = param_5;
  *(undefined1 *)((int)param_1 + 5) = 1;
  return param_1 + 10;
}


lui gp,0x6
addiu gp,gp,0x1e28
addu gp,gp,t9
addiu sp,sp,-0x38
sdc1 f20,0x30(sp)
mtc1 a3,f20
sw s2,0x28(sp)
sw s0,0x20(sp)
or s0,a0,zero
lbu s2,0x4b(sp)
sw gp,0x18(sp)
sw ra,0x2c(sp)
sll v0,s2,0x2
sw s1,0x24(sp)
lbu a0,0x5(a0)
addu v0,s0,v0
mthc1 a2,f20
lw v1,0x54(v0)
beq a0,zero,0x00136c50
_addiu v1,v1,0x1
sw v1,0x54(v0)
ldc1 f0,0x28(s0)
c.lt.D f20,f0
bc1f 0x00136c24
_addiu a1,s0,0x28
lw t9,-0x7d70(gp)
mfc1 a3,f20
or a0,s0,zero
sw s2,0x10(sp)
addiu t9,t9,0x6968
bal 0x00136968
_mfhc1 a2,f20
lw gp,0x18(sp)
beq v0,zero,0x00136c04
_or s1,v0,zero
lw v0,0x20(s0)
lui v1,0xaaaa
ori v1,v1,0xaaab
subu v0,s1,v0
sra v0,v0,0x3
mul v0,v0,v1
addiu v1,v0,0x1
slti v1,v1,0x5
beq v1,zero,0x00136cb8
_addiu v0,v0,0x11
lw v1,0x40(s0)
sll v0,v0,0x2
addu v0,s0,v0
sw v1,0x0(v0)
lw a3,0x28(s0)
lw a2,0x2c(s0)
lw a1,0x30(s0)
lw a0,0x34(s0)
lw v1,0x38(s0)
lw v0,0x3c(s0)
sw zero,0x40(s0)
sw a3,0x0(s1)
sw a2,0x4(s1)
sw a1,0x8(s1)
sw a0,0xc(s1)
sw v1,0x10(s1)
sw v0,0x14(s1)
li v0,0x1
sdc1 f20,0x28(s0)
addiu s1,s0,0x28
sb s2,0x38(s0)
sb v0,0x5(s0)
lw ra,0x2c(sp)
or v0,s1,zero
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
ldc1 f20,0x30(sp)
jr ra
_addiu sp,sp,0x38
c.eq.D f0,f20
bc1f 0x1,0x00136c80
_mfc1 a3,f20
lbu v0,0x10(a1)
sltu v0,s2,v0
beq v0,zero,0x00136c84
_lw t9,-0x7d70(gp)
bne a0,zero,0x00136b68
_or a0,s0,zero
b 0x00136bf4
_li v0,0x1
lw a1,0x18(s0)
beq a1,zero,0x00136cb0
_nop
lw a1,0x20(s0)
beq a1,zero,0x00136bf0
_sw v1,0x54(v0)
ldc1 f0,0x0(a1)
c.lt.D f20,f0
bc1f 0x2,0x00136c28
_c.eq.D f0,f20
b 0x00136bf4
_li v0,0x1
lw t9,-0x7d70(gp)
or a0,s0,zero
lw ra,0x2c(sp)
mfhc1 a2,f20
ldc1 f20,0x30(sp)
lw s1,0x24(sp)
addiu t9,t9,0x6968
lw s0,0x20(sp)
sw s2,0x48(sp)
lw s2,0x28(sp)
b 0x00136968
_addiu sp,sp,0x38
b 0x00136bf0
_sw v1,0x54(v0)
lw t9,-0x7d70(gp)
lw a1,0x40(s0)
addiu t9,t9,-0x1b44
bal 0x0012e4bc
_lw a0,0x0(s0)
b 0x00136bc0
_lw a3,0x28(s0)
(translation_unit "undefined4 *\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}\n\n" (function_definition "undefined4 *\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}" type_identifier (pointer_declarator "*\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" * (function_declarator "FUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "byte param_5" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "double *pdVar8;" primitive_type (pointer_declarator "*pdVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (expression_statement "uVar11 = (uint)param_5;" (assignment_expression "uVar11 = (uint)param_5" identifier = (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar1 = *(char *)((int)param_1 + 5);" (assignment_expression "cVar1 = *(char *)((int)param_1 + 5)" identifier = (pointer_expression "*(char *)((int)param_1 + 5)" * (cast_expression "(char *)((int)param_1 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "dVar13 = (double)CONCAT44(param_3,param_4);" (assignment_expression "dVar13 = (double)CONCAT44(param_3,param_4)" identifier = (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier ))))) ;) (expression_statement "iVar4 = param_1[uVar11 + 0x15] + 1;" (assignment_expression "iVar4 = param_1[uVar11 + 0x15] + 1" identifier = (binary_expression "param_1[uVar11 + 0x15] + 1" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) + number_literal)) ;) (if_statement "if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }" { (if_statement "if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }" if (parenthesized_expression "(param_1[6] == 0)" ( (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }" { (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) = identifier) ;) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;) })) (expression_statement "pdVar8 = (double *)param_1[8];" (assignment_expression "pdVar8 = (double *)param_1[8]" identifier = (cast_expression "(double *)param_1[8]" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) ;) (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) = identifier) ;) (if_statement "if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;" if (parenthesized_expression "((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12))" ( (binary_expression "(pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)" (parenthesized_expression "(pdVar8 == (double *)0x0)" ( (binary_expression "pdVar8 == (double *)0x0" identifier == (cast_expression "(double *)0x0" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(dVar12 = *pdVar8, dVar13 < dVar12)" ( (comma_expression "dVar12 = *pdVar8, dVar13 < dVar12" (assignment_expression "dVar12 = *pdVar8" identifier = (pointer_expression "*pdVar8" * identifier)) , (binary_expression "dVar13 < dVar12" identifier < identifier)) ))) )) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;)) (labeled_statement "LAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" statement_identifier : (if_statement "if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" if (parenthesized_expression "((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11))" ( (binary_expression "(dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)" (parenthesized_expression "(dVar12 != dVar13)" ( (binary_expression "dVar12 != dVar13" identifier != identifier) )) || (parenthesized_expression "(*(byte *)(pdVar8 + 2) <= uVar11)" ( (binary_expression "*(byte *)(pdVar8 + 2) <= uVar11" (pointer_expression "*(byte *)(pdVar8 + 2)" * (cast_expression "(byte *)(pdVar8 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar8 + 2)" ( (binary_expression "pdVar8 + 2" identifier + number_literal) )))) <= identifier) ))) )) (compound_statement "{\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" { (expression_statement "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);" (assignment_expression "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4)" identifier = (cast_expression "(undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00136968(param_1,pdVar8,param_3,param_4)" identifier (argument_list "(param_1,pdVar8,param_3,param_4)" ( identifier , identifier , identifier , identifier ))))) ;) (return_statement "return puVar3;" return identifier ;) }))) (if_statement "if (cVar1 == '\0') goto LAB_00136bf4;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;)) }) (else_clause "else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" else (compound_statement "{\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" { (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) = identifier) ;) (expression_statement "dVar12 = *(double *)(param_1 + 10);" (assignment_expression "dVar12 = *(double *)(param_1 + 10)" identifier = (pointer_expression "*(double *)(param_1 + 10)" * (cast_expression "(double *)(param_1 + 10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) (expression_statement "pdVar8 = (double *)(param_1 + 10);" (assignment_expression "pdVar8 = (double *)(param_1 + 10)" identifier = (cast_expression "(double *)(param_1 + 10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ;) (if_statement "if (dVar12 <= dVar13) goto LAB_00136c28;" if (parenthesized_expression "(dVar12 <= dVar13)" ( (binary_expression "dVar12 <= dVar13" identifier <= identifier) )) (goto_statement "goto LAB_00136c28;" goto statement_identifier ;)) }))) (expression_statement "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);" (assignment_expression "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" identifier = (cast_expression "(undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" identifier (argument_list "(param_1,pdVar8,param_3,param_4,uVar11)" ( identifier , identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }" if (parenthesized_expression "(puVar3 == (undefined4 *)0x0)" ( (binary_expression "puVar3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (undefined4 *)0x0;\n  }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;" (assignment_expression "iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555" identifier = (binary_expression "((int)puVar3 - param_1[8] >> 3) * -0x55555555" (parenthesized_expression "((int)puVar3 - param_1[8] >> 3)" ( (binary_expression "(int)puVar3 - param_1[8] >> 3" (binary_expression "(int)puVar3 - param_1[8]" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (subscript_expression "param_1[8]" identifier [ number_literal ])) >> number_literal) )) * number_literal)) ;) (if_statement "if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" if (parenthesized_expression "(iVar4 + 1 < 5)" ( (binary_expression "iVar4 + 1 < 5" (binary_expression "iVar4 + 1" identifier + number_literal) < number_literal) )) (compound_statement "{\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }" { (expression_statement "param_1[iVar4 + 0x11] = param_1[0x10];" (assignment_expression "param_1[iVar4 + 0x11] = param_1[0x10]" (subscript_expression "param_1[iVar4 + 0x11]" identifier [ (binary_expression "iVar4 + 0x11" identifier + number_literal) ]) = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = param_1[10];" (assignment_expression "uVar10 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" else (compound_statement "{\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" { (expression_statement "FUN_0012e4bc(*param_1,param_1[0x10]);" (call_expression "FUN_0012e4bc(*param_1,param_1[0x10])" identifier (argument_list "(*param_1,param_1[0x10])" ( (pointer_expression "*param_1" * identifier) , (subscript_expression "param_1[0x10]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar10 = param_1[10];" (assignment_expression "uVar10 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar9 = param_1[0xb];" (assignment_expression "uVar9 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_1[0xc];" (assignment_expression "uVar7 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_1[0xd];" (assignment_expression "uVar6 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[0xe];" (assignment_expression "uVar5 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[0xf];" (assignment_expression "uVar2 = param_1[0xf]" identifier = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar3 = uVar10;" (assignment_expression "*puVar3 = uVar10" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3[1] = uVar9;" (assignment_expression "puVar3[1] = uVar9" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[2] = uVar7;" (assignment_expression "puVar3[2] = uVar7" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[3] = uVar6;" (assignment_expression "puVar3[3] = uVar6" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = uVar5;" (assignment_expression "puVar3[4] = uVar5" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[5] = uVar2;" (assignment_expression "puVar3[5] = uVar2" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;" statement_identifier : (expression_statement "*(double *)(param_1 + 10) = dVar13;" (assignment_expression "*(double *)(param_1 + 10) = dVar13" (pointer_expression "*(double *)(param_1 + 10)" * (cast_expression "(double *)(param_1 + 10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(byte *)(param_1 + 0xe) = param_5;" (assignment_expression "*(byte *)(param_1 + 0xe) = param_5" (pointer_expression "*(byte *)(param_1 + 0xe)" * (cast_expression "(byte *)(param_1 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)((int)param_1 + 5) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 5) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 5)" * (cast_expression "(undefined1 *)((int)param_1 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1 + 10;" return (binary_expression "param_1 + 10" identifier + number_literal) ;) })))
(translation_unit "RtreeSearchPoint * rtreeSearchPointNew(RtreeCursor *pCur,RtreeDValue rScore,u8 iLevel)\n\n{\n  u8 uVar1;\n  sqlite3_int64 sVar2;\n  u8 uVar3;\n  u8 uVar4;\n  undefined1 uVar5;\n  int iVar6;\n  undefined4 uVar7;\n  RtreeSearchPoint *pRVar8;\n  u32 uVar9;\n  undefined4 uVar10;\n  undefined4 in_a2;\n  undefined4 uVar11;\n  undefined4 in_a3;\n  undefined4 uVar12;\n  uint uVar13;\n  double dVar14;\n  RtreeDValue RVar15;\n  byte in_stack_00000013;\n  \n  uVar13 = (uint)in_stack_00000013;\n  uVar1 = pCur->bPoint;\n  RVar15 = (RtreeDValue)CONCAT44(in_a2,in_a3);\n  uVar9 = pCur->anQueue[uVar13] + 1;\n  if (uVar1 == '\0') {\n    if (pCur->nPoint == 0) {\n      pCur->anQueue[uVar13] = uVar9;\n      goto LAB_00136bf4;\n    }\n    pRVar8 = pCur->aPoint;\n    pCur->anQueue[uVar13] = uVar9;\n    if ((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))\n    goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }\n    if (uVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    pCur->anQueue[uVar13] = uVar9;\n    dVar14 = (pCur->sPoint).rScore;\n    pRVar8 = &pCur->sPoint;\n    if (dVar14 <= RVar15) goto LAB_00136c28;\n  }\n  pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n  if (pRVar8 == (RtreeSearchPoint *)0x0) {\n    return (RtreeSearchPoint *)0x0;\n  }\n  iVar6 = ((int)pRVar8 - (int)pCur->aPoint >> 3) * -0x55555555;\n  if (iVar6 + 1 < 5) {\n    *(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0];\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }\n  else {\n    nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }\n  uVar11 = *(undefined4 *)((int)&(pCur->sPoint).rScore + 4);\n  uVar10 = *(undefined4 *)&(pCur->sPoint).id;\n  sVar2 = (pCur->sPoint).id;\n  uVar1 = (pCur->sPoint).iLevel;\n  uVar3 = (pCur->sPoint).eWithin;\n  uVar4 = (pCur->sPoint).iCell;\n  uVar5 = (pCur->sPoint).field_0x13;\n  uVar7 = *(undefined4 *)&(pCur->sPoint).field_0x14;\n  pCur->aNode[0] = (RtreeNode *)0x0;\n  *(undefined4 *)&pRVar8->rScore = uVar12;\n  *(undefined4 *)((int)&pRVar8->rScore + 4) = uVar11;\n  *(undefined4 *)&pRVar8->id = uVar10;\n  *(int *)((int)&pRVar8->id + 4) = (int)sVar2;\n  pRVar8->iLevel = uVar1;\n  pRVar8->eWithin = uVar3;\n  pRVar8->iCell = uVar4;\n  pRVar8->field_0x13 = uVar5;\n  *(undefined4 *)&pRVar8->field_0x14 = uVar7;\nLAB_00136bf4:\n  (pCur->sPoint).rScore = RVar15;\n  (pCur->sPoint).iLevel = in_stack_00000013;\n  pCur->bPoint = '\x01';\n  return &pCur->sPoint;\n}\n\n" (function_definition "RtreeSearchPoint * rtreeSearchPointNew(RtreeCursor *pCur,RtreeDValue rScore,u8 iLevel)\n\n{\n  u8 uVar1;\n  sqlite3_int64 sVar2;\n  u8 uVar3;\n  u8 uVar4;\n  undefined1 uVar5;\n  int iVar6;\n  undefined4 uVar7;\n  RtreeSearchPoint *pRVar8;\n  u32 uVar9;\n  undefined4 uVar10;\n  undefined4 in_a2;\n  undefined4 uVar11;\n  undefined4 in_a3;\n  undefined4 uVar12;\n  uint uVar13;\n  double dVar14;\n  RtreeDValue RVar15;\n  byte in_stack_00000013;\n  \n  uVar13 = (uint)in_stack_00000013;\n  uVar1 = pCur->bPoint;\n  RVar15 = (RtreeDValue)CONCAT44(in_a2,in_a3);\n  uVar9 = pCur->anQueue[uVar13] + 1;\n  if (uVar1 == '\0') {\n    if (pCur->nPoint == 0) {\n      pCur->anQueue[uVar13] = uVar9;\n      goto LAB_00136bf4;\n    }\n    pRVar8 = pCur->aPoint;\n    pCur->anQueue[uVar13] = uVar9;\n    if ((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))\n    goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }\n    if (uVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    pCur->anQueue[uVar13] = uVar9;\n    dVar14 = (pCur->sPoint).rScore;\n    pRVar8 = &pCur->sPoint;\n    if (dVar14 <= RVar15) goto LAB_00136c28;\n  }\n  pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n  if (pRVar8 == (RtreeSearchPoint *)0x0) {\n    return (RtreeSearchPoint *)0x0;\n  }\n  iVar6 = ((int)pRVar8 - (int)pCur->aPoint >> 3) * -0x55555555;\n  if (iVar6 + 1 < 5) {\n    *(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0];\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }\n  else {\n    nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }\n  uVar11 = *(undefined4 *)((int)&(pCur->sPoint).rScore + 4);\n  uVar10 = *(undefined4 *)&(pCur->sPoint).id;\n  sVar2 = (pCur->sPoint).id;\n  uVar1 = (pCur->sPoint).iLevel;\n  uVar3 = (pCur->sPoint).eWithin;\n  uVar4 = (pCur->sPoint).iCell;\n  uVar5 = (pCur->sPoint).field_0x13;\n  uVar7 = *(undefined4 *)&(pCur->sPoint).field_0x14;\n  pCur->aNode[0] = (RtreeNode *)0x0;\n  *(undefined4 *)&pRVar8->rScore = uVar12;\n  *(undefined4 *)((int)&pRVar8->rScore + 4) = uVar11;\n  *(undefined4 *)&pRVar8->id = uVar10;\n  *(int *)((int)&pRVar8->id + 4) = (int)sVar2;\n  pRVar8->iLevel = uVar1;\n  pRVar8->eWithin = uVar3;\n  pRVar8->iCell = uVar4;\n  pRVar8->field_0x13 = uVar5;\n  *(undefined4 *)&pRVar8->field_0x14 = uVar7;\nLAB_00136bf4:\n  (pCur->sPoint).rScore = RVar15;\n  (pCur->sPoint).iLevel = in_stack_00000013;\n  pCur->bPoint = '\x01';\n  return &pCur->sPoint;\n}" type_identifier (pointer_declarator "* rtreeSearchPointNew(RtreeCursor *pCur,RtreeDValue rScore,u8 iLevel)" * (function_declarator "rtreeSearchPointNew(RtreeCursor *pCur,RtreeDValue rScore,u8 iLevel)" identifier (parameter_list "(RtreeCursor *pCur,RtreeDValue rScore,u8 iLevel)" ( (parameter_declaration "RtreeCursor *pCur" type_identifier (pointer_declarator "*pCur" * identifier)) , (parameter_declaration "RtreeDValue rScore" type_identifier identifier) , (parameter_declaration "u8 iLevel" type_identifier identifier) )))) (compound_statement "{\n  u8 uVar1;\n  sqlite3_int64 sVar2;\n  u8 uVar3;\n  u8 uVar4;\n  undefined1 uVar5;\n  int iVar6;\n  undefined4 uVar7;\n  RtreeSearchPoint *pRVar8;\n  u32 uVar9;\n  undefined4 uVar10;\n  undefined4 in_a2;\n  undefined4 uVar11;\n  undefined4 in_a3;\n  undefined4 uVar12;\n  uint uVar13;\n  double dVar14;\n  RtreeDValue RVar15;\n  byte in_stack_00000013;\n  \n  uVar13 = (uint)in_stack_00000013;\n  uVar1 = pCur->bPoint;\n  RVar15 = (RtreeDValue)CONCAT44(in_a2,in_a3);\n  uVar9 = pCur->anQueue[uVar13] + 1;\n  if (uVar1 == '\0') {\n    if (pCur->nPoint == 0) {\n      pCur->anQueue[uVar13] = uVar9;\n      goto LAB_00136bf4;\n    }\n    pRVar8 = pCur->aPoint;\n    pCur->anQueue[uVar13] = uVar9;\n    if ((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))\n    goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }\n    if (uVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    pCur->anQueue[uVar13] = uVar9;\n    dVar14 = (pCur->sPoint).rScore;\n    pRVar8 = &pCur->sPoint;\n    if (dVar14 <= RVar15) goto LAB_00136c28;\n  }\n  pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n  if (pRVar8 == (RtreeSearchPoint *)0x0) {\n    return (RtreeSearchPoint *)0x0;\n  }\n  iVar6 = ((int)pRVar8 - (int)pCur->aPoint >> 3) * -0x55555555;\n  if (iVar6 + 1 < 5) {\n    *(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0];\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }\n  else {\n    nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }\n  uVar11 = *(undefined4 *)((int)&(pCur->sPoint).rScore + 4);\n  uVar10 = *(undefined4 *)&(pCur->sPoint).id;\n  sVar2 = (pCur->sPoint).id;\n  uVar1 = (pCur->sPoint).iLevel;\n  uVar3 = (pCur->sPoint).eWithin;\n  uVar4 = (pCur->sPoint).iCell;\n  uVar5 = (pCur->sPoint).field_0x13;\n  uVar7 = *(undefined4 *)&(pCur->sPoint).field_0x14;\n  pCur->aNode[0] = (RtreeNode *)0x0;\n  *(undefined4 *)&pRVar8->rScore = uVar12;\n  *(undefined4 *)((int)&pRVar8->rScore + 4) = uVar11;\n  *(undefined4 *)&pRVar8->id = uVar10;\n  *(int *)((int)&pRVar8->id + 4) = (int)sVar2;\n  pRVar8->iLevel = uVar1;\n  pRVar8->eWithin = uVar3;\n  pRVar8->iCell = uVar4;\n  pRVar8->field_0x13 = uVar5;\n  *(undefined4 *)&pRVar8->field_0x14 = uVar7;\nLAB_00136bf4:\n  (pCur->sPoint).rScore = RVar15;\n  (pCur->sPoint).iLevel = in_stack_00000013;\n  pCur->bPoint = '\x01';\n  return &pCur->sPoint;\n}" { (declaration "u8 uVar1;" type_identifier identifier ;) (declaration "sqlite3_int64 sVar2;" type_identifier identifier ;) (declaration "u8 uVar3;" type_identifier identifier ;) (declaration "u8 uVar4;" type_identifier identifier ;) (declaration "undefined1 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "RtreeSearchPoint *pRVar8;" type_identifier (pointer_declarator "*pRVar8" * identifier) ;) (declaration "u32 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 in_a2;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined4 in_a3;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "RtreeDValue RVar15;" type_identifier identifier ;) (declaration "byte in_stack_00000013;" type_identifier identifier ;) (expression_statement "uVar13 = (uint)in_stack_00000013;" (assignment_expression "uVar13 = (uint)in_stack_00000013" identifier = (cast_expression "(uint)in_stack_00000013" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar1 = pCur->bPoint;" (assignment_expression "uVar1 = pCur->bPoint" identifier = (field_expression "pCur->bPoint" identifier -> field_identifier)) ;) (expression_statement "RVar15 = (RtreeDValue)CONCAT44(in_a2,in_a3);" (assignment_expression "RVar15 = (RtreeDValue)CONCAT44(in_a2,in_a3)" identifier = (cast_expression "(RtreeDValue)CONCAT44(in_a2,in_a3)" ( (type_descriptor "RtreeDValue" type_identifier) ) (call_expression "CONCAT44(in_a2,in_a3)" identifier (argument_list "(in_a2,in_a3)" ( identifier , identifier ))))) ;) (expression_statement "uVar9 = pCur->anQueue[uVar13] + 1;" (assignment_expression "uVar9 = pCur->anQueue[uVar13] + 1" identifier = (binary_expression "pCur->anQueue[uVar13] + 1" (subscript_expression "pCur->anQueue[uVar13]" (field_expression "pCur->anQueue" identifier -> field_identifier) [ identifier ]) + number_literal)) ;) (if_statement "if (uVar1 == '\0') {\n    if (pCur->nPoint == 0) {\n      pCur->anQueue[uVar13] = uVar9;\n      goto LAB_00136bf4;\n    }\n    pRVar8 = pCur->aPoint;\n    pCur->anQueue[uVar13] = uVar9;\n    if ((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))\n    goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }\n    if (uVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    pCur->anQueue[uVar13] = uVar9;\n    dVar14 = (pCur->sPoint).rScore;\n    pRVar8 = &pCur->sPoint;\n    if (dVar14 <= RVar15) goto LAB_00136c28;\n  }" if (parenthesized_expression "(uVar1 == '\0')" ( (binary_expression "uVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (pCur->nPoint == 0) {\n      pCur->anQueue[uVar13] = uVar9;\n      goto LAB_00136bf4;\n    }\n    pRVar8 = pCur->aPoint;\n    pCur->anQueue[uVar13] = uVar9;\n    if ((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))\n    goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }\n    if (uVar1 == '\0') goto LAB_00136bf4;\n  }" { (if_statement "if (pCur->nPoint == 0) {\n      pCur->anQueue[uVar13] = uVar9;\n      goto LAB_00136bf4;\n    }" if (parenthesized_expression "(pCur->nPoint == 0)" ( (binary_expression "pCur->nPoint == 0" (field_expression "pCur->nPoint" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pCur->anQueue[uVar13] = uVar9;\n      goto LAB_00136bf4;\n    }" { (expression_statement "pCur->anQueue[uVar13] = uVar9;" (assignment_expression "pCur->anQueue[uVar13] = uVar9" (subscript_expression "pCur->anQueue[uVar13]" (field_expression "pCur->anQueue" identifier -> field_identifier) [ identifier ]) = identifier) ;) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;) })) (expression_statement "pRVar8 = pCur->aPoint;" (assignment_expression "pRVar8 = pCur->aPoint" identifier = (field_expression "pCur->aPoint" identifier -> field_identifier)) ;) (expression_statement "pCur->anQueue[uVar13] = uVar9;" (assignment_expression "pCur->anQueue[uVar13] = uVar9" (subscript_expression "pCur->anQueue[uVar13]" (field_expression "pCur->anQueue" identifier -> field_identifier) [ identifier ]) = identifier) ;) (if_statement "if ((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))\n    goto LAB_00136bf4;" if (parenthesized_expression "((pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14))" ( (binary_expression "(pRVar8 == (RtreeSearchPoint *)0x0) || (dVar14 = pRVar8->rScore, RVar15 < dVar14)" (parenthesized_expression "(pRVar8 == (RtreeSearchPoint *)0x0)" ( (binary_expression "pRVar8 == (RtreeSearchPoint *)0x0" identifier == (cast_expression "(RtreeSearchPoint *)0x0" ( (type_descriptor "RtreeSearchPoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(dVar14 = pRVar8->rScore, RVar15 < dVar14)" ( (comma_expression "dVar14 = pRVar8->rScore, RVar15 < dVar14" (assignment_expression "dVar14 = pRVar8->rScore" identifier = (field_expression "pRVar8->rScore" identifier -> field_identifier)) , (binary_expression "RVar15 < dVar14" identifier < identifier)) ))) )) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;)) (labeled_statement "LAB_00136c28:\n    if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }" statement_identifier : (if_statement "if ((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)) {\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }" if (parenthesized_expression "((dVar14 != RVar15) || (pRVar8->iLevel <= uVar13))" ( (binary_expression "(dVar14 != RVar15) || (pRVar8->iLevel <= uVar13)" (parenthesized_expression "(dVar14 != RVar15)" ( (binary_expression "dVar14 != RVar15" identifier != identifier) )) || (parenthesized_expression "(pRVar8->iLevel <= uVar13)" ( (binary_expression "pRVar8->iLevel <= uVar13" (field_expression "pRVar8->iLevel" identifier -> field_identifier) <= identifier) ))) )) (compound_statement "{\n      pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);\n      return pRVar8;\n    }" { (expression_statement "pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);" (assignment_expression "pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8)" identifier = (call_expression "rtreeEnqueue(pCur,rScore,(u8)pRVar8)" identifier (argument_list "(pCur,rScore,(u8)pRVar8)" ( identifier , identifier , (cast_expression "(u8)pRVar8" ( (type_descriptor "u8" type_identifier) ) identifier) )))) ;) (return_statement "return pRVar8;" return identifier ;) }))) (if_statement "if (uVar1 == '\0') goto LAB_00136bf4;" if (parenthesized_expression "(uVar1 == '\0')" ( (binary_expression "uVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;)) }) (else_clause "else {\n    pCur->anQueue[uVar13] = uVar9;\n    dVar14 = (pCur->sPoint).rScore;\n    pRVar8 = &pCur->sPoint;\n    if (dVar14 <= RVar15) goto LAB_00136c28;\n  }" else (compound_statement "{\n    pCur->anQueue[uVar13] = uVar9;\n    dVar14 = (pCur->sPoint).rScore;\n    pRVar8 = &pCur->sPoint;\n    if (dVar14 <= RVar15) goto LAB_00136c28;\n  }" { (expression_statement "pCur->anQueue[uVar13] = uVar9;" (assignment_expression "pCur->anQueue[uVar13] = uVar9" (subscript_expression "pCur->anQueue[uVar13]" (field_expression "pCur->anQueue" identifier -> field_identifier) [ identifier ]) = identifier) ;) (expression_statement "dVar14 = (pCur->sPoint).rScore;" (assignment_expression "dVar14 = (pCur->sPoint).rScore" identifier = (field_expression "(pCur->sPoint).rScore" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pRVar8 = &pCur->sPoint;" (assignment_expression "pRVar8 = &pCur->sPoint" identifier = (pointer_expression "&pCur->sPoint" & (field_expression "pCur->sPoint" identifier -> field_identifier))) ;) (if_statement "if (dVar14 <= RVar15) goto LAB_00136c28;" if (parenthesized_expression "(dVar14 <= RVar15)" ( (binary_expression "dVar14 <= RVar15" identifier <= identifier) )) (goto_statement "goto LAB_00136c28;" goto statement_identifier ;)) }))) (expression_statement "pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8);" (assignment_expression "pRVar8 = rtreeEnqueue(pCur,rScore,(u8)pRVar8)" identifier = (call_expression "rtreeEnqueue(pCur,rScore,(u8)pRVar8)" identifier (argument_list "(pCur,rScore,(u8)pRVar8)" ( identifier , identifier , (cast_expression "(u8)pRVar8" ( (type_descriptor "u8" type_identifier) ) identifier) )))) ;) (if_statement "if (pRVar8 == (RtreeSearchPoint *)0x0) {\n    return (RtreeSearchPoint *)0x0;\n  }" if (parenthesized_expression "(pRVar8 == (RtreeSearchPoint *)0x0)" ( (binary_expression "pRVar8 == (RtreeSearchPoint *)0x0" identifier == (cast_expression "(RtreeSearchPoint *)0x0" ( (type_descriptor "RtreeSearchPoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (RtreeSearchPoint *)0x0;\n  }" { (return_statement "return (RtreeSearchPoint *)0x0;" return (cast_expression "(RtreeSearchPoint *)0x0" ( (type_descriptor "RtreeSearchPoint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = ((int)pRVar8 - (int)pCur->aPoint >> 3) * -0x55555555;" (assignment_expression "iVar6 = ((int)pRVar8 - (int)pCur->aPoint >> 3) * -0x55555555" identifier = (binary_expression "((int)pRVar8 - (int)pCur->aPoint >> 3) * -0x55555555" (parenthesized_expression "((int)pRVar8 - (int)pCur->aPoint >> 3)" ( (binary_expression "(int)pRVar8 - (int)pCur->aPoint >> 3" (binary_expression "(int)pRVar8 - (int)pCur->aPoint" (cast_expression "(int)pRVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pCur->aPoint" ( (type_descriptor "int" primitive_type) ) (field_expression "pCur->aPoint" identifier -> field_identifier))) >> number_literal) )) * number_literal)) ;) (if_statement "if (iVar6 + 1 < 5) {\n    *(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0];\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }\n  else {\n    nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }" if (parenthesized_expression "(iVar6 + 1 < 5)" ( (binary_expression "iVar6 + 1 < 5" (binary_expression "iVar6 + 1" identifier + number_literal) < number_literal) )) (compound_statement "{\n    *(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0];\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }" { (expression_statement "*(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0];" (assignment_expression "*(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4) = pCur->aNode[0]" (pointer_expression "*(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4)" * (cast_expression "(RtreeNode **)((int)pCur + (iVar6 + 0x11) * 4)" ( (type_descriptor "RtreeNode **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)pCur + (iVar6 + 0x11) * 4)" ( (binary_expression "(int)pCur + (iVar6 + 0x11) * 4" (cast_expression "(int)pCur" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(iVar6 + 0x11) * 4" (parenthesized_expression "(iVar6 + 0x11)" ( (binary_expression "iVar6 + 0x11" identifier + number_literal) )) * number_literal)) )))) = (subscript_expression "pCur->aNode[0]" (field_expression "pCur->aNode" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;" (assignment_expression "uVar12 = *(undefined4 *)&(pCur->sPoint).rScore" identifier = (pointer_expression "*(undefined4 *)&(pCur->sPoint).rScore" * (cast_expression "(undefined4 *)&(pCur->sPoint).rScore" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pCur->sPoint).rScore" & (field_expression "(pCur->sPoint).rScore" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier))))) ;) }) (else_clause "else {\n    nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }" else (compound_statement "{\n    nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);\n    uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;\n  }" { (expression_statement "nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0]);" (call_expression "nodeRelease((Rtree *)(pCur->base).pVtab,pCur->aNode[0])" identifier (argument_list "((Rtree *)(pCur->base).pVtab,pCur->aNode[0])" ( (cast_expression "(Rtree *)(pCur->base).pVtab" ( (type_descriptor "Rtree *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(pCur->base).pVtab" (parenthesized_expression "(pCur->base)" ( (field_expression "pCur->base" identifier -> field_identifier) )) . field_identifier)) , (subscript_expression "pCur->aNode[0]" (field_expression "pCur->aNode" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "uVar12 = *(undefined4 *)&(pCur->sPoint).rScore;" (assignment_expression "uVar12 = *(undefined4 *)&(pCur->sPoint).rScore" identifier = (pointer_expression "*(undefined4 *)&(pCur->sPoint).rScore" * (cast_expression "(undefined4 *)&(pCur->sPoint).rScore" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pCur->sPoint).rScore" & (field_expression "(pCur->sPoint).rScore" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier))))) ;) }))) (expression_statement "uVar11 = *(undefined4 *)((int)&(pCur->sPoint).rScore + 4);" (assignment_expression "uVar11 = *(undefined4 *)((int)&(pCur->sPoint).rScore + 4)" identifier = (pointer_expression "*(undefined4 *)((int)&(pCur->sPoint).rScore + 4)" * (cast_expression "(undefined4 *)((int)&(pCur->sPoint).rScore + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(pCur->sPoint).rScore + 4)" ( (binary_expression "(int)&(pCur->sPoint).rScore + 4" (cast_expression "(int)&(pCur->sPoint).rScore" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(pCur->sPoint).rScore" & (field_expression "(pCur->sPoint).rScore" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar10 = *(undefined4 *)&(pCur->sPoint).id;" (assignment_expression "uVar10 = *(undefined4 *)&(pCur->sPoint).id" identifier = (pointer_expression "*(undefined4 *)&(pCur->sPoint).id" * (cast_expression "(undefined4 *)&(pCur->sPoint).id" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pCur->sPoint).id" & (field_expression "(pCur->sPoint).id" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "sVar2 = (pCur->sPoint).id;" (assignment_expression "sVar2 = (pCur->sPoint).id" identifier = (field_expression "(pCur->sPoint).id" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar1 = (pCur->sPoint).iLevel;" (assignment_expression "uVar1 = (pCur->sPoint).iLevel" identifier = (field_expression "(pCur->sPoint).iLevel" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar3 = (pCur->sPoint).eWithin;" (assignment_expression "uVar3 = (pCur->sPoint).eWithin" identifier = (field_expression "(pCur->sPoint).eWithin" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar4 = (pCur->sPoint).iCell;" (assignment_expression "uVar4 = (pCur->sPoint).iCell" identifier = (field_expression "(pCur->sPoint).iCell" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar5 = (pCur->sPoint).field_0x13;" (assignment_expression "uVar5 = (pCur->sPoint).field_0x13" identifier = (field_expression "(pCur->sPoint).field_0x13" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar7 = *(undefined4 *)&(pCur->sPoint).field_0x14;" (assignment_expression "uVar7 = *(undefined4 *)&(pCur->sPoint).field_0x14" identifier = (pointer_expression "*(undefined4 *)&(pCur->sPoint).field_0x14" * (cast_expression "(undefined4 *)&(pCur->sPoint).field_0x14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(pCur->sPoint).field_0x14" & (field_expression "(pCur->sPoint).field_0x14" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier))))) ;) (expression_statement "pCur->aNode[0] = (RtreeNode *)0x0;" (assignment_expression "pCur->aNode[0] = (RtreeNode *)0x0" (subscript_expression "pCur->aNode[0]" (field_expression "pCur->aNode" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(RtreeNode *)0x0" ( (type_descriptor "RtreeNode *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*(undefined4 *)&pRVar8->rScore = uVar12;" (assignment_expression "*(undefined4 *)&pRVar8->rScore = uVar12" (pointer_expression "*(undefined4 *)&pRVar8->rScore" * (cast_expression "(undefined4 *)&pRVar8->rScore" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pRVar8->rScore" & (field_expression "pRVar8->rScore" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(undefined4 *)((int)&pRVar8->rScore + 4) = uVar11;" (assignment_expression "*(undefined4 *)((int)&pRVar8->rScore + 4) = uVar11" (pointer_expression "*(undefined4 *)((int)&pRVar8->rScore + 4)" * (cast_expression "(undefined4 *)((int)&pRVar8->rScore + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pRVar8->rScore + 4)" ( (binary_expression "(int)&pRVar8->rScore + 4" (cast_expression "(int)&pRVar8->rScore" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pRVar8->rScore" & (field_expression "pRVar8->rScore" identifier -> field_identifier))) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)&pRVar8->id = uVar10;" (assignment_expression "*(undefined4 *)&pRVar8->id = uVar10" (pointer_expression "*(undefined4 *)&pRVar8->id" * (cast_expression "(undefined4 *)&pRVar8->id" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pRVar8->id" & (field_expression "pRVar8->id" identifier -> field_identifier)))) = identifier) ;) (expression_statement "*(int *)((int)&pRVar8->id + 4) = (int)sVar2;" (assignment_expression "*(int *)((int)&pRVar8->id + 4) = (int)sVar2" (pointer_expression "*(int *)((int)&pRVar8->id + 4)" * (cast_expression "(int *)((int)&pRVar8->id + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pRVar8->id + 4)" ( (binary_expression "(int)&pRVar8->id + 4" (cast_expression "(int)&pRVar8->id" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pRVar8->id" & (field_expression "pRVar8->id" identifier -> field_identifier))) + number_literal) )))) = (cast_expression "(int)sVar2" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pRVar8->iLevel = uVar1;" (assignment_expression "pRVar8->iLevel = uVar1" (field_expression "pRVar8->iLevel" identifier -> field_identifier) = identifier) ;) (expression_statement "pRVar8->eWithin = uVar3;" (assignment_expression "pRVar8->eWithin = uVar3" (field_expression "pRVar8->eWithin" identifier -> field_identifier) = identifier) ;) (expression_statement "pRVar8->iCell = uVar4;" (assignment_expression "pRVar8->iCell = uVar4" (field_expression "pRVar8->iCell" identifier -> field_identifier) = identifier) ;) (expression_statement "pRVar8->field_0x13 = uVar5;" (assignment_expression "pRVar8->field_0x13 = uVar5" (field_expression "pRVar8->field_0x13" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined4 *)&pRVar8->field_0x14 = uVar7;" (assignment_expression "*(undefined4 *)&pRVar8->field_0x14 = uVar7" (pointer_expression "*(undefined4 *)&pRVar8->field_0x14" * (cast_expression "(undefined4 *)&pRVar8->field_0x14" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pRVar8->field_0x14" & (field_expression "pRVar8->field_0x14" identifier -> field_identifier)))) = identifier) ;) (labeled_statement "LAB_00136bf4:\n  (pCur->sPoint).rScore = RVar15;" statement_identifier : (expression_statement "(pCur->sPoint).rScore = RVar15;" (assignment_expression "(pCur->sPoint).rScore = RVar15" (field_expression "(pCur->sPoint).rScore" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier) = identifier) ;)) (expression_statement "(pCur->sPoint).iLevel = in_stack_00000013;" (assignment_expression "(pCur->sPoint).iLevel = in_stack_00000013" (field_expression "(pCur->sPoint).iLevel" (parenthesized_expression "(pCur->sPoint)" ( (field_expression "pCur->sPoint" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pCur->bPoint = '\x01';" (assignment_expression "pCur->bPoint = '\x01'" (field_expression "pCur->bPoint" identifier -> field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (return_statement "return &pCur->sPoint;" return (pointer_expression "&pCur->sPoint" & (field_expression "pCur->sPoint" identifier -> field_identifier)) ;) })))
(translation_unit "undefined4 *\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}\n\n" (function_definition "undefined4 *\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}" type_identifier (pointer_declarator "*\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" * (function_declarator "FUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) , (parameter_declaration "byte param_5" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "double *pdVar8;" primitive_type (pointer_declarator "*pdVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (expression_statement "uVar11 = (uint)param_5;" (assignment_expression "uVar11 = (uint)param_5" identifier = (cast_expression "(uint)param_5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar1 = *(char *)((int)param_1 + 5);" (assignment_expression "cVar1 = *(char *)((int)param_1 + 5)" identifier = (pointer_expression "*(char *)((int)param_1 + 5)" * (cast_expression "(char *)((int)param_1 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "dVar13 = (double)CONCAT44(param_3,param_4);" (assignment_expression "dVar13 = (double)CONCAT44(param_3,param_4)" identifier = (cast_expression "(double)CONCAT44(param_3,param_4)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier ))))) ;) (expression_statement "iVar4 = param_1[uVar11 + 0x15] + 1;" (assignment_expression "iVar4 = param_1[uVar11 + 0x15] + 1" identifier = (binary_expression "param_1[uVar11 + 0x15] + 1" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) + number_literal)) ;) (if_statement "if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }" { (if_statement "if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }" if (parenthesized_expression "(param_1[6] == 0)" ( (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }" { (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) = identifier) ;) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;) })) (expression_statement "pdVar8 = (double *)param_1[8];" (assignment_expression "pdVar8 = (double *)param_1[8]" identifier = (cast_expression "(double *)param_1[8]" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[8]" identifier [ number_literal ]))) ;) (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) = identifier) ;) (if_statement "if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;" if (parenthesized_expression "((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12))" ( (binary_expression "(pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)" (parenthesized_expression "(pdVar8 == (double *)0x0)" ( (binary_expression "pdVar8 == (double *)0x0" identifier == (cast_expression "(double *)0x0" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(dVar12 = *pdVar8, dVar13 < dVar12)" ( (comma_expression "dVar12 = *pdVar8, dVar13 < dVar12" (assignment_expression "dVar12 = *pdVar8" identifier = (pointer_expression "*pdVar8" * identifier)) , (binary_expression "dVar13 < dVar12" identifier < identifier)) ))) )) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;)) (labeled_statement "LAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" statement_identifier : (if_statement "if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" if (parenthesized_expression "((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11))" ( (binary_expression "(dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)" (parenthesized_expression "(dVar12 != dVar13)" ( (binary_expression "dVar12 != dVar13" identifier != identifier) )) || (parenthesized_expression "(*(byte *)(pdVar8 + 2) <= uVar11)" ( (binary_expression "*(byte *)(pdVar8 + 2) <= uVar11" (pointer_expression "*(byte *)(pdVar8 + 2)" * (cast_expression "(byte *)(pdVar8 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar8 + 2)" ( (binary_expression "pdVar8 + 2" identifier + number_literal) )))) <= identifier) ))) )) (compound_statement "{\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" { (expression_statement "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);" (assignment_expression "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4)" identifier = (cast_expression "(undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00136968(param_1,pdVar8,param_3,param_4)" identifier (argument_list "(param_1,pdVar8,param_3,param_4)" ( identifier , identifier , identifier , identifier ))))) ;) (return_statement "return puVar3;" return identifier ;) }))) (if_statement "if (cVar1 == '\0') goto LAB_00136bf4;" if (parenthesized_expression "(cVar1 == '\0')" ( (binary_expression "cVar1 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00136bf4;" goto statement_identifier ;)) }) (else_clause "else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" else (compound_statement "{\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" { (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" identifier [ (binary_expression "uVar11 + 0x15" identifier + number_literal) ]) = identifier) ;) (expression_statement "dVar12 = *(double *)(param_1 + 10);" (assignment_expression "dVar12 = *(double *)(param_1 + 10)" identifier = (pointer_expression "*(double *)(param_1 + 10)" * (cast_expression "(double *)(param_1 + 10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) ))))) ;) (expression_statement "pdVar8 = (double *)(param_1 + 10);" (assignment_expression "pdVar8 = (double *)(param_1 + 10)" identifier = (cast_expression "(double *)(param_1 + 10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) ;) (if_statement "if (dVar12 <= dVar13) goto LAB_00136c28;" if (parenthesized_expression "(dVar12 <= dVar13)" ( (binary_expression "dVar12 <= dVar13" identifier <= identifier) )) (goto_statement "goto LAB_00136c28;" goto statement_identifier ;)) }))) (expression_statement "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);" (assignment_expression "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" identifier = (cast_expression "(undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" identifier (argument_list "(param_1,pdVar8,param_3,param_4,uVar11)" ( identifier , identifier , identifier , identifier , identifier ))))) ;) (if_statement "if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }" if (parenthesized_expression "(puVar3 == (undefined4 *)0x0)" ( (binary_expression "puVar3 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (undefined4 *)0x0;\n  }" { (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;" (assignment_expression "iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555" identifier = (binary_expression "((int)puVar3 - param_1[8] >> 3) * -0x55555555" (parenthesized_expression "((int)puVar3 - param_1[8] >> 3)" ( (binary_expression "(int)puVar3 - param_1[8] >> 3" (binary_expression "(int)puVar3 - param_1[8]" (cast_expression "(int)puVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (subscript_expression "param_1[8]" identifier [ number_literal ])) >> number_literal) )) * number_literal)) ;) (if_statement "if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" if (parenthesized_expression "(iVar4 + 1 < 5)" ( (binary_expression "iVar4 + 1 < 5" (binary_expression "iVar4 + 1" identifier + number_literal) < number_literal) )) (compound_statement "{\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }" { (expression_statement "param_1[iVar4 + 0x11] = param_1[0x10];" (assignment_expression "param_1[iVar4 + 0x11] = param_1[0x10]" (subscript_expression "param_1[iVar4 + 0x11]" identifier [ (binary_expression "iVar4 + 0x11" identifier + number_literal) ]) = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = param_1[10];" (assignment_expression "uVar10 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }) (else_clause "else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" else (compound_statement "{\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" { (expression_statement "FUN_0012e4bc(*param_1,param_1[0x10]);" (call_expression "FUN_0012e4bc(*param_1,param_1[0x10])" identifier (argument_list "(*param_1,param_1[0x10])" ( (pointer_expression "*param_1" * identifier) , (subscript_expression "param_1[0x10]" identifier [ number_literal ]) ))) ;) (expression_statement "uVar10 = param_1[10];" (assignment_expression "uVar10 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) }))) (expression_statement "uVar9 = param_1[0xb];" (assignment_expression "uVar9 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = param_1[0xc];" (assignment_expression "uVar7 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = param_1[0xd];" (assignment_expression "uVar6 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = param_1[0xe];" (assignment_expression "uVar5 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[0xf];" (assignment_expression "uVar2 = param_1[0xf]" identifier = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar3 = uVar10;" (assignment_expression "*puVar3 = uVar10" (pointer_expression "*puVar3" * identifier) = identifier) ;) (expression_statement "puVar3[1] = uVar9;" (assignment_expression "puVar3[1] = uVar9" (subscript_expression "puVar3[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[2] = uVar7;" (assignment_expression "puVar3[2] = uVar7" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[3] = uVar6;" (assignment_expression "puVar3[3] = uVar6" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = uVar5;" (assignment_expression "puVar3[4] = uVar5" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[5] = uVar2;" (assignment_expression "puVar3[5] = uVar2" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;" statement_identifier : (expression_statement "*(double *)(param_1 + 10) = dVar13;" (assignment_expression "*(double *)(param_1 + 10) = dVar13" (pointer_expression "*(double *)(param_1 + 10)" * (cast_expression "(double *)(param_1 + 10)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(byte *)(param_1 + 0xe) = param_5;" (assignment_expression "*(byte *)(param_1 + 0xe) = param_5" (pointer_expression "*(byte *)(param_1 + 0xe)" * (cast_expression "(byte *)(param_1 + 0xe)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe)" ( (binary_expression "param_1 + 0xe" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 *)((int)param_1 + 5) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 5) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 5)" * (cast_expression "(undefined1 *)((int)param_1 + 5)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 5)" ( (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1 + 10;" return (binary_expression "param_1 + 10" identifier + number_literal) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT < IDENT)) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))))) ;) (return_statement return IDENT ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (subscript_expression IDENT [ LIT ])) >> LIT) )) * LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = 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 ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (return_statement return (binary_expression IDENT + LIT) ;) })))
(function_definition "undefined4 *\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}" (type_identifier "undefined4") (pointer_declarator "*\nFUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" (* "*") (function_declarator "FUN_00136af8(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" (identifier "FUN_00136af8") (parameter_list "(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,\n            byte param_5)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) (, ",") (parameter_declaration "byte param_5" (type_identifier "byte") (identifier "param_5")) () ")")))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 *puVar3;\n  int iVar4;\n  undefined4 uVar5;\n  undefined4 uVar6;\n  undefined4 uVar7;\n  double *pdVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  uint uVar11;\n  double dVar12;\n  double dVar13;\n  \n  uVar11 = (uint)param_5;\n  cVar1 = *(char *)((int)param_1 + 5);\n  dVar13 = (double)CONCAT44(param_3,param_4);\n  iVar4 = param_1[uVar11 + 0x15] + 1;\n  if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }\n  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);\n  if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }\n  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;\n  if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }\n  uVar9 = param_1[0xb];\n  uVar7 = param_1[0xc];\n  uVar6 = param_1[0xd];\n  uVar5 = param_1[0xe];\n  uVar2 = param_1[0xf];\n  param_1[0x10] = 0;\n  *puVar3 = uVar10;\n  puVar3[1] = uVar9;\n  puVar3[2] = uVar7;\n  puVar3[3] = uVar6;\n  puVar3[4] = uVar5;\n  puVar3[5] = uVar2;\nLAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;\n  *(byte *)(param_1 + 0xe) = param_5;\n  *(undefined1 *)((int)param_1 + 5) = 1;\n  return param_1 + 10;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "double *pdVar8;" (primitive_type "double") (pointer_declarator "*pdVar8" (* "*") (identifier "pdVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "double dVar12;" (primitive_type "double") (identifier "dVar12") (; ";")) (declaration "double dVar13;" (primitive_type "double") (identifier "dVar13") (; ";")) (expression_statement "uVar11 = (uint)param_5;" (assignment_expression "uVar11 = (uint)param_5" (identifier "uVar11") (= "=") (cast_expression "(uint)param_5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_5"))) (; ";")) (expression_statement "cVar1 = *(char *)((int)param_1 + 5);" (assignment_expression "cVar1 = *(char *)((int)param_1 + 5)" (identifier "cVar1") (= "=") (pointer_expression "*(char *)((int)param_1 + 5)" (* "*") (cast_expression "(char *)((int)param_1 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 5)" (( "(") (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "5")) () ")"))))) (; ";")) (expression_statement "dVar13 = (double)CONCAT44(param_3,param_4);" (assignment_expression "dVar13 = (double)CONCAT44(param_3,param_4)" (identifier "dVar13") (= "=") (cast_expression "(double)CONCAT44(param_3,param_4)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(param_3,param_4)" (identifier "CONCAT44") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")"))))) (; ";")) (expression_statement "iVar4 = param_1[uVar11 + 0x15] + 1;" (assignment_expression "iVar4 = param_1[uVar11 + 0x15] + 1" (identifier "iVar4") (= "=") (binary_expression "param_1[uVar11 + 0x15] + 1" (subscript_expression "param_1[uVar11 + 0x15]" (identifier "param_1") ([ "[") (binary_expression "uVar11 + 0x15" (identifier "uVar11") (+ "+") (number_literal "0x15")) (] "]")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar1 == '\0') {\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }\n  else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }\n    pdVar8 = (double *)param_1[8];\n    param_1[uVar11 + 0x15] = iVar4;\n    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;\nLAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }\n    if (cVar1 == '\0') goto LAB_00136bf4;\n  }" ({ "{") (if_statement "if (param_1[6] == 0) {\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }" (if "if") (parenthesized_expression "(param_1[6] == 0)" (( "(") (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_1[uVar11 + 0x15] = iVar4;\n      goto LAB_00136bf4;\n    }" ({ "{") (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" (identifier "param_1") ([ "[") (binary_expression "uVar11 + 0x15" (identifier "uVar11") (+ "+") (number_literal "0x15")) (] "]")) (= "=") (identifier "iVar4")) (; ";")) (goto_statement "goto LAB_00136bf4;" (goto "goto") (statement_identifier "LAB_00136bf4") (; ";")) (} "}"))) (expression_statement "pdVar8 = (double *)param_1[8];" (assignment_expression "pdVar8 = (double *)param_1[8]" (identifier "pdVar8") (= "=") (cast_expression "(double *)param_1[8]" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" (identifier "param_1") ([ "[") (binary_expression "uVar11 + 0x15" (identifier "uVar11") (+ "+") (number_literal "0x15")) (] "]")) (= "=") (identifier "iVar4")) (; ";")) (if_statement "if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;" (if "if") (parenthesized_expression "((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12))" (( "(") (binary_expression "(pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)" (parenthesized_expression "(pdVar8 == (double *)0x0)" (( "(") (binary_expression "pdVar8 == (double *)0x0" (identifier "pdVar8") (== "==") (cast_expression "(double *)0x0" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(dVar12 = *pdVar8, dVar13 < dVar12)" (( "(") (comma_expression "dVar12 = *pdVar8, dVar13 < dVar12" (assignment_expression "dVar12 = *pdVar8" (identifier "dVar12") (= "=") (pointer_expression "*pdVar8" (* "*") (identifier "pdVar8"))) (, ",") (binary_expression "dVar13 < dVar12" (identifier "dVar13") (< "<") (identifier "dVar12"))) () ")"))) () ")")) (goto_statement "goto LAB_00136bf4;" (goto "goto") (statement_identifier "LAB_00136bf4") (; ";"))) (labeled_statement "LAB_00136c28:\n    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" (statement_identifier "LAB_00136c28") (: ":") (if_statement "if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" (if "if") (parenthesized_expression "((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11))" (( "(") (binary_expression "(dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)" (parenthesized_expression "(dVar12 != dVar13)" (( "(") (binary_expression "dVar12 != dVar13" (identifier "dVar12") (!= "!=") (identifier "dVar13")) () ")")) (|| "||") (parenthesized_expression "(*(byte *)(pdVar8 + 2) <= uVar11)" (( "(") (binary_expression "*(byte *)(pdVar8 + 2) <= uVar11" (pointer_expression "*(byte *)(pdVar8 + 2)" (* "*") (cast_expression "(byte *)(pdVar8 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar8 + 2)" (( "(") (binary_expression "pdVar8 + 2" (identifier "pdVar8") (+ "+") (number_literal "2")) () ")")))) (<= "<=") (identifier "uVar11")) () ")"))) () ")")) (compound_statement "{\n      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);\n      return puVar3;\n    }" ({ "{") (expression_statement "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);" (assignment_expression "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00136968(param_1,pdVar8,param_3,param_4)" (identifier "FUN_00136968") (argument_list "(param_1,pdVar8,param_3,param_4)" (( "(") (identifier "param_1") (, ",") (identifier "pdVar8") (, ",") (identifier "param_3") (, ",") (identifier "param_4") () ")"))))) (; ";")) (return_statement "return puVar3;" (return "return") (identifier "puVar3") (; ";")) (} "}")))) (if_statement "if (cVar1 == '\0') goto LAB_00136bf4;" (if "if") (parenthesized_expression "(cVar1 == '\0')" (( "(") (binary_expression "cVar1 == '\0'" (identifier "cVar1") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00136bf4;" (goto "goto") (statement_identifier "LAB_00136bf4") (; ";"))) (} "}")) (else_clause "else {\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" (else "else") (compound_statement "{\n    param_1[uVar11 + 0x15] = iVar4;\n    dVar12 = *(double *)(param_1 + 10);\n    pdVar8 = (double *)(param_1 + 10);\n    if (dVar12 <= dVar13) goto LAB_00136c28;\n  }" ({ "{") (expression_statement "param_1[uVar11 + 0x15] = iVar4;" (assignment_expression "param_1[uVar11 + 0x15] = iVar4" (subscript_expression "param_1[uVar11 + 0x15]" (identifier "param_1") ([ "[") (binary_expression "uVar11 + 0x15" (identifier "uVar11") (+ "+") (number_literal "0x15")) (] "]")) (= "=") (identifier "iVar4")) (; ";")) (expression_statement "dVar12 = *(double *)(param_1 + 10);" (assignment_expression "dVar12 = *(double *)(param_1 + 10)" (identifier "dVar12") (= "=") (pointer_expression "*(double *)(param_1 + 10)" (* "*") (cast_expression "(double *)(param_1 + 10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (expression_statement "pdVar8 = (double *)(param_1 + 10);" (assignment_expression "pdVar8 = (double *)(param_1 + 10)" (identifier "pdVar8") (= "=") (cast_expression "(double *)(param_1 + 10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (; ";")) (if_statement "if (dVar12 <= dVar13) goto LAB_00136c28;" (if "if") (parenthesized_expression "(dVar12 <= dVar13)" (( "(") (binary_expression "dVar12 <= dVar13" (identifier "dVar12") (<= "<=") (identifier "dVar13")) () ")")) (goto_statement "goto LAB_00136c28;" (goto "goto") (statement_identifier "LAB_00136c28") (; ";"))) (} "}")))) (expression_statement "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);" (assignment_expression "puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11)" (identifier "FUN_00136968") (argument_list "(param_1,pdVar8,param_3,param_4,uVar11)" (( "(") (identifier "param_1") (, ",") (identifier "pdVar8") (, ",") (identifier "param_3") (, ",") (identifier "param_4") (, ",") (identifier "uVar11") () ")"))))) (; ";")) (if_statement "if (puVar3 == (undefined4 *)0x0) {\n    return (undefined4 *)0x0;\n  }" (if "if") (parenthesized_expression "(puVar3 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar3 == (undefined4 *)0x0" (identifier "puVar3") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return (undefined4 *)0x0;\n  }" ({ "{") (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;" (assignment_expression "iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555" (identifier "iVar4") (= "=") (binary_expression "((int)puVar3 - param_1[8] >> 3) * -0x55555555" (parenthesized_expression "((int)puVar3 - param_1[8] >> 3)" (( "(") (binary_expression "(int)puVar3 - param_1[8] >> 3" (binary_expression "(int)puVar3 - param_1[8]" (cast_expression "(int)puVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar3")) (- "-") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (>> ">>") (number_literal "3")) () ")")) (* "*") (number_literal "-0x55555555"))) (; ";")) (if_statement "if (iVar4 + 1 < 5) {\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }\n  else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" (if "if") (parenthesized_expression "(iVar4 + 1 < 5)" (( "(") (binary_expression "iVar4 + 1 < 5" (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n    param_1[iVar4 + 0x11] = param_1[0x10];\n    uVar10 = param_1[10];\n  }" ({ "{") (expression_statement "param_1[iVar4 + 0x11] = param_1[0x10];" (assignment_expression "param_1[iVar4 + 0x11] = param_1[0x10]" (subscript_expression "param_1[iVar4 + 0x11]" (identifier "param_1") ([ "[") (binary_expression "iVar4 + 0x11" (identifier "iVar4") (+ "+") (number_literal "0x11")) (] "]")) (= "=") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "uVar10 = param_1[10];" (assignment_expression "uVar10 = param_1[10]" (identifier "uVar10") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" (else "else") (compound_statement "{\n    FUN_0012e4bc(*param_1,param_1[0x10]);\n    uVar10 = param_1[10];\n  }" ({ "{") (expression_statement "FUN_0012e4bc(*param_1,param_1[0x10]);" (call_expression "FUN_0012e4bc(*param_1,param_1[0x10])" (identifier "FUN_0012e4bc") (argument_list "(*param_1,param_1[0x10])" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) () ")"))) (; ";")) (expression_statement "uVar10 = param_1[10];" (assignment_expression "uVar10 = param_1[10]" (identifier "uVar10") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (} "}")))) (expression_statement "uVar9 = param_1[0xb];" (assignment_expression "uVar9 = param_1[0xb]" (identifier "uVar9") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "uVar7 = param_1[0xc];" (assignment_expression "uVar7 = param_1[0xc]" (identifier "uVar7") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "uVar6 = param_1[0xd];" (assignment_expression "uVar6 = param_1[0xd]" (identifier "uVar6") (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "uVar5 = param_1[0xe];" (assignment_expression "uVar5 = param_1[0xe]" (identifier "uVar5") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "uVar2 = param_1[0xf];" (assignment_expression "uVar2 = param_1[0xf]" (identifier "uVar2") (= "=") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (expression_statement "param_1[0x10] = 0;" (assignment_expression "param_1[0x10] = 0" (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar3 = uVar10;" (assignment_expression "*puVar3 = uVar10" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "puVar3[1] = uVar9;" (assignment_expression "puVar3[1] = uVar9" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (expression_statement "puVar3[2] = uVar7;" (assignment_expression "puVar3[2] = uVar7" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar7")) (; ";")) (expression_statement "puVar3[3] = uVar6;" (assignment_expression "puVar3[3] = uVar6" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar3[4] = uVar5;" (assignment_expression "puVar3[4] = uVar5" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "puVar3[5] = uVar2;" (assignment_expression "puVar3[5] = uVar2" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (labeled_statement "LAB_00136bf4:\n  *(double *)(param_1 + 10) = dVar13;" (statement_identifier "LAB_00136bf4") (: ":") (expression_statement "*(double *)(param_1 + 10) = dVar13;" (assignment_expression "*(double *)(param_1 + 10) = dVar13" (pointer_expression "*(double *)(param_1 + 10)" (* "*") (cast_expression "(double *)(param_1 + 10)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (= "=") (identifier "dVar13")) (; ";"))) (expression_statement "*(byte *)(param_1 + 0xe) = param_5;" (assignment_expression "*(byte *)(param_1 + 0xe) = param_5" (pointer_expression "*(byte *)(param_1 + 0xe)" (* "*") (cast_expression "(byte *)(param_1 + 0xe)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe)" (( "(") (binary_expression "param_1 + 0xe" (identifier "param_1") (+ "+") (number_literal "0xe")) () ")")))) (= "=") (identifier "param_5")) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 5) = 1;" (assignment_expression "*(undefined1 *)((int)param_1 + 5) = 1" (pointer_expression "*(undefined1 *)((int)param_1 + 5)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 5)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 5)" (( "(") (binary_expression "(int)param_1 + 5" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "5")) () ")")))) (= "=") (number_literal "1")) (; ";")) (return_statement "return param_1 + 10;" (return "return") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (return_statement (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (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))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (return_statement (binary_expression left: (identifier) right: (number_literal))))))

undefined4 *
MASKED(undefined4 *param_1,undefined4 param_2,undefined4 param_3,undefined4 param_4,
            byte param_5)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 *puVar3;
  int iVar4;
  undefined4 uVar5;
  undefined4 uVar6;
  undefined4 uVar7;
  double *pdVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  uint uVar11;
  double dVar12;
  double dVar13;
  
  uVar11 = (uint)param_5;
  cVar1 = *(char *)((int)param_1 + 5);
  dVar13 = (double)CONCAT44(param_3,param_4);
  iVar4 = param_1[uVar11 + 0x15] + 1;
  if (cVar1 == '\0') {
    if (param_1[6] == 0) {
      param_1[uVar11 + 0x15] = iVar4;
      goto LAB_00136bf4;
    }
    pdVar8 = (double *)param_1[8];
    param_1[uVar11 + 0x15] = iVar4;
    if ((pdVar8 == (double *)0x0) || (dVar12 = *pdVar8, dVar13 < dVar12)) goto LAB_00136bf4;
LAB_00136c28:
    if ((dVar12 != dVar13) || (*(byte *)(pdVar8 + 2) <= uVar11)) {
      puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4);
      return puVar3;
    }
    if (cVar1 == '\0') goto LAB_00136bf4;
  }
  else {
    param_1[uVar11 + 0x15] = iVar4;
    dVar12 = *(double *)(param_1 + 10);
    pdVar8 = (double *)(param_1 + 10);
    if (dVar12 <= dVar13) goto LAB_00136c28;
  }
  puVar3 = (undefined4 *)FUN_00136968(param_1,pdVar8,param_3,param_4,uVar11);
  if (puVar3 == (undefined4 *)0x0) {
    return (undefined4 *)0x0;
  }
  iVar4 = ((int)puVar3 - param_1[8] >> 3) * -0x55555555;
  if (iVar4 + 1 < 5) {
    param_1[iVar4 + 0x11] = param_1[0x10];
    uVar10 = param_1[10];
  }
  else {
    FUN_0012e4bc(*param_1,param_1[0x10]);
    uVar10 = param_1[10];
  }
  uVar9 = param_1[0xb];
  uVar7 = param_1[0xc];
  uVar6 = param_1[0xd];
  uVar5 = param_1[0xe];
  uVar2 = param_1[0xf];
  param_1[0x10] = 0;
  *puVar3 = uVar10;
  puVar3[1] = uVar9;
  puVar3[2] = uVar7;
  puVar3[3] = uVar6;
  puVar3[4] = uVar5;
  puVar3[5] = uVar2;
LAB_00136bf4:
  *(double *)(param_1 + 10) = dVar13;
  *(byte *)(param_1 + 0xe) = param_5;
  *(undefined1 *)((int)param_1 + 5) = 1;
  return param_1 + 10;
}

