
void bitset_log_histogram_print(FILE *file,char *name,char *msg,uint n_bins,uint *bins)

{
  uint uVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint *puVar4;
  uint uVar5;
  uint uVar6;
  uint *puVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  double dVar11;
  double dVar12;
  uint uVar14;
  double dVar13;
  double dVar15;
  double dVar16;
  double dVar17;
  double dVar18;
  double dVar19;
  double dVar20;
  undefined4 uVar21;
  
  puVar2 = PTR_DAT_0008d800;
  iVar9 = 0;
  puVar7 = bins + n_bins;
  puVar4 = bins;
  do {
    uVar6 = *puVar4;
    puVar4 = puVar4 + 1;
    iVar9 = iVar9 + uVar6;
  } while (puVar7 != puVar4);
  if (iVar9 != 0) {
    do {
      uVar6 = n_bins - 1;
      if (puVar7[-1] != 0) goto LAB_00059654;
      puVar7 = puVar7 + -1;
      n_bins = uVar6;
    } while (uVar6 != 3);
    uVar6 = 2;
LAB_00059654:
    dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +
             *(double *)(PTR_DAT_0008d800 + -0x4410);
    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11) {
      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);
    }
    iVar10 = (int)dVar11 * 2 + 1;
    (*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg);
    puVar3 = PTR_DAT_0008d800;
    dVar16 = (double)iVar9;
    if (iVar9 < 0) {
      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    uVar6 = *bins;
    dVar12 = (double)(int)uVar6;
    if ((int)uVar6 < 0) {
      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    (*(code *)PTR___fprintf_chk_0008de68)
              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,
               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16);
    uVar6 = bins[1];
    dVar12 = (double)(int)uVar6;
    if ((int)uVar6 < 0) {
      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    dVar17 = *(double *)(puVar3 + -0x4400);
    dVar12 = (dVar12 * dVar17) / dVar16;
    (*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12);
    puVar3 = PTR_DAT_0008d800;
    if (2 < n_bins) {
      puVar4 = bins + 2;
      dVar18 = *(double *)(puVar2 + -0x4418);
      uVar6 = 2;
      dVar19 = *(double *)(puVar2 + -0x4410);
      dVar15 = *(double *)(puVar2 + -0x4408);
      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);
      do {
        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;
        uVar8 = *puVar4;
        if (dVar15 <= dVar13) {
          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;
        }
        else {
          uVar14 = (uint)dVar13;
        }
        uVar1 = uVar6 & 0x1f;
        uVar5 = uVar6 - 1;
        uVar6 = uVar6 + 1;
        dVar13 = (double)(int)uVar8;
        if ((int)uVar8 < 0) {
          dVar13 = dVar13 + dVar20;
        }
        uVar21 = SUB84(dVar12,0);
        dVar12 = (double)CONCAT44(uVar8,uVar21);
        puVar4 = puVar4 + 1;
        (*(code *)PTR___fprintf_chk_0008de68)
                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),
                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);
      } while (n_bins != uVar6);
    }
  }
  return;
}



void FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5
                 )

{
  uint uVar1;
  undefined *puVar2;
  undefined *puVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  uint uVar8;
  int iVar9;
  double dVar10;
  double dVar11;
  uint uVar13;
  double dVar12;
  double dVar14;
  double dVar15;
  double dVar16;
  double dVar17;
  double dVar18;
  double dVar19;
  undefined4 uVar20;
  
  puVar2 = PTR_DAT_0008d800;
  iVar9 = 0;
  piVar7 = param_5 + param_4;
  piVar4 = param_5;
  do {
    iVar6 = *piVar4;
    piVar4 = piVar4 + 1;
    iVar9 = iVar9 + iVar6;
  } while (piVar7 != piVar4);
  if (iVar9 != 0) {
    do {
      uVar8 = param_4 - 1;
      if (piVar7[-1] != 0) goto LAB_00059654;
      piVar7 = piVar7 + -1;
      param_4 = uVar8;
    } while (uVar8 != 3);
    uVar8 = 2;
LAB_00059654:
    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +
             *(double *)(PTR_DAT_0008d800 + -0x4410);
    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {
      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);
    }
    iVar6 = (int)dVar10 * 2 + 1;
    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);
    puVar3 = PTR_DAT_0008d800;
    dVar15 = (double)iVar9;
    if (iVar9 < 0) {
      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    iVar9 = *param_5;
    dVar11 = (double)iVar9;
    if (iVar9 < 0) {
      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    (*(code *)PTR___fprintf_chk_0008de68)
              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,
               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);
    iVar9 = param_5[1];
    dVar11 = (double)iVar9;
    if (iVar9 < 0) {
      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    dVar16 = *(double *)(puVar3 + -0x4400);
    dVar11 = (dVar11 * dVar16) / dVar15;
    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);
    puVar3 = PTR_DAT_0008d800;
    if (2 < param_4) {
      param_5 = param_5 + 2;
      dVar17 = *(double *)(puVar2 + -0x4418);
      uVar8 = 2;
      dVar18 = *(double *)(puVar2 + -0x4410);
      dVar14 = *(double *)(puVar2 + -0x4408);
      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);
      do {
        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;
        iVar9 = *param_5;
        if (dVar14 <= dVar12) {
          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;
        }
        else {
          uVar13 = (uint)dVar12;
        }
        uVar1 = uVar8 & 0x1f;
        uVar5 = uVar8 - 1;
        uVar8 = uVar8 + 1;
        dVar12 = (double)iVar9;
        if (iVar9 < 0) {
          dVar12 = dVar12 + dVar19;
        }
        uVar20 = SUB84(dVar11,0);
        dVar11 = (double)CONCAT44(iVar9,uVar20);
        param_5 = param_5 + 1;
        (*(code *)PTR___fprintf_chk_0008de68)
                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),
                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);
      } while (param_4 != uVar8);
    }
  }
  return;
}


lui gp,0x4
addiu gp,gp,-0x3fcc
addu gp,gp,t9
addiu sp,sp,-0x90
sll t0,a3,0x2
sdc1 f30,0x88(sp)
sw s6,0x50(sp)
sw s4,0x48(sp)
or s4,zero,zero
sw s2,0x40(sp)
or s2,a0,zero
sw s1,0x3c(sp)
or s1,a3,zero
sw gp,0x28(sp)
or a3,a1,zero
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s7,0x54(sp)
sw s5,0x4c(sp)
sw s3,0x44(sp)
sw s0,0x38(sp)
lw s6,0xa0(sp)
sdc1 f28,0x80(sp)
sdc1 f26,0x78(sp)
addu t0,t0,s6
or v0,s6,zero
sdc1 f24,0x70(sp)
sdc1 f22,0x68(sp)
sdc1 f20,0x60(sp)
lw v1,0x0(v0)
addiu v0,v0,0x4
bne t0,v0,0x00059630
_addu s4,s4,v1
beq s4,zero,0x00059848
_li v1,0x3
lw v0,-0x4(t0)
beq v0,zero,0x000598a4
_addiu s0,s1,-0x1
mtc1 s0,f0
lw s3,-0x7df0(gp)
lw s7,-0x7df0(gp)
lw s8,-0x7df0(gp)
ldc1 f6,-0x4418(s3)
ldc1 f4,-0x4410(s7)
ldc1 f2,-0x4408(s8)
cvt.d.W f0,f0
madd.D f0,f4,f0,f6
c.le.D f2,f0
bc1t 0x00059890
_lui v0,0x8000
trunc.w.D f0,f0
mfc1 s0,f0
lw t9,-0x7788(gp)
li a1,0x1
sw a2,0x10(sp)
or a0,s2,zero
lw a2,-0x7df0(gp)
sll s0,s0,0x1
addiu s5,s0,0x1
jalr t9
_addiu a2,a2,-0x4608
mtc1 s4,f0
lw gp,0x28(sp)
bgez s4,0x000596cc
_cvt.d.W f22,f0
lw v0,-0x7fc8(gp)
ldc1 f0,0x3f80(v0)
add.D f22,f22,f0
lw v0,0x0(s6)
mtc1 v0,f0
bgez v0,0x000596e8
_cvt.d.W f0,f0
lw v1,-0x7fc8(gp)
ldc1 f2,0x3f80(v1)
add.D f0,f0,f2
lw v1,-0x7df0(gp)
li a1,0x1
lw s4,-0x7df0(gp)
or a3,s5,zero
lw t9,-0x7788(gp)
or a0,s2,zero
ldc1 f2,-0x4400(v1)
addiu a2,s4,-0x4600
sw v1,0x34(sp)
sw v0,0x14(sp)
sw zero,0x10(sp)
mul.D f0,f0,f2
div.D f0,f0,f22
jalr t9
_sdc1 f0,0x18(sp)
lw v0,0x4(s6)
lw gp,0x28(sp)
lw v1,0x34(sp)
mtc1 v0,f0
bgez v0,0x00059748
_cvt.d.W f0,f0
lw a0,-0x7fc8(gp)
ldc1 f2,0x3f80(a0)
add.D f0,f0,f2
ldc1 f24,-0x4400(v1)
addiu a2,s4,-0x4600
lw t9,-0x7788(gp)
li a1,0x1
sw v0,0x14(sp)
li v0,0x1
or a3,s5,zero
sw v0,0x10(sp)
or a0,s2,zero
mul.D f0,f0,f24
div.D f0,f0,f22
jalr t9
_sdc1 f0,0x18(sp)
sltiu v0,s1,0x3
bne v0,zero,0x00059848
_lw gp,0x28(sp)
lw v0,-0x7fc8(gp)
addiu s6,s6,0x8
ldc1 f26,-0x4418(s3)
li s5,0x2
lw s3,-0x7df0(gp)
lui s4,0x8000
ldc1 f28,-0x4410(s7)
li s7,0x1
ldc1 f20,-0x4408(s8)
b 0x0005981c
_ldc1 f30,0x3f80(v0)
trunc.w.D f0,f0
mfc1 a3,f0
sllv v1,s7,s5
lw t9,-0x7788(gp)
mtc1 t0,f0
addiu v0,s5,-0x1
addiu v1,v1,-0x1
sllv v0,s7,v0
addiu a2,s3,-0x45ec
li a1,0x1
addiu s5,s5,0x1
or a0,s2,zero
subu a3,s0,a3
bgez t0,0x000597f4
_cvt.d.W f0,f0
add.D f0,f0,f30
sw t0,0x18(sp)
addiu s6,s6,0x4
mul.D f0,f0,f24
sw v1,0x14(sp)
sw v0,0x10(sp)
div.D f0,f0,f22
jalr t9
_sdc1 f0,0x20(sp)
beq s1,s5,0x00059848
_lw gp,0x28(sp)
mtc1 s5,f0
cvt.d.W f0,f0
madd.D f0,f28,f0,f26
c.le.D f20,f0
bc1f 0x1,0x000597b4
_lw t0,0x0(s6)
sub.D D f0,f0,f20
trunc.w.D f0,f0
mfc1 a3,f0
b 0x000597bc
_or a3,a3,s4
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
ldc1 f30,0x88(sp)
ldc1 f28,0x80(sp)
ldc1 f26,0x78(sp)
ldc1 f24,0x70(sp)
ldc1 f22,0x68(sp)
ldc1 f20,0x60(sp)
jr ra
_addiu sp,sp,0x90
sub.D D f0,f0,f2
trunc.w.D f0,f0
mfc1 s0,f0
b 0x0005968c
_or s0,s0,v0
or s1,s0,zero
bne s0,v1,0x00059648
_addiu t0,t0,-0x4
b 0x00059654
_li s0,0x2
(translation_unit "void FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "double dVar15;" primitive_type identifier ;) (declaration "double dVar16;" primitive_type identifier ;) (declaration "double dVar17;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "double dVar19;" primitive_type identifier ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_DAT_0008d800;" (assignment_expression "puVar2 = PTR_DAT_0008d800" identifier = identifier) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "piVar7 = param_5 + param_4;" (assignment_expression "piVar7 = param_5 + param_4" identifier = (binary_expression "param_5 + param_4" identifier + identifier)) ;) (expression_statement "piVar4 = param_5;" (assignment_expression "piVar4 = param_5" identifier = identifier) ;) (do_statement "do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);" do (compound_statement "{\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  }" { (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" identifier = (binary_expression "piVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + iVar6;" (assignment_expression "iVar9 = iVar9 + iVar6" identifier = (binary_expression "iVar9 + iVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(piVar7 != piVar4)" ( (binary_expression "piVar7 != piVar4" identifier != identifier) )) ;) (if_statement "if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }" { (do_statement "do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);" do (compound_statement "{\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    }" { (expression_statement "uVar8 = param_4 - 1;" (assignment_expression "uVar8 = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (if_statement "if (piVar7[-1] != 0) goto LAB_00059654;" if (parenthesized_expression "(piVar7[-1] != 0)" ( (binary_expression "piVar7[-1] != 0" (subscript_expression "piVar7[-1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00059654;" goto statement_identifier ;)) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "param_4 = uVar8;" (assignment_expression "param_4 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar8 != 3)" ( (binary_expression "uVar8 != 3" identifier != number_literal) )) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" statement_identifier : (expression_statement "dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" (assignment_expression "dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" identifier = (binary_expression "(double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" (binary_expression "(double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418)" (cast_expression "(double)(int)uVar8" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) * (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4418)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4418)" ( (binary_expression "PTR_DAT_0008d800 + -0x4418" identifier + number_literal) ))))) + (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4410)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4410)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4410)" ( (binary_expression "PTR_DAT_0008d800 + -0x4410" identifier + number_literal) )))))) ;)) (if_statement "if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" if (parenthesized_expression "(*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10)" ( (binary_expression "*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10" (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" ( (binary_expression "PTR_DAT_0008d800 + -0x4408" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" { (expression_statement "dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);" (assignment_expression "dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408)" identifier = (binary_expression "dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408)" identifier - (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" ( (binary_expression "PTR_DAT_0008d800 + -0x4408" identifier + number_literal) )))))) ;) })) (expression_statement "iVar6 = (int)dVar10 * 2 + 1;" (assignment_expression "iVar6 = (int)dVar10 * 2 + 1" identifier = (binary_expression "(int)dVar10 * 2 + 1" (binary_expression "(int)dVar10 * 2" (cast_expression "(int)dVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3)" ( identifier , number_literal , (binary_expression "PTR_DAT_0008d800 + -0x4608" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" identifier = identifier) ;) (expression_statement "dVar15 = (double)iVar9;" (assignment_expression "dVar15 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "iVar9 = *param_5;" (assignment_expression "iVar9 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "dVar11 = (double)iVar9;" (assignment_expression "dVar11 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15)" ( identifier , number_literal , (binary_expression "PTR_DAT_0008d800 + -0x4600" identifier + number_literal) , identifier , number_literal , identifier , (binary_expression "(dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15" (parenthesized_expression "(dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400))" ( (binary_expression "dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)" identifier * (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4400)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4400)" ( (binary_expression "PTR_DAT_0008d800 + -0x4400" identifier + number_literal) ))))) )) / identifier) ))) ;) (expression_statement "iVar9 = param_5[1];" (assignment_expression "iVar9 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "dVar11 = (double)iVar9;" (assignment_expression "dVar11 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "dVar16 = *(double *)(puVar3 + -0x4400);" (assignment_expression "dVar16 = *(double *)(puVar3 + -0x4400)" identifier = (pointer_expression "*(double *)(puVar3 + -0x4400)" * (cast_expression "(double *)(puVar3 + -0x4400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x4400)" ( (binary_expression "puVar3 + -0x4400" identifier + number_literal) ))))) ;) (expression_statement "dVar11 = (dVar11 * dVar16) / dVar15;" (assignment_expression "dVar11 = (dVar11 * dVar16) / dVar15" identifier = (binary_expression "(dVar11 * dVar16) / dVar15" (parenthesized_expression "(dVar11 * dVar16)" ( (binary_expression "dVar11 * dVar16" identifier * identifier) )) / identifier)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11)" ( identifier , number_literal , (binary_expression "puVar3 + -0x4600" identifier + number_literal) , identifier , number_literal , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" identifier = identifier) ;) (if_statement "if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }" if (parenthesized_expression "(2 < param_4)" ( (binary_expression "2 < param_4" number_literal < identifier) )) (compound_statement "{\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }" { (expression_statement "param_5 = param_5 + 2;" (assignment_expression "param_5 = param_5 + 2" identifier = (binary_expression "param_5 + 2" identifier + number_literal)) ;) (expression_statement "dVar17 = *(double *)(puVar2 + -0x4418);" (assignment_expression "dVar17 = *(double *)(puVar2 + -0x4418)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4418)" * (cast_expression "(double *)(puVar2 + -0x4418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4418)" ( (binary_expression "puVar2 + -0x4418" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "dVar18 = *(double *)(puVar2 + -0x4410);" (assignment_expression "dVar18 = *(double *)(puVar2 + -0x4410)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4410)" * (cast_expression "(double *)(puVar2 + -0x4410)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4410)" ( (binary_expression "puVar2 + -0x4410" identifier + number_literal) ))))) ;) (expression_statement "dVar14 = *(double *)(puVar2 + -0x4408);" (assignment_expression "dVar14 = *(double *)(puVar2 + -0x4408)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4408)" * (cast_expression "(double *)(puVar2 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4408)" ( (binary_expression "puVar2 + -0x4408" identifier + number_literal) ))))) ;) (expression_statement "dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) ))))) ;) (do_statement "do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);" do (compound_statement "{\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      }" { (expression_statement "dVar12 = (double)(int)uVar8 * dVar17 + dVar18;" (assignment_expression "dVar12 = (double)(int)uVar8 * dVar17 + dVar18" identifier = (binary_expression "(double)(int)uVar8 * dVar17 + dVar18" (binary_expression "(double)(int)uVar8 * dVar17" (cast_expression "(double)(int)uVar8" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) * identifier) + identifier)) ;) (expression_statement "iVar9 = *param_5;" (assignment_expression "iVar9 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }" if (parenthesized_expression "(dVar14 <= dVar12)" ( (binary_expression "dVar14 <= dVar12" identifier <= identifier) )) (compound_statement "{\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }" { (expression_statement "uVar13 = (int)(dVar12 - dVar14) | 0x80000000;" (assignment_expression "uVar13 = (int)(dVar12 - dVar14) | 0x80000000" identifier = (binary_expression "(int)(dVar12 - dVar14) | 0x80000000" (cast_expression "(int)(dVar12 - dVar14)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(dVar12 - dVar14)" ( (binary_expression "dVar12 - dVar14" identifier - identifier) ))) | number_literal)) ;) }) (else_clause "else {\n          uVar13 = (uint)dVar12;\n        }" else (compound_statement "{\n          uVar13 = (uint)dVar12;\n        }" { (expression_statement "uVar13 = (uint)dVar12;" (assignment_expression "uVar13 = (uint)dVar12" identifier = (cast_expression "(uint)dVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar1 = uVar8 & 0x1f;" (assignment_expression "uVar1 = uVar8 & 0x1f" identifier = (binary_expression "uVar8 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar5 = uVar8 - 1;" (assignment_expression "uVar5 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "dVar12 = (double)iVar9;" (assignment_expression "dVar12 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n          dVar12 = dVar12 + dVar19;\n        }" { (expression_statement "dVar12 = dVar12 + dVar19;" (assignment_expression "dVar12 = dVar12 + dVar19" identifier = (binary_expression "dVar12 + dVar19" identifier + identifier)) ;) })) (expression_statement "uVar20 = SUB84(dVar11,0);" (assignment_expression "uVar20 = SUB84(dVar11,0)" identifier = (call_expression "SUB84(dVar11,0)" identifier (argument_list "(dVar11,0)" ( identifier , number_literal )))) ;) (expression_statement "dVar11 = (double)CONCAT44(iVar9,uVar20);" (assignment_expression "dVar11 = (double)CONCAT44(iVar9,uVar20)" identifier = (cast_expression "(double)CONCAT44(iVar9,uVar20)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(iVar9,uVar20)" identifier (argument_list "(iVar9,uVar20)" ( identifier , identifier ))))) ;) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15)" ( identifier , number_literal , (binary_expression "puVar3 + -0x45ec" identifier + number_literal) , (binary_expression "(int)dVar10 * 2 - uVar13" (binary_expression "(int)dVar10 * 2" (cast_expression "(int)dVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) , (binary_expression "1 << (uVar5 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) ))) , (binary_expression "(1 << uVar1) + -1" (parenthesized_expression "(1 << uVar1)" ( (binary_expression "1 << uVar1" number_literal << identifier) )) + number_literal) , identifier , identifier , (binary_expression "(dVar12 * dVar16) / dVar15" (parenthesized_expression "(dVar12 * dVar16)" ( (binary_expression "dVar12 * dVar16" identifier * identifier) )) / identifier) ))) ;) }) while (parenthesized_expression "(param_4 != uVar8)" ( (binary_expression "param_4 != uVar8" identifier != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void bitset_log_histogram_print(FILE *file,char *name,char *msg,uint n_bins,uint *bins)\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  double dVar11;\n  double dVar12;\n  uint uVar14;\n  double dVar13;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  double dVar20;\n  undefined4 uVar21;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  puVar7 = bins + n_bins;\n  puVar4 = bins;\n  do {\n    uVar6 = *puVar4;\n    puVar4 = puVar4 + 1;\n    iVar9 = iVar9 + uVar6;\n  } while (puVar7 != puVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar6 = n_bins - 1;\n      if (puVar7[-1] != 0) goto LAB_00059654;\n      puVar7 = puVar7 + -1;\n      n_bins = uVar6;\n    } while (uVar6 != 3);\n    uVar6 = 2;\nLAB_00059654:\n    dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11) {\n      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar10 = (int)dVar11 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg);\n    puVar3 = PTR_DAT_0008d800;\n    dVar16 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    uVar6 = *bins;\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16);\n    uVar6 = bins[1];\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar17 = *(double *)(puVar3 + -0x4400);\n    dVar12 = (dVar12 * dVar17) / dVar16;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < n_bins) {\n      puVar4 = bins + 2;\n      dVar18 = *(double *)(puVar2 + -0x4418);\n      uVar6 = 2;\n      dVar19 = *(double *)(puVar2 + -0x4410);\n      dVar15 = *(double *)(puVar2 + -0x4408);\n      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);\n    }\n  }\n  return;\n}\n\n" (function_definition "void bitset_log_histogram_print(FILE *file,char *name,char *msg,uint n_bins,uint *bins)\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  double dVar11;\n  double dVar12;\n  uint uVar14;\n  double dVar13;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  double dVar20;\n  undefined4 uVar21;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  puVar7 = bins + n_bins;\n  puVar4 = bins;\n  do {\n    uVar6 = *puVar4;\n    puVar4 = puVar4 + 1;\n    iVar9 = iVar9 + uVar6;\n  } while (puVar7 != puVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar6 = n_bins - 1;\n      if (puVar7[-1] != 0) goto LAB_00059654;\n      puVar7 = puVar7 + -1;\n      n_bins = uVar6;\n    } while (uVar6 != 3);\n    uVar6 = 2;\nLAB_00059654:\n    dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11) {\n      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar10 = (int)dVar11 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg);\n    puVar3 = PTR_DAT_0008d800;\n    dVar16 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    uVar6 = *bins;\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16);\n    uVar6 = bins[1];\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar17 = *(double *)(puVar3 + -0x4400);\n    dVar12 = (dVar12 * dVar17) / dVar16;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < n_bins) {\n      puVar4 = bins + 2;\n      dVar18 = *(double *)(puVar2 + -0x4418);\n      uVar6 = 2;\n      dVar19 = *(double *)(puVar2 + -0x4410);\n      dVar15 = *(double *)(puVar2 + -0x4408);\n      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "bitset_log_histogram_print(FILE *file,char *name,char *msg,uint n_bins,uint *bins)" identifier (parameter_list "(FILE *file,char *name,char *msg,uint n_bins,uint *bins)" ( (parameter_declaration "FILE *file" type_identifier (pointer_declarator "*file" * identifier)) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "char *msg" primitive_type (pointer_declarator "*msg" * identifier)) , (parameter_declaration "uint n_bins" type_identifier identifier) , (parameter_declaration "uint *bins" type_identifier (pointer_declarator "*bins" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint *puVar4;\n  uint uVar5;\n  uint uVar6;\n  uint *puVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  double dVar11;\n  double dVar12;\n  uint uVar14;\n  double dVar13;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  double dVar20;\n  undefined4 uVar21;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  puVar7 = bins + n_bins;\n  puVar4 = bins;\n  do {\n    uVar6 = *puVar4;\n    puVar4 = puVar4 + 1;\n    iVar9 = iVar9 + uVar6;\n  } while (puVar7 != puVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar6 = n_bins - 1;\n      if (puVar7[-1] != 0) goto LAB_00059654;\n      puVar7 = puVar7 + -1;\n      n_bins = uVar6;\n    } while (uVar6 != 3);\n    uVar6 = 2;\nLAB_00059654:\n    dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11) {\n      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar10 = (int)dVar11 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg);\n    puVar3 = PTR_DAT_0008d800;\n    dVar16 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    uVar6 = *bins;\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16);\n    uVar6 = bins[1];\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar17 = *(double *)(puVar3 + -0x4400);\n    dVar12 = (dVar12 * dVar17) / dVar16;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < n_bins) {\n      puVar4 = bins + 2;\n      dVar18 = *(double *)(puVar2 + -0x4418);\n      uVar6 = 2;\n      dVar19 = *(double *)(puVar2 + -0x4410);\n      dVar15 = *(double *)(puVar2 + -0x4408);\n      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);\n    }\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (declaration "double dVar15;" primitive_type identifier ;) (declaration "double dVar16;" primitive_type identifier ;) (declaration "double dVar17;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "double dVar19;" primitive_type identifier ;) (declaration "double dVar20;" primitive_type identifier ;) (declaration "undefined4 uVar21;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_DAT_0008d800;" (assignment_expression "puVar2 = PTR_DAT_0008d800" identifier = identifier) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "puVar7 = bins + n_bins;" (assignment_expression "puVar7 = bins + n_bins" identifier = (binary_expression "bins + n_bins" identifier + identifier)) ;) (expression_statement "puVar4 = bins;" (assignment_expression "puVar4 = bins" identifier = identifier) ;) (do_statement "do {\n    uVar6 = *puVar4;\n    puVar4 = puVar4 + 1;\n    iVar9 = iVar9 + uVar6;\n  } while (puVar7 != puVar4);" do (compound_statement "{\n    uVar6 = *puVar4;\n    puVar4 = puVar4 + 1;\n    iVar9 = iVar9 + uVar6;\n  }" { (expression_statement "uVar6 = *puVar4;" (assignment_expression "uVar6 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + uVar6;" (assignment_expression "iVar9 = iVar9 + uVar6" identifier = (binary_expression "iVar9 + uVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(puVar7 != puVar4)" ( (binary_expression "puVar7 != puVar4" identifier != identifier) )) ;) (if_statement "if (iVar9 != 0) {\n    do {\n      uVar6 = n_bins - 1;\n      if (puVar7[-1] != 0) goto LAB_00059654;\n      puVar7 = puVar7 + -1;\n      n_bins = uVar6;\n    } while (uVar6 != 3);\n    uVar6 = 2;\nLAB_00059654:\n    dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11) {\n      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar10 = (int)dVar11 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg);\n    puVar3 = PTR_DAT_0008d800;\n    dVar16 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    uVar6 = *bins;\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16);\n    uVar6 = bins[1];\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar17 = *(double *)(puVar3 + -0x4400);\n    dVar12 = (dVar12 * dVar17) / dVar16;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < n_bins) {\n      puVar4 = bins + 2;\n      dVar18 = *(double *)(puVar2 + -0x4418);\n      uVar6 = 2;\n      dVar19 = *(double *)(puVar2 + -0x4410);\n      dVar15 = *(double *)(puVar2 + -0x4408);\n      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);\n    }\n  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar6 = n_bins - 1;\n      if (puVar7[-1] != 0) goto LAB_00059654;\n      puVar7 = puVar7 + -1;\n      n_bins = uVar6;\n    } while (uVar6 != 3);\n    uVar6 = 2;\nLAB_00059654:\n    dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11) {\n      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar10 = (int)dVar11 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg);\n    puVar3 = PTR_DAT_0008d800;\n    dVar16 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    uVar6 = *bins;\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16);\n    uVar6 = bins[1];\n    dVar12 = (double)(int)uVar6;\n    if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar17 = *(double *)(puVar3 + -0x4400);\n    dVar12 = (dVar12 * dVar17) / dVar16;\n    (*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < n_bins) {\n      puVar4 = bins + 2;\n      dVar18 = *(double *)(puVar2 + -0x4418);\n      uVar6 = 2;\n      dVar19 = *(double *)(puVar2 + -0x4410);\n      dVar15 = *(double *)(puVar2 + -0x4408);\n      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);\n    }\n  }" { (do_statement "do {\n      uVar6 = n_bins - 1;\n      if (puVar7[-1] != 0) goto LAB_00059654;\n      puVar7 = puVar7 + -1;\n      n_bins = uVar6;\n    } while (uVar6 != 3);" do (compound_statement "{\n      uVar6 = n_bins - 1;\n      if (puVar7[-1] != 0) goto LAB_00059654;\n      puVar7 = puVar7 + -1;\n      n_bins = uVar6;\n    }" { (expression_statement "uVar6 = n_bins - 1;" (assignment_expression "uVar6 = n_bins - 1" identifier = (binary_expression "n_bins - 1" identifier - number_literal)) ;) (if_statement "if (puVar7[-1] != 0) goto LAB_00059654;" if (parenthesized_expression "(puVar7[-1] != 0)" ( (binary_expression "puVar7[-1] != 0" (subscript_expression "puVar7[-1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00059654;" goto statement_identifier ;)) (expression_statement "puVar7 = puVar7 + -1;" (assignment_expression "puVar7 = puVar7 + -1" identifier = (binary_expression "puVar7 + -1" identifier + number_literal)) ;) (expression_statement "n_bins = uVar6;" (assignment_expression "n_bins = uVar6" identifier = identifier) ;) }) while (parenthesized_expression "(uVar6 != 3)" ( (binary_expression "uVar6 != 3" identifier != number_literal) )) ;) (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00059654:\n    dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" statement_identifier : (expression_statement "dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" (assignment_expression "dVar11 = (double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" identifier = (binary_expression "(double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" (binary_expression "(double)(int)uVar6 * *(double *)(PTR_DAT_0008d800 + -0x4418)" (cast_expression "(double)(int)uVar6" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) * (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4418)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4418)" ( (binary_expression "PTR_DAT_0008d800 + -0x4418" identifier + number_literal) ))))) + (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4410)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4410)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4410)" ( (binary_expression "PTR_DAT_0008d800 + -0x4410" identifier + number_literal) )))))) ;)) (if_statement "if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11) {\n      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" if (parenthesized_expression "(*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11)" ( (binary_expression "*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar11" (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" ( (binary_expression "PTR_DAT_0008d800 + -0x4408" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" { (expression_statement "dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408);" (assignment_expression "dVar11 = dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408)" identifier = (binary_expression "dVar11 - *(double *)(PTR_DAT_0008d800 + -0x4408)" identifier - (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" ( (binary_expression "PTR_DAT_0008d800 + -0x4408" identifier + number_literal) )))))) ;) })) (expression_statement "iVar10 = (int)dVar11 * 2 + 1;" (assignment_expression "iVar10 = (int)dVar11 * 2 + 1" identifier = (binary_expression "(int)dVar11 * 2 + 1" (binary_expression "(int)dVar11 * 2" (cast_expression "(int)dVar11" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(file,1,PTR_DAT_0008d800 + -0x4608,name,msg)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(file,1,PTR_DAT_0008d800 + -0x4608,name,msg)" ( identifier , number_literal , (binary_expression "PTR_DAT_0008d800 + -0x4608" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" identifier = identifier) ;) (expression_statement "dVar16 = (double)iVar9;" (assignment_expression "dVar16 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar16 = dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar16 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "uVar6 = *bins;" (assignment_expression "uVar6 = *bins" identifier = (pointer_expression "*bins" * identifier)) ;) (expression_statement "dVar12 = (double)(int)uVar6;" (assignment_expression "dVar12 = (double)(int)uVar6" identifier = (cast_expression "(double)(int)uVar6" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "((int)uVar6 < 0)" ( (binary_expression "(int)uVar6 < 0" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n              (file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(file,1,PTR_DAT_0008d800 + -0x4600,iVar10,0,uVar6,\n               (dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16)" ( identifier , number_literal , (binary_expression "PTR_DAT_0008d800 + -0x4600" identifier + number_literal) , identifier , number_literal , identifier , (binary_expression "(dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar16" (parenthesized_expression "(dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400))" ( (binary_expression "dVar12 * *(double *)(PTR_DAT_0008d800 + -0x4400)" identifier * (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4400)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4400)" ( (binary_expression "PTR_DAT_0008d800 + -0x4400" identifier + number_literal) ))))) )) / identifier) ))) ;) (expression_statement "uVar6 = bins[1];" (assignment_expression "uVar6 = bins[1]" identifier = (subscript_expression "bins[1]" identifier [ number_literal ])) ;) (expression_statement "dVar12 = (double)(int)uVar6;" (assignment_expression "dVar12 = (double)(int)uVar6" identifier = (cast_expression "(double)(int)uVar6" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar6 < 0) {\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "((int)uVar6 < 0)" ( (binary_expression "(int)uVar6 < 0" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar12 = dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar12 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "dVar17 = *(double *)(puVar3 + -0x4400);" (assignment_expression "dVar17 = *(double *)(puVar3 + -0x4400)" identifier = (pointer_expression "*(double *)(puVar3 + -0x4400)" * (cast_expression "(double *)(puVar3 + -0x4400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x4400)" ( (binary_expression "puVar3 + -0x4400" identifier + number_literal) ))))) ;) (expression_statement "dVar12 = (dVar12 * dVar17) / dVar16;" (assignment_expression "dVar12 = (dVar12 * dVar17) / dVar16" identifier = (binary_expression "(dVar12 * dVar17) / dVar16" (parenthesized_expression "(dVar12 * dVar17)" ( (binary_expression "dVar12 * dVar17" identifier * identifier) )) / identifier)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(file,1,puVar3 + -0x4600,iVar10,1,uVar6,dVar12)" ( identifier , number_literal , (binary_expression "puVar3 + -0x4600" identifier + number_literal) , identifier , number_literal , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" identifier = identifier) ;) (if_statement "if (2 < n_bins) {\n      puVar4 = bins + 2;\n      dVar18 = *(double *)(puVar2 + -0x4418);\n      uVar6 = 2;\n      dVar19 = *(double *)(puVar2 + -0x4410);\n      dVar15 = *(double *)(puVar2 + -0x4408);\n      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);\n    }" if (parenthesized_expression "(2 < n_bins)" ( (binary_expression "2 < n_bins" number_literal < identifier) )) (compound_statement "{\n      puVar4 = bins + 2;\n      dVar18 = *(double *)(puVar2 + -0x4418);\n      uVar6 = 2;\n      dVar19 = *(double *)(puVar2 + -0x4410);\n      dVar15 = *(double *)(puVar2 + -0x4408);\n      dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);\n    }" { (expression_statement "puVar4 = bins + 2;" (assignment_expression "puVar4 = bins + 2" identifier = (binary_expression "bins + 2" identifier + number_literal)) ;) (expression_statement "dVar18 = *(double *)(puVar2 + -0x4418);" (assignment_expression "dVar18 = *(double *)(puVar2 + -0x4418)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4418)" * (cast_expression "(double *)(puVar2 + -0x4418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4418)" ( (binary_expression "puVar2 + -0x4418" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 2;" (assignment_expression "uVar6 = 2" identifier = number_literal) ;) (expression_statement "dVar19 = *(double *)(puVar2 + -0x4410);" (assignment_expression "dVar19 = *(double *)(puVar2 + -0x4410)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4410)" * (cast_expression "(double *)(puVar2 + -0x4410)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4410)" ( (binary_expression "puVar2 + -0x4410" identifier + number_literal) ))))) ;) (expression_statement "dVar15 = *(double *)(puVar2 + -0x4408);" (assignment_expression "dVar15 = *(double *)(puVar2 + -0x4408)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4408)" * (cast_expression "(double *)(puVar2 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4408)" ( (binary_expression "puVar2 + -0x4408" identifier + number_literal) ))))) ;) (expression_statement "dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar20 = *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) ))))) ;) (do_statement "do {\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      } while (n_bins != uVar6);" do (compound_statement "{\n        dVar13 = (double)(int)uVar6 * dVar18 + dVar19;\n        uVar8 = *puVar4;\n        if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }\n        uVar1 = uVar6 & 0x1f;\n        uVar5 = uVar6 - 1;\n        uVar6 = uVar6 + 1;\n        dVar13 = (double)(int)uVar8;\n        if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }\n        uVar21 = SUB84(dVar12,0);\n        dVar12 = (double)CONCAT44(uVar8,uVar21);\n        puVar4 = puVar4 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);\n      }" { (expression_statement "dVar13 = (double)(int)uVar6 * dVar18 + dVar19;" (assignment_expression "dVar13 = (double)(int)uVar6 * dVar18 + dVar19" identifier = (binary_expression "(double)(int)uVar6 * dVar18 + dVar19" (binary_expression "(double)(int)uVar6 * dVar18" (cast_expression "(double)(int)uVar6" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) * identifier) + identifier)) ;) (expression_statement "uVar8 = *puVar4;" (assignment_expression "uVar8 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (dVar15 <= dVar13) {\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }\n        else {\n          uVar14 = (uint)dVar13;\n        }" if (parenthesized_expression "(dVar15 <= dVar13)" ( (binary_expression "dVar15 <= dVar13" identifier <= identifier) )) (compound_statement "{\n          uVar14 = (int)(dVar13 - dVar15) | 0x80000000;\n        }" { (expression_statement "uVar14 = (int)(dVar13 - dVar15) | 0x80000000;" (assignment_expression "uVar14 = (int)(dVar13 - dVar15) | 0x80000000" identifier = (binary_expression "(int)(dVar13 - dVar15) | 0x80000000" (cast_expression "(int)(dVar13 - dVar15)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(dVar13 - dVar15)" ( (binary_expression "dVar13 - dVar15" identifier - identifier) ))) | number_literal)) ;) }) (else_clause "else {\n          uVar14 = (uint)dVar13;\n        }" else (compound_statement "{\n          uVar14 = (uint)dVar13;\n        }" { (expression_statement "uVar14 = (uint)dVar13;" (assignment_expression "uVar14 = (uint)dVar13" identifier = (cast_expression "(uint)dVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar1 = uVar6 & 0x1f;" (assignment_expression "uVar1 = uVar6 & 0x1f" identifier = (binary_expression "uVar6 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar5 = uVar6 - 1;" (assignment_expression "uVar5 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "dVar13 = (double)(int)uVar8;" (assignment_expression "dVar13 = (double)(int)uVar8" identifier = (cast_expression "(double)(int)uVar8" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar8 < 0) {\n          dVar13 = dVar13 + dVar20;\n        }" if (parenthesized_expression "((int)uVar8 < 0)" ( (binary_expression "(int)uVar8 < 0" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar13 = dVar13 + dVar20;\n        }" { (expression_statement "dVar13 = dVar13 + dVar20;" (assignment_expression "dVar13 = dVar13 + dVar20" identifier = (binary_expression "dVar13 + dVar20" identifier + identifier)) ;) })) (expression_statement "uVar21 = SUB84(dVar12,0);" (assignment_expression "uVar21 = SUB84(dVar12,0)" identifier = (call_expression "SUB84(dVar12,0)" identifier (argument_list "(dVar12,0)" ( identifier , number_literal )))) ;) (expression_statement "dVar12 = (double)CONCAT44(uVar8,uVar21);" (assignment_expression "dVar12 = (double)CONCAT44(uVar8,uVar21)" identifier = (cast_expression "(double)CONCAT44(uVar8,uVar21)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(uVar8,uVar21)" identifier (argument_list "(uVar8,uVar21)" ( identifier , identifier ))))) ;) (expression_statement "puVar4 = puVar4 + 1;" (assignment_expression "puVar4 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n                  (file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(file,1,puVar3 + -0x45ec,(int)dVar11 * 2 - uVar14,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,uVar8,uVar21,(dVar13 * dVar17) / dVar16)" ( identifier , number_literal , (binary_expression "puVar3 + -0x45ec" identifier + number_literal) , (binary_expression "(int)dVar11 * 2 - uVar14" (binary_expression "(int)dVar11 * 2" (cast_expression "(int)dVar11" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) , (binary_expression "1 << (uVar5 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) ))) , (binary_expression "(1 << uVar1) + -1" (parenthesized_expression "(1 << uVar1)" ( (binary_expression "1 << uVar1" number_literal << identifier) )) + number_literal) , identifier , identifier , (binary_expression "(dVar13 * dVar17) / dVar16" (parenthesized_expression "(dVar13 * dVar17)" ( (binary_expression "dVar13 * dVar17" identifier * identifier) )) / identifier) ))) ;) }) while (parenthesized_expression "(n_bins != uVar6)" ( (binary_expression "n_bins != uVar6" identifier != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )" identifier (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )" ( (parameter_declaration "undefined4 param_1" type_identifier identifier) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "double dVar10;" primitive_type identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "double dVar12;" primitive_type identifier ;) (declaration "double dVar14;" primitive_type identifier ;) (declaration "double dVar15;" primitive_type identifier ;) (declaration "double dVar16;" primitive_type identifier ;) (declaration "double dVar17;" primitive_type identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (declaration "double dVar19;" primitive_type identifier ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (expression_statement "puVar2 = PTR_DAT_0008d800;" (assignment_expression "puVar2 = PTR_DAT_0008d800" identifier = identifier) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "piVar7 = param_5 + param_4;" (assignment_expression "piVar7 = param_5 + param_4" identifier = (binary_expression "param_5 + param_4" identifier + identifier)) ;) (expression_statement "piVar4 = param_5;" (assignment_expression "piVar4 = param_5" identifier = identifier) ;) (do_statement "do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);" do (compound_statement "{\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  }" { (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" identifier = (pointer_expression "*piVar4" * identifier)) ;) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" identifier = (binary_expression "piVar4 + 1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + iVar6;" (assignment_expression "iVar9 = iVar9 + iVar6" identifier = (binary_expression "iVar9 + iVar6" identifier + identifier)) ;) }) while (parenthesized_expression "(piVar7 != piVar4)" ( (binary_expression "piVar7 != piVar4" identifier != identifier) )) ;) (if_statement "if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }" { (do_statement "do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);" do (compound_statement "{\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    }" { (expression_statement "uVar8 = param_4 - 1;" (assignment_expression "uVar8 = param_4 - 1" identifier = (binary_expression "param_4 - 1" identifier - number_literal)) ;) (if_statement "if (piVar7[-1] != 0) goto LAB_00059654;" if (parenthesized_expression "(piVar7[-1] != 0)" ( (binary_expression "piVar7[-1] != 0" (subscript_expression "piVar7[-1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_00059654;" goto statement_identifier ;)) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" identifier = (binary_expression "piVar7 + -1" identifier + number_literal)) ;) (expression_statement "param_4 = uVar8;" (assignment_expression "param_4 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(uVar8 != 3)" ( (binary_expression "uVar8 != 3" identifier != number_literal) )) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (labeled_statement "LAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" statement_identifier : (expression_statement "dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" (assignment_expression "dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" identifier = (binary_expression "(double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" (binary_expression "(double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418)" (cast_expression "(double)(int)uVar8" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) * (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4418)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4418)" ( (binary_expression "PTR_DAT_0008d800 + -0x4418" identifier + number_literal) ))))) + (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4410)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4410)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4410)" ( (binary_expression "PTR_DAT_0008d800 + -0x4410" identifier + number_literal) )))))) ;)) (if_statement "if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" if (parenthesized_expression "(*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10)" ( (binary_expression "*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10" (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" ( (binary_expression "PTR_DAT_0008d800 + -0x4408" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" { (expression_statement "dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);" (assignment_expression "dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408)" identifier = (binary_expression "dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408)" identifier - (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" ( (binary_expression "PTR_DAT_0008d800 + -0x4408" identifier + number_literal) )))))) ;) })) (expression_statement "iVar6 = (int)dVar10 * 2 + 1;" (assignment_expression "iVar6 = (int)dVar10 * 2 + 1" identifier = (binary_expression "(int)dVar10 * 2 + 1" (binary_expression "(int)dVar10 * 2" (cast_expression "(int)dVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3)" ( identifier , number_literal , (binary_expression "PTR_DAT_0008d800 + -0x4608" identifier + number_literal) , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" identifier = identifier) ;) (expression_statement "dVar15 = (double)iVar9;" (assignment_expression "dVar15 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "iVar9 = *param_5;" (assignment_expression "iVar9 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "dVar11 = (double)iVar9;" (assignment_expression "dVar11 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15)" ( identifier , number_literal , (binary_expression "PTR_DAT_0008d800 + -0x4600" identifier + number_literal) , identifier , number_literal , identifier , (binary_expression "(dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15" (parenthesized_expression "(dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400))" ( (binary_expression "dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)" identifier * (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4400)" * (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0008d800 + -0x4400)" ( (binary_expression "PTR_DAT_0008d800 + -0x4400" identifier + number_literal) ))))) )) / identifier) ))) ;) (expression_statement "iVar9 = param_5[1];" (assignment_expression "iVar9 = param_5[1]" identifier = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "dVar11 = (double)iVar9;" (assignment_expression "dVar11 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" { (expression_statement "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (binary_expression "dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier + (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) )))))) ;) })) (expression_statement "dVar16 = *(double *)(puVar3 + -0x4400);" (assignment_expression "dVar16 = *(double *)(puVar3 + -0x4400)" identifier = (pointer_expression "*(double *)(puVar3 + -0x4400)" * (cast_expression "(double *)(puVar3 + -0x4400)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + -0x4400)" ( (binary_expression "puVar3 + -0x4400" identifier + number_literal) ))))) ;) (expression_statement "dVar11 = (dVar11 * dVar16) / dVar15;" (assignment_expression "dVar11 = (dVar11 * dVar16) / dVar15" identifier = (binary_expression "(dVar11 * dVar16) / dVar15" (parenthesized_expression "(dVar11 * dVar16)" ( (binary_expression "dVar11 * dVar16" identifier * identifier) )) / identifier)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11)" ( identifier , number_literal , (binary_expression "puVar3 + -0x4600" identifier + number_literal) , identifier , number_literal , identifier , identifier ))) ;) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" identifier = identifier) ;) (if_statement "if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }" if (parenthesized_expression "(2 < param_4)" ( (binary_expression "2 < param_4" number_literal < identifier) )) (compound_statement "{\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }" { (expression_statement "param_5 = param_5 + 2;" (assignment_expression "param_5 = param_5 + 2" identifier = (binary_expression "param_5 + 2" identifier + number_literal)) ;) (expression_statement "dVar17 = *(double *)(puVar2 + -0x4418);" (assignment_expression "dVar17 = *(double *)(puVar2 + -0x4418)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4418)" * (cast_expression "(double *)(puVar2 + -0x4418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4418)" ( (binary_expression "puVar2 + -0x4418" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" identifier = number_literal) ;) (expression_statement "dVar18 = *(double *)(puVar2 + -0x4410);" (assignment_expression "dVar18 = *(double *)(puVar2 + -0x4410)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4410)" * (cast_expression "(double *)(puVar2 + -0x4410)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4410)" ( (binary_expression "puVar2 + -0x4410" identifier + number_literal) ))))) ;) (expression_statement "dVar14 = *(double *)(puVar2 + -0x4408);" (assignment_expression "dVar14 = *(double *)(puVar2 + -0x4408)" identifier = (pointer_expression "*(double *)(puVar2 + -0x4408)" * (cast_expression "(double *)(puVar2 + -0x4408)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0x4408)" ( (binary_expression "puVar2 + -0x4408" identifier + number_literal) ))))) ;) (expression_statement "dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80)" identifier = (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" * (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" ( (binary_expression "PTR_LAB_0008d628 + 0x3f80" identifier + number_literal) ))))) ;) (do_statement "do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);" do (compound_statement "{\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      }" { (expression_statement "dVar12 = (double)(int)uVar8 * dVar17 + dVar18;" (assignment_expression "dVar12 = (double)(int)uVar8 * dVar17 + dVar18" identifier = (binary_expression "(double)(int)uVar8 * dVar17 + dVar18" (binary_expression "(double)(int)uVar8 * dVar17" (cast_expression "(double)(int)uVar8" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) * identifier) + identifier)) ;) (expression_statement "iVar9 = *param_5;" (assignment_expression "iVar9 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (if_statement "if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }" if (parenthesized_expression "(dVar14 <= dVar12)" ( (binary_expression "dVar14 <= dVar12" identifier <= identifier) )) (compound_statement "{\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }" { (expression_statement "uVar13 = (int)(dVar12 - dVar14) | 0x80000000;" (assignment_expression "uVar13 = (int)(dVar12 - dVar14) | 0x80000000" identifier = (binary_expression "(int)(dVar12 - dVar14) | 0x80000000" (cast_expression "(int)(dVar12 - dVar14)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(dVar12 - dVar14)" ( (binary_expression "dVar12 - dVar14" identifier - identifier) ))) | number_literal)) ;) }) (else_clause "else {\n          uVar13 = (uint)dVar12;\n        }" else (compound_statement "{\n          uVar13 = (uint)dVar12;\n        }" { (expression_statement "uVar13 = (uint)dVar12;" (assignment_expression "uVar13 = (uint)dVar12" identifier = (cast_expression "(uint)dVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar1 = uVar8 & 0x1f;" (assignment_expression "uVar1 = uVar8 & 0x1f" identifier = (binary_expression "uVar8 & 0x1f" identifier & number_literal)) ;) (expression_statement "uVar5 = uVar8 - 1;" (assignment_expression "uVar5 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "dVar12 = (double)iVar9;" (assignment_expression "dVar12 = (double)iVar9" identifier = (cast_expression "(double)iVar9" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (if_statement "if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }" if (parenthesized_expression "(iVar9 < 0)" ( (binary_expression "iVar9 < 0" identifier < number_literal) )) (compound_statement "{\n          dVar12 = dVar12 + dVar19;\n        }" { (expression_statement "dVar12 = dVar12 + dVar19;" (assignment_expression "dVar12 = dVar12 + dVar19" identifier = (binary_expression "dVar12 + dVar19" identifier + identifier)) ;) })) (expression_statement "uVar20 = SUB84(dVar11,0);" (assignment_expression "uVar20 = SUB84(dVar11,0)" identifier = (call_expression "SUB84(dVar11,0)" identifier (argument_list "(dVar11,0)" ( identifier , number_literal )))) ;) (expression_statement "dVar11 = (double)CONCAT44(iVar9,uVar20);" (assignment_expression "dVar11 = (double)CONCAT44(iVar9,uVar20)" identifier = (cast_expression "(double)CONCAT44(iVar9,uVar20)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(iVar9,uVar20)" identifier (argument_list "(iVar9,uVar20)" ( identifier , identifier ))))) ;) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" identifier = (binary_expression "param_5 + 1" identifier + number_literal)) ;) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" ( (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" * (cast_expression "(code *)PTR___fprintf_chk_0008de68" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15)" ( identifier , number_literal , (binary_expression "puVar3 + -0x45ec" identifier + number_literal) , (binary_expression "(int)dVar10 * 2 - uVar13" (binary_expression "(int)dVar10 * 2" (cast_expression "(int)dVar10" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) , (binary_expression "1 << (uVar5 & 0x1f)" number_literal << (parenthesized_expression "(uVar5 & 0x1f)" ( (binary_expression "uVar5 & 0x1f" identifier & number_literal) ))) , (binary_expression "(1 << uVar1) + -1" (parenthesized_expression "(1 << uVar1)" ( (binary_expression "1 << uVar1" number_literal << identifier) )) + number_literal) , identifier , identifier , (binary_expression "(dVar12 * dVar16) / dVar15" (parenthesized_expression "(dVar12 * dVar16)" ( (binary_expression "dVar12 * dVar16" identifier * identifier) )) / identifier) ))) ;) }) while (parenthesized_expression "(param_4 != uVar8)" ( (binary_expression "param_4 != uVar8" identifier != identifier) )) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT , LIT , IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) / IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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 = LIT) ;) (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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) | LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 IDENT + LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + LIT) , (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) - IDENT) , (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) , (binary_expression (parenthesized_expression ( (binary_expression LIT << IDENT) )) + LIT) , IDENT , IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT * IDENT) )) / IDENT) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )\n\n{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000595bc(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )" (identifier "FUN_000595bc") (parameter_list "(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5\n                 )" (( "(") (parameter_declaration "undefined4 param_1" (type_identifier "undefined4") (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 "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int *piVar4;\n  uint uVar5;\n  int iVar6;\n  int *piVar7;\n  uint uVar8;\n  int iVar9;\n  double dVar10;\n  double dVar11;\n  uint uVar13;\n  double dVar12;\n  double dVar14;\n  double dVar15;\n  double dVar16;\n  double dVar17;\n  double dVar18;\n  double dVar19;\n  undefined4 uVar20;\n  \n  puVar2 = PTR_DAT_0008d800;\n  iVar9 = 0;\n  piVar7 = param_5 + param_4;\n  piVar4 = param_5;\n  do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);\n  if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }\n  return;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "double dVar10;" (primitive_type "double") (identifier "dVar10") (; ";")) (declaration "double dVar11;" (primitive_type "double") (identifier "dVar11") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "double dVar12;" (primitive_type "double") (identifier "dVar12") (; ";")) (declaration "double dVar14;" (primitive_type "double") (identifier "dVar14") (; ";")) (declaration "double dVar15;" (primitive_type "double") (identifier "dVar15") (; ";")) (declaration "double dVar16;" (primitive_type "double") (identifier "dVar16") (; ";")) (declaration "double dVar17;" (primitive_type "double") (identifier "dVar17") (; ";")) (declaration "double dVar18;" (primitive_type "double") (identifier "dVar18") (; ";")) (declaration "double dVar19;" (primitive_type "double") (identifier "dVar19") (; ";")) (declaration "undefined4 uVar20;" (type_identifier "undefined4") (identifier "uVar20") (; ";")) (expression_statement "puVar2 = PTR_DAT_0008d800;" (assignment_expression "puVar2 = PTR_DAT_0008d800" (identifier "puVar2") (= "=") (identifier "PTR_DAT_0008d800")) (; ";")) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" (identifier "iVar9") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar7 = param_5 + param_4;" (assignment_expression "piVar7 = param_5 + param_4" (identifier "piVar7") (= "=") (binary_expression "param_5 + param_4" (identifier "param_5") (+ "+") (identifier "param_4"))) (; ";")) (expression_statement "piVar4 = param_5;" (assignment_expression "piVar4 = param_5" (identifier "piVar4") (= "=") (identifier "param_5")) (; ";")) (do_statement "do {\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  } while (piVar7 != piVar4);" (do "do") (compound_statement "{\n    iVar6 = *piVar4;\n    piVar4 = piVar4 + 1;\n    iVar9 = iVar9 + iVar6;\n  }" ({ "{") (expression_statement "iVar6 = *piVar4;" (assignment_expression "iVar6 = *piVar4" (identifier "iVar6") (= "=") (pointer_expression "*piVar4" (* "*") (identifier "piVar4"))) (; ";")) (expression_statement "piVar4 = piVar4 + 1;" (assignment_expression "piVar4 = piVar4 + 1" (identifier "piVar4") (= "=") (binary_expression "piVar4 + 1" (identifier "piVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar9 = iVar9 + iVar6;" (assignment_expression "iVar9 = iVar9 + iVar6" (identifier "iVar9") (= "=") (binary_expression "iVar9 + iVar6" (identifier "iVar9") (+ "+") (identifier "iVar6"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar7 != piVar4)" (( "(") (binary_expression "piVar7 != piVar4" (identifier "piVar7") (!= "!=") (identifier "piVar4")) () ")")) (; ";")) (if_statement "if (iVar9 != 0) {\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);\n    uVar8 = 2;\nLAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);\n    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }\n    iVar6 = (int)dVar10 * 2 + 1;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);\n    puVar3 = PTR_DAT_0008d800;\n    dVar15 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    iVar9 = *param_5;\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    (*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);\n    iVar9 = param_5[1];\n    dVar11 = (double)iVar9;\n    if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }\n    dVar16 = *(double *)(puVar3 + -0x4400);\n    dVar11 = (dVar11 * dVar16) / dVar15;\n    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);\n    puVar3 = PTR_DAT_0008d800;\n    if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }\n  }" ({ "{") (do_statement "do {\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    } while (uVar8 != 3);" (do "do") (compound_statement "{\n      uVar8 = param_4 - 1;\n      if (piVar7[-1] != 0) goto LAB_00059654;\n      piVar7 = piVar7 + -1;\n      param_4 = uVar8;\n    }" ({ "{") (expression_statement "uVar8 = param_4 - 1;" (assignment_expression "uVar8 = param_4 - 1" (identifier "uVar8") (= "=") (binary_expression "param_4 - 1" (identifier "param_4") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (piVar7[-1] != 0) goto LAB_00059654;" (if "if") (parenthesized_expression "(piVar7[-1] != 0)" (( "(") (binary_expression "piVar7[-1] != 0" (subscript_expression "piVar7[-1]" (identifier "piVar7") ([ "[") (number_literal "-1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00059654;" (goto "goto") (statement_identifier "LAB_00059654") (; ";"))) (expression_statement "piVar7 = piVar7 + -1;" (assignment_expression "piVar7 = piVar7 + -1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + -1" (identifier "piVar7") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "param_4 = uVar8;" (assignment_expression "param_4 = uVar8" (identifier "param_4") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar8 != 3)" (( "(") (binary_expression "uVar8 != 3" (identifier "uVar8") (!= "!=") (number_literal "3")) () ")")) (; ";")) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" (identifier "uVar8") (= "=") (number_literal "2")) (; ";")) (labeled_statement "LAB_00059654:\n    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" (statement_identifier "LAB_00059654") (: ":") (expression_statement "dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410);" (assignment_expression "dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" (identifier "dVar10") (= "=") (binary_expression "(double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +\n             *(double *)(PTR_DAT_0008d800 + -0x4410)" (binary_expression "(double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418)" (cast_expression "(double)(int)uVar8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) (* "*") (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4418)" (* "*") (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4418)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0008d800 + -0x4418)" (( "(") (binary_expression "PTR_DAT_0008d800 + -0x4418" (identifier "PTR_DAT_0008d800") (+ "+") (number_literal "-0x4418")) () ")"))))) (+ "+") (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4410)" (* "*") (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4410)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0008d800 + -0x4410)" (( "(") (binary_expression "PTR_DAT_0008d800 + -0x4410" (identifier "PTR_DAT_0008d800") (+ "+") (number_literal "-0x4410")) () ")")))))) (; ";"))) (if_statement "if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" (if "if") (parenthesized_expression "(*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10)" (( "(") (binary_expression "*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10" (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" (* "*") (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" (( "(") (binary_expression "PTR_DAT_0008d800 + -0x4408" (identifier "PTR_DAT_0008d800") (+ "+") (number_literal "-0x4408")) () ")")))) (<= "<=") (identifier "dVar10")) () ")")) (compound_statement "{\n      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);\n    }" ({ "{") (expression_statement "dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);" (assignment_expression "dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408)" (identifier "dVar10") (= "=") (binary_expression "dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408)" (identifier "dVar10") (- "-") (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4408)" (* "*") (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4408)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0008d800 + -0x4408)" (( "(") (binary_expression "PTR_DAT_0008d800 + -0x4408" (identifier "PTR_DAT_0008d800") (+ "+") (number_literal "-0x4408")) () ")")))))) (; ";")) (} "}"))) (expression_statement "iVar6 = (int)dVar10 * 2 + 1;" (assignment_expression "iVar6 = (int)dVar10 * 2 + 1" (identifier "iVar6") (= "=") (binary_expression "(int)dVar10 * 2 + 1" (binary_expression "(int)dVar10 * 2" (cast_expression "(int)dVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "dVar10")) (* "*") (number_literal "2")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" (( "(") (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" (* "*") (cast_expression "(code *)PTR___fprintf_chk_0008de68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fprintf_chk_0008de68"))) () ")")) (argument_list "(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3)" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (binary_expression "PTR_DAT_0008d800 + -0x4608" (identifier "PTR_DAT_0008d800") (+ "+") (number_literal "-0x4608")) (, ",") (identifier "param_2") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" (identifier "puVar3") (= "=") (identifier "PTR_DAT_0008d800")) (; ";")) (expression_statement "dVar15 = (double)iVar9;" (assignment_expression "dVar15 = (double)iVar9" (identifier "dVar15") (= "=") (cast_expression "(double)iVar9" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar9"))) (; ";")) (if_statement "if (iVar9 < 0) {\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" ({ "{") (expression_statement "dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" (identifier "dVar15") (= "=") (binary_expression "dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" (identifier "dVar15") (+ "+") (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" (* "*") (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" (( "(") (binary_expression "PTR_LAB_0008d628 + 0x3f80" (identifier "PTR_LAB_0008d628") (+ "+") (number_literal "0x3f80")) () ")")))))) (; ";")) (} "}"))) (expression_statement "iVar9 = *param_5;" (assignment_expression "iVar9 = *param_5" (identifier "iVar9") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "dVar11 = (double)iVar9;" (assignment_expression "dVar11 = (double)iVar9" (identifier "dVar11") (= "=") (cast_expression "(double)iVar9" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar9"))) (; ";")) (if_statement "if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" ({ "{") (expression_statement "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" (identifier "dVar11") (= "=") (binary_expression "dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" (identifier "dVar11") (+ "+") (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" (* "*") (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" (( "(") (binary_expression "PTR_LAB_0008d628 + 0x3f80" (identifier "PTR_LAB_0008d628") (+ "+") (number_literal "0x3f80")) () ")")))))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" (( "(") (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" (* "*") (cast_expression "(code *)PTR___fprintf_chk_0008de68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fprintf_chk_0008de68"))) () ")")) (argument_list "(param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,\n               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15)" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (binary_expression "PTR_DAT_0008d800 + -0x4600" (identifier "PTR_DAT_0008d800") (+ "+") (number_literal "-0x4600")) (, ",") (identifier "iVar6") (, ",") (number_literal "0") (, ",") (identifier "iVar9") (, ",") (binary_expression "(dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15" (parenthesized_expression "(dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400))" (( "(") (binary_expression "dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)" (identifier "dVar11") (* "*") (pointer_expression "*(double *)(PTR_DAT_0008d800 + -0x4400)" (* "*") (cast_expression "(double *)(PTR_DAT_0008d800 + -0x4400)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0008d800 + -0x4400)" (( "(") (binary_expression "PTR_DAT_0008d800 + -0x4400" (identifier "PTR_DAT_0008d800") (+ "+") (number_literal "-0x4400")) () ")"))))) () ")")) (/ "/") (identifier "dVar15")) () ")"))) (; ";")) (expression_statement "iVar9 = param_5[1];" (assignment_expression "iVar9 = param_5[1]" (identifier "iVar9") (= "=") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "dVar11 = (double)iVar9;" (assignment_expression "dVar11 = (double)iVar9" (identifier "dVar11") (= "=") (cast_expression "(double)iVar9" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar9"))) (; ";")) (if_statement "if (iVar9 < 0) {\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);\n    }" ({ "{") (expression_statement "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" (identifier "dVar11") (= "=") (binary_expression "dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80)" (identifier "dVar11") (+ "+") (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" (* "*") (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" (( "(") (binary_expression "PTR_LAB_0008d628 + 0x3f80" (identifier "PTR_LAB_0008d628") (+ "+") (number_literal "0x3f80")) () ")")))))) (; ";")) (} "}"))) (expression_statement "dVar16 = *(double *)(puVar3 + -0x4400);" (assignment_expression "dVar16 = *(double *)(puVar3 + -0x4400)" (identifier "dVar16") (= "=") (pointer_expression "*(double *)(puVar3 + -0x4400)" (* "*") (cast_expression "(double *)(puVar3 + -0x4400)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + -0x4400)" (( "(") (binary_expression "puVar3 + -0x4400" (identifier "puVar3") (+ "+") (number_literal "-0x4400")) () ")"))))) (; ";")) (expression_statement "dVar11 = (dVar11 * dVar16) / dVar15;" (assignment_expression "dVar11 = (dVar11 * dVar16) / dVar15" (identifier "dVar11") (= "=") (binary_expression "(dVar11 * dVar16) / dVar15" (parenthesized_expression "(dVar11 * dVar16)" (( "(") (binary_expression "dVar11 * dVar16" (identifier "dVar11") (* "*") (identifier "dVar16")) () ")")) (/ "/") (identifier "dVar15"))) (; ";")) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" (( "(") (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" (* "*") (cast_expression "(code *)PTR___fprintf_chk_0008de68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fprintf_chk_0008de68"))) () ")")) (argument_list "(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11)" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (binary_expression "puVar3 + -0x4600" (identifier "puVar3") (+ "+") (number_literal "-0x4600")) (, ",") (identifier "iVar6") (, ",") (number_literal "1") (, ",") (identifier "iVar9") (, ",") (identifier "dVar11") () ")"))) (; ";")) (expression_statement "puVar3 = PTR_DAT_0008d800;" (assignment_expression "puVar3 = PTR_DAT_0008d800" (identifier "puVar3") (= "=") (identifier "PTR_DAT_0008d800")) (; ";")) (if_statement "if (2 < param_4) {\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }" (if "if") (parenthesized_expression "(2 < param_4)" (( "(") (binary_expression "2 < param_4" (number_literal "2") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n      param_5 = param_5 + 2;\n      dVar17 = *(double *)(puVar2 + -0x4418);\n      uVar8 = 2;\n      dVar18 = *(double *)(puVar2 + -0x4410);\n      dVar14 = *(double *)(puVar2 + -0x4408);\n      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);\n      do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);\n    }" ({ "{") (expression_statement "param_5 = param_5 + 2;" (assignment_expression "param_5 = param_5 + 2" (identifier "param_5") (= "=") (binary_expression "param_5 + 2" (identifier "param_5") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "dVar17 = *(double *)(puVar2 + -0x4418);" (assignment_expression "dVar17 = *(double *)(puVar2 + -0x4418)" (identifier "dVar17") (= "=") (pointer_expression "*(double *)(puVar2 + -0x4418)" (* "*") (cast_expression "(double *)(puVar2 + -0x4418)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x4418)" (( "(") (binary_expression "puVar2 + -0x4418" (identifier "puVar2") (+ "+") (number_literal "-0x4418")) () ")"))))) (; ";")) (expression_statement "uVar8 = 2;" (assignment_expression "uVar8 = 2" (identifier "uVar8") (= "=") (number_literal "2")) (; ";")) (expression_statement "dVar18 = *(double *)(puVar2 + -0x4410);" (assignment_expression "dVar18 = *(double *)(puVar2 + -0x4410)" (identifier "dVar18") (= "=") (pointer_expression "*(double *)(puVar2 + -0x4410)" (* "*") (cast_expression "(double *)(puVar2 + -0x4410)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x4410)" (( "(") (binary_expression "puVar2 + -0x4410" (identifier "puVar2") (+ "+") (number_literal "-0x4410")) () ")"))))) (; ";")) (expression_statement "dVar14 = *(double *)(puVar2 + -0x4408);" (assignment_expression "dVar14 = *(double *)(puVar2 + -0x4408)" (identifier "dVar14") (= "=") (pointer_expression "*(double *)(puVar2 + -0x4408)" (* "*") (cast_expression "(double *)(puVar2 + -0x4408)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0x4408)" (( "(") (binary_expression "puVar2 + -0x4408" (identifier "puVar2") (+ "+") (number_literal "-0x4408")) () ")"))))) (; ";")) (expression_statement "dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);" (assignment_expression "dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80)" (identifier "dVar19") (= "=") (pointer_expression "*(double *)(PTR_LAB_0008d628 + 0x3f80)" (* "*") (cast_expression "(double *)(PTR_LAB_0008d628 + 0x3f80)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0008d628 + 0x3f80)" (( "(") (binary_expression "PTR_LAB_0008d628 + 0x3f80" (identifier "PTR_LAB_0008d628") (+ "+") (number_literal "0x3f80")) () ")"))))) (; ";")) (do_statement "do {\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      } while (param_4 != uVar8);" (do "do") (compound_statement "{\n        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;\n        iVar9 = *param_5;\n        if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }\n        uVar1 = uVar8 & 0x1f;\n        uVar5 = uVar8 - 1;\n        uVar8 = uVar8 + 1;\n        dVar12 = (double)iVar9;\n        if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }\n        uVar20 = SUB84(dVar11,0);\n        dVar11 = (double)CONCAT44(iVar9,uVar20);\n        param_5 = param_5 + 1;\n        (*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);\n      }" ({ "{") (expression_statement "dVar12 = (double)(int)uVar8 * dVar17 + dVar18;" (assignment_expression "dVar12 = (double)(int)uVar8 * dVar17 + dVar18" (identifier "dVar12") (= "=") (binary_expression "(double)(int)uVar8 * dVar17 + dVar18" (binary_expression "(double)(int)uVar8 * dVar17" (cast_expression "(double)(int)uVar8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) (* "*") (identifier "dVar17")) (+ "+") (identifier "dVar18"))) (; ";")) (expression_statement "iVar9 = *param_5;" (assignment_expression "iVar9 = *param_5" (identifier "iVar9") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (if_statement "if (dVar14 <= dVar12) {\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }\n        else {\n          uVar13 = (uint)dVar12;\n        }" (if "if") (parenthesized_expression "(dVar14 <= dVar12)" (( "(") (binary_expression "dVar14 <= dVar12" (identifier "dVar14") (<= "<=") (identifier "dVar12")) () ")")) (compound_statement "{\n          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;\n        }" ({ "{") (expression_statement "uVar13 = (int)(dVar12 - dVar14) | 0x80000000;" (assignment_expression "uVar13 = (int)(dVar12 - dVar14) | 0x80000000" (identifier "uVar13") (= "=") (binary_expression "(int)(dVar12 - dVar14) | 0x80000000" (cast_expression "(int)(dVar12 - dVar14)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(dVar12 - dVar14)" (( "(") (binary_expression "dVar12 - dVar14" (identifier "dVar12") (- "-") (identifier "dVar14")) () ")"))) (| "|") (number_literal "0x80000000"))) (; ";")) (} "}")) (else_clause "else {\n          uVar13 = (uint)dVar12;\n        }" (else "else") (compound_statement "{\n          uVar13 = (uint)dVar12;\n        }" ({ "{") (expression_statement "uVar13 = (uint)dVar12;" (assignment_expression "uVar13 = (uint)dVar12" (identifier "uVar13") (= "=") (cast_expression "(uint)dVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "dVar12"))) (; ";")) (} "}")))) (expression_statement "uVar1 = uVar8 & 0x1f;" (assignment_expression "uVar1 = uVar8 & 0x1f" (identifier "uVar1") (= "=") (binary_expression "uVar8 & 0x1f" (identifier "uVar8") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar5 = uVar8 - 1;" (assignment_expression "uVar5 = uVar8 - 1" (identifier "uVar5") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "dVar12 = (double)iVar9;" (assignment_expression "dVar12 = (double)iVar9" (identifier "dVar12") (= "=") (cast_expression "(double)iVar9" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "iVar9"))) (; ";")) (if_statement "if (iVar9 < 0) {\n          dVar12 = dVar12 + dVar19;\n        }" (if "if") (parenthesized_expression "(iVar9 < 0)" (( "(") (binary_expression "iVar9 < 0" (identifier "iVar9") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          dVar12 = dVar12 + dVar19;\n        }" ({ "{") (expression_statement "dVar12 = dVar12 + dVar19;" (assignment_expression "dVar12 = dVar12 + dVar19" (identifier "dVar12") (= "=") (binary_expression "dVar12 + dVar19" (identifier "dVar12") (+ "+") (identifier "dVar19"))) (; ";")) (} "}"))) (expression_statement "uVar20 = SUB84(dVar11,0);" (assignment_expression "uVar20 = SUB84(dVar11,0)" (identifier "uVar20") (= "=") (call_expression "SUB84(dVar11,0)" (identifier "SUB84") (argument_list "(dVar11,0)" (( "(") (identifier "dVar11") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "dVar11 = (double)CONCAT44(iVar9,uVar20);" (assignment_expression "dVar11 = (double)CONCAT44(iVar9,uVar20)" (identifier "dVar11") (= "=") (cast_expression "(double)CONCAT44(iVar9,uVar20)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(iVar9,uVar20)" (identifier "CONCAT44") (argument_list "(iVar9,uVar20)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar20") () ")"))))) (; ";")) (expression_statement "param_5 = param_5 + 1;" (assignment_expression "param_5 = param_5 + 1" (identifier "param_5") (= "=") (binary_expression "param_5 + 1" (identifier "param_5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "(*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);" (call_expression "(*(code *)PTR___fprintf_chk_0008de68)\n                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15)" (parenthesized_expression "(*(code *)PTR___fprintf_chk_0008de68)" (( "(") (pointer_expression "*(code *)PTR___fprintf_chk_0008de68" (* "*") (cast_expression "(code *)PTR___fprintf_chk_0008de68" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___fprintf_chk_0008de68"))) () ")")) (argument_list "(param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),\n                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15)" (( "(") (identifier "param_1") (, ",") (number_literal "1") (, ",") (binary_expression "puVar3 + -0x45ec" (identifier "puVar3") (+ "+") (number_literal "-0x45ec")) (, ",") (binary_expression "(int)dVar10 * 2 - uVar13" (binary_expression "(int)dVar10 * 2" (cast_expression "(int)dVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "dVar10")) (* "*") (number_literal "2")) (- "-") (identifier "uVar13")) (, ",") (binary_expression "1 << (uVar5 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar5 & 0x1f)" (( "(") (binary_expression "uVar5 & 0x1f" (identifier "uVar5") (& "&") (number_literal "0x1f")) () ")"))) (, ",") (binary_expression "(1 << uVar1) + -1" (parenthesized_expression "(1 << uVar1)" (( "(") (binary_expression "1 << uVar1" (number_literal "1") (<< "<<") (identifier "uVar1")) () ")")) (+ "+") (number_literal "-1")) (, ",") (identifier "iVar9") (, ",") (identifier "uVar20") (, ",") (binary_expression "(dVar12 * dVar16) / dVar15" (parenthesized_expression "(dVar12 * dVar16)" (( "(") (binary_expression "dVar12 * dVar16" (identifier "dVar12") (* "*") (identifier "dVar16")) () ")")) (/ "/") (identifier "dVar15")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_4 != uVar8)" (( "(") (binary_expression "param_4 != uVar8" (identifier "param_4") (!= "!=") (identifier "uVar8")) () ")")) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *file,char *name,char *msg,type_2 var_2,type_2 *var_1)

{
  type_2 var_24;
  type_3 *var_14;
  type_3 *var_12;
  type_2 *var_3;
  type_2 var_23;
  type_2 var_5;
  type_2 *var_6;
  type_2 uVar8;
  int var_4;
  int iVar10;
  double var_8;
  double var_11;
  type_2 var_22;
  double var_18;
  double var_17;
  double var_9;
  double var_13;
  double var_15;
  double var_16;
  double var_19;
  type_4 uVar21;
  
  var_14 = var_7;
  var_4 = 0;
  var_6 = var_1 + var_2;
  var_3 = var_1;
  do {
    var_5 = *var_3;
    var_3 = var_3 + 1;
    var_4 = var_4 + var_5;
  } while (var_6 != var_3);
  if (var_4 != 0) {
    do {
      var_5 = var_2 - 1;
      if (var_6[-1] != 0) goto LAB_00059654;
      var_6 = var_6 + -1;
      var_2 = var_5;
    } while (var_5 != 3);
    var_5 = 2;
LAB_00059654:
    var_8 = (double)(int)var_5 * *(double *)(var_7 + -0x4418) +
             *(double *)(var_7 + -0x4410);
    if (*(double *)(var_7 + -0x4408) <= var_8) {
      var_8 = var_8 - *(double *)(var_7 + -0x4408);
    }
    iVar10 = (int)var_8 * 2 + 1;
    (*(type_5 *)PTR___fprintf_chk_0008de68)(file,1,var_7 + -0x4608,name,msg);
    var_12 = var_7;
    var_9 = (double)var_4;
    if (var_4 < 0) {
      var_9 = var_9 + *(double *)(var_10 + 0x3f80);
    }
    var_5 = *var_1;
    var_11 = (double)(int)var_5;
    if ((int)var_5 < 0) {
      var_11 = var_11 + *(double *)(var_10 + 0x3f80);
    }
    (*(type_5 *)PTR___fprintf_chk_0008de68)
              (file,1,var_7 + -0x4600,iVar10,0,var_5,
               (var_11 * *(double *)(var_7 + -0x4400)) / var_9);
    var_5 = var_1[1];
    var_11 = (double)(int)var_5;
    if ((int)var_5 < 0) {
      var_11 = var_11 + *(double *)(var_10 + 0x3f80);
    }
    var_13 = *(double *)(var_12 + -0x4400);
    var_11 = (var_11 * var_13) / var_9;
    (*(type_5 *)PTR___fprintf_chk_0008de68)(file,1,var_12 + -0x4600,iVar10,1,var_5,var_11);
    var_12 = var_7;
    if (2 < var_2) {
      var_3 = var_1 + 2;
      var_15 = *(double *)(var_14 + -0x4418);
      var_5 = 2;
      var_16 = *(double *)(var_14 + -0x4410);
      var_17 = *(double *)(var_14 + -0x4408);
      var_19 = *(double *)(var_10 + 0x3f80);
      do {
        var_18 = (double)(int)var_5 * var_15 + var_16;
        uVar8 = *var_3;
        if (var_17 <= var_18) {
          var_22 = (int)(var_18 - var_17) | 0x80000000;
        }
        else {
          var_22 = (type_2)var_18;
        }
        var_24 = var_5 & 0x1f;
        var_23 = var_5 - 1;
        var_5 = var_5 + 1;
        var_18 = (double)(int)uVar8;
        if ((int)uVar8 < 0) {
          var_18 = var_18 + var_19;
        }
        uVar21 = var_20(var_11,0);
        var_11 = (double)var_21(uVar8,uVar21);
        var_3 = var_3 + 1;
        (*(type_5 *)PTR___fprintf_chk_0008de68)
                  (file,1,var_12 + -0x45ec,(int)var_8 * 2 - var_22,1 << (var_23 & 0x1f),
                   (1 << var_24) + -1,uVar8,uVar21,(var_18 * var_13) / var_9);
      } while (var_2 != var_5);
    }
  }
  return;
}


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

void MASKED(undefined4 param_1,undefined4 param_2,undefined4 param_3,uint param_4,int *param_5
                 )

{
  uint uVar1;
  undefined *puVar2;
  undefined *puVar3;
  int *piVar4;
  uint uVar5;
  int iVar6;
  int *piVar7;
  uint uVar8;
  int iVar9;
  double dVar10;
  double dVar11;
  uint uVar13;
  double dVar12;
  double dVar14;
  double dVar15;
  double dVar16;
  double dVar17;
  double dVar18;
  double dVar19;
  undefined4 uVar20;
  
  puVar2 = PTR_DAT_0008d800;
  iVar9 = 0;
  piVar7 = param_5 + param_4;
  piVar4 = param_5;
  do {
    iVar6 = *piVar4;
    piVar4 = piVar4 + 1;
    iVar9 = iVar9 + iVar6;
  } while (piVar7 != piVar4);
  if (iVar9 != 0) {
    do {
      uVar8 = param_4 - 1;
      if (piVar7[-1] != 0) goto LAB_00059654;
      piVar7 = piVar7 + -1;
      param_4 = uVar8;
    } while (uVar8 != 3);
    uVar8 = 2;
LAB_00059654:
    dVar10 = (double)(int)uVar8 * *(double *)(PTR_DAT_0008d800 + -0x4418) +
             *(double *)(PTR_DAT_0008d800 + -0x4410);
    if (*(double *)(PTR_DAT_0008d800 + -0x4408) <= dVar10) {
      dVar10 = dVar10 - *(double *)(PTR_DAT_0008d800 + -0x4408);
    }
    iVar6 = (int)dVar10 * 2 + 1;
    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,PTR_DAT_0008d800 + -0x4608,param_2,param_3);
    puVar3 = PTR_DAT_0008d800;
    dVar15 = (double)iVar9;
    if (iVar9 < 0) {
      dVar15 = dVar15 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    iVar9 = *param_5;
    dVar11 = (double)iVar9;
    if (iVar9 < 0) {
      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    (*(code *)PTR___fprintf_chk_0008de68)
              (param_1,1,PTR_DAT_0008d800 + -0x4600,iVar6,0,iVar9,
               (dVar11 * *(double *)(PTR_DAT_0008d800 + -0x4400)) / dVar15);
    iVar9 = param_5[1];
    dVar11 = (double)iVar9;
    if (iVar9 < 0) {
      dVar11 = dVar11 + *(double *)(PTR_LAB_0008d628 + 0x3f80);
    }
    dVar16 = *(double *)(puVar3 + -0x4400);
    dVar11 = (dVar11 * dVar16) / dVar15;
    (*(code *)PTR___fprintf_chk_0008de68)(param_1,1,puVar3 + -0x4600,iVar6,1,iVar9,dVar11);
    puVar3 = PTR_DAT_0008d800;
    if (2 < param_4) {
      param_5 = param_5 + 2;
      dVar17 = *(double *)(puVar2 + -0x4418);
      uVar8 = 2;
      dVar18 = *(double *)(puVar2 + -0x4410);
      dVar14 = *(double *)(puVar2 + -0x4408);
      dVar19 = *(double *)(PTR_LAB_0008d628 + 0x3f80);
      do {
        dVar12 = (double)(int)uVar8 * dVar17 + dVar18;
        iVar9 = *param_5;
        if (dVar14 <= dVar12) {
          uVar13 = (int)(dVar12 - dVar14) | 0x80000000;
        }
        else {
          uVar13 = (uint)dVar12;
        }
        uVar1 = uVar8 & 0x1f;
        uVar5 = uVar8 - 1;
        uVar8 = uVar8 + 1;
        dVar12 = (double)iVar9;
        if (iVar9 < 0) {
          dVar12 = dVar12 + dVar19;
        }
        uVar20 = SUB84(dVar11,0);
        dVar11 = (double)CONCAT44(iVar9,uVar20);
        param_5 = param_5 + 1;
        (*(code *)PTR___fprintf_chk_0008de68)
                  (param_1,1,puVar3 + -0x45ec,(int)dVar10 * 2 - uVar13,1 << (uVar5 & 0x1f),
                   (1 << uVar1) + -1,iVar9,uVar20,(dVar12 * dVar16) / dVar15);
      } while (param_4 != uVar8);
    }
  }
  return;
}

