
/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */

void ImportBGRAQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,
                      Quantum *q)

{
  byte bVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  PixelChannelMap *pPVar5;
  int iVar6;
  int iVar7;
  PixelTrait PVar8;
  size_t sVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  size_t sVar13;
  ssize_t i;
  uint uVar14;
  float *pfVar15;
  Quantum *pQVar16;
  uint uVar17;
  byte *pbVar18;
  int iVar19;
  uint uVar20;
  int iVar21;
  float *pfVar22;
  double dVar23;
  double dVar24;
  float fVar26;
  double dVar25;
  double dVar27;
  double dVar28;
  double dVar29;
  double dVar30;
  double dVar31;
  ulonglong uVar32;
  double dVar33;
  double dVar34;
  double dVar35;
  double dVar36;
  float pixel;
  uchar quantum [4];
  
  puVar3 = PTR___stack_chk_guard_003a9230;
  puVar2 = PTR_LAB_003a88e0;
  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;
  if (image != (Image *)0x0) {
    if (image->signature != 0xabacadab) {
      (*(code *)PTR___assert_fail_003a9608)
                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,
                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);
      return;
    }
    uVar20 = quantum_info->depth;
    if (uVar20 - 8 < 0x39) {
                    /* WARNING: Could not emulate address calculation at 0x00179d24 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();
      return;
    }
    iVar19 = 0;
    if (uVar20 == 0) {
      uVar17 = 0;
    }
    else {
      uVar17 = 0;
      if (uVar20 < 0x41) {
        uVar17 = uVar20;
      }
      uVar17 = uVar17 - 1;
      uVar11 = 2 << (uVar17 & 0x1f);
      uVar10 = uVar11;
      uVar14 = 1 >> (~uVar17 & 0x1f);
      if ((uVar17 & 0x20) != 0) {
        uVar10 = 0;
        uVar14 = uVar11;
      }
      uVar17 = uVar10 - 1;
      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);
    }
    if (0 < (int)q) {
      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);
      pPVar5 = image->channel_map;
      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);
      sVar9 = image->number_channels;
      pQVar16 = (Quantum *)0x0;
      iVar6 = pPVar5[2].offset;
      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);
      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);
      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);
      iVar7 = pPVar5->offset;
      iVar12 = pPVar5[1].offset;
      PVar8 = pPVar5[4].traits;
      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);
      dVar30 = dVar29;
      dVar25 = dVar31;
      dVar34 = dVar33;
      dVar36 = dVar35;
      do {
        pbVar18 = (byte *)(number_pixels >> 0x20);
        iVar21 = (int)number_pixels;
        pfVar22 = (float *)(iVar21 + iVar6 * 4);
        pfVar15 = (float *)(iVar21 + iVar12 * 4);
        if ((int)uVar20 < 1) {
          dVar28 = 0.0;
          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);
          if (dVar34 <= dVar24) {
LAB_0017ae10:
            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);
            if (0 < (int)uVar20) goto LAB_0017a270;
          }
          else {
            *pfVar22 = 0.0;
          }
          pfVar22 = (float *)(iVar21 + iVar7 * 4);
          dVar28 = 0.0;
LAB_0017acf8:
          dVar27 = dVar31;
          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {
            dVar27 = dVar29 / dVar24;
          }
          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));
          if (0 < (int)uVar20) goto LAB_0017a32c;
          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {
            dVar28 = 0.0;
            goto LAB_0017ad4c;
          }
          *pfVar22 = 0.0;
          dVar28 = 0.0;
LAB_0017ac38:
          dVar27 = dVar25;
          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {
LAB_0017ad74:
            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;
          }
          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));
        }
        else {
          sVar13 = (quantum_info->state).bits;
          uVar10 = 0;
          uVar14 = uVar20;
          do {
            while (sVar13 == 0) {
              bVar1 = *pbVar18;
              pbVar18 = pbVar18 + 1;
              (quantum_info->state).pixel = (uint)bVar1;
              uVar11 = 8;
              if (uVar14 < 9) {
                uVar11 = uVar14;
              }
              sVar13 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |
                       uVar10 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a254;
            }
            uVar11 = sVar13;
            if (uVar14 <= sVar13) {
              uVar11 = uVar14;
            }
            sVar13 = sVar13 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |
                     uVar10 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a254:
          (quantum_info->state).bits = sVar13;
          if ((iVar19 == 0) && (uVar17 < uVar10)) {
            *pfVar22 = *(float *)(puVar2 + 0x1a50);
          }
          else {
            dVar28 = (double)(int)uVar10;
            if ((int)uVar10 < 0) {
              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);
            }
            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);
            if (dVar33 <= dVar24) goto LAB_0017ae10;
            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))
            ;
          }
LAB_0017a270:
          sVar13 = (quantum_info->state).bits;
          uVar10 = 0;
          uVar14 = uVar20;
          do {
            while (sVar13 == 0) {
              bVar1 = *pbVar18;
              pbVar18 = pbVar18 + 1;
              (quantum_info->state).pixel = (uint)bVar1;
              uVar11 = 8;
              if (uVar14 < 9) {
                uVar11 = uVar14;
              }
              sVar13 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |
                       uVar10 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a304;
            }
            uVar11 = sVar13;
            if (uVar14 <= sVar13) {
              uVar11 = uVar14;
            }
            sVar13 = sVar13 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |
                     uVar10 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a304:
          (quantum_info->state).bits = sVar13;
          pfVar22 = (float *)(iVar21 + iVar7 * 4);
          if ((iVar19 != 0) || (uVar10 <= uVar17)) {
            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);
            dVar28 = (double)(int)uVar10;
            if ((int)uVar10 < 0) {
              dVar28 = dVar28 + dVar35;
            }
            goto LAB_0017acf8;
          }
          *pfVar15 = *(float *)(puVar2 + 0x1a50);
LAB_0017a32c:
          sVar13 = (quantum_info->state).bits;
          uVar10 = 0;
          uVar14 = uVar20;
          do {
            while (sVar13 == 0) {
              bVar1 = *pbVar18;
              uVar11 = uVar14;
              if (7 < uVar14) {
                uVar11 = 8;
              }
              pbVar18 = pbVar18 + 1;
              (quantum_info->state).pixel = (uint)bVar1;
              sVar13 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |
                       uVar10 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a3c0;
            }
            uVar11 = uVar14;
            if (sVar13 <= uVar14) {
              uVar11 = sVar13;
            }
            sVar13 = sVar13 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |
                     uVar10 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a3c0:
          (quantum_info->state).bits = sVar13;
          if ((iVar19 != 0) || (uVar10 <= uVar17)) {
            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);
            dVar28 = (double)(int)uVar10;
            if ((int)uVar10 < 0) {
              dVar28 = dVar28 + dVar35;
            }
            if (dVar24 < dVar33) {
              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);
              if ((int)uVar20 < 1) {
                dVar28 = 0.0;
                goto LAB_0017ac38;
              }
              goto LAB_0017a3dc;
            }
LAB_0017ad4c:
            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));
            if (0 < (int)uVar20) goto LAB_0017a3dc;
            dVar28 = 0.0;
            dVar27 = dVar25;
            goto LAB_0017ad74;
          }
          *pfVar22 = *(float *)(puVar2 + 0x1a50);
LAB_0017a3dc:
          sVar13 = (quantum_info->state).bits;
          uVar10 = 0;
          uVar14 = uVar20;
          do {
            while (sVar13 == 0) {
              bVar1 = *pbVar18;
              uVar11 = uVar14;
              if (7 < uVar14) {
                uVar11 = 8;
              }
              pbVar18 = pbVar18 + 1;
              (quantum_info->state).pixel = (uint)bVar1;
              sVar13 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |
                       uVar10 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a470;
            }
            uVar11 = uVar14;
            if (sVar13 <= uVar14) {
              uVar11 = sVar13;
            }
            sVar13 = sVar13 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |
                     uVar10 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a470:
          (quantum_info->state).bits = sVar13;
          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {
            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);
            dVar28 = (double)(int)uVar10;
            if ((int)uVar10 < 0) {
              dVar28 = dVar28 + dVar36;
            }
            goto LAB_0017ac38;
          }
        }
        if (PVar8 != UndefinedPixelTrait) {
          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;
        }
        pQVar16 = (Quantum *)((int)pQVar16 + 1);
        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);
        dVar25 = dVar27;
      } while (pQVar16 != q);
    }
    if (iVar4 == *(int *)puVar3) {
      return;
    }
    (*(code *)PTR___stack_chk_fail_003a9064)();
  }
  (*(code *)PTR___assert_fail_003a9608)
            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,
             PTR_s_courses_003a88ec + -0x69cc);
  return;
}



void FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6
                 )

{
  byte bVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  uint uVar14;
  float *pfVar15;
  int iVar16;
  uint uVar17;
  int iVar18;
  uint uVar19;
  float *pfVar20;
  double dVar21;
  double dVar22;
  float fVar24;
  double dVar23;
  double dVar25;
  double dVar26;
  double dVar27;
  double dVar28;
  double dVar29;
  ulonglong uVar30;
  double dVar31;
  double dVar32;
  double dVar33;
  double dVar34;
  
  puVar3 = PTR___stack_chk_guard_003a9230;
  puVar2 = PTR_LAB_003a88e0;
  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;
  if (param_1 != 0) {
    if (*(int *)(param_1 + 0x336c) != -0x54535255) {
      (*(code *)PTR___assert_fail_003a9608)
                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,
                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);
      return;
    }
    uVar19 = *param_2;
    if (uVar19 - 8 < 0x39) {
                    /* WARNING: Could not emulate address calculation at 0x00179d24 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();
      return;
    }
    iVar18 = 0;
    if (uVar19 == 0) {
      uVar17 = 0;
    }
    else {
      uVar17 = 0;
      if (uVar19 < 0x41) {
        uVar17 = uVar19;
      }
      uVar17 = uVar17 - 1;
      uVar13 = 2 << (uVar17 & 0x1f);
      uVar10 = uVar13;
      uVar14 = 1 >> (~uVar17 & 0x1f);
      if ((uVar17 & 0x20) != 0) {
        uVar10 = 0;
        uVar14 = uVar13;
      }
      uVar17 = uVar10 - 1;
      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);
    }
    if (0 < param_4) {
      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);
      iVar5 = *(int *)(param_1 + 0x2d0);
      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);
      iVar9 = *(int *)(param_1 + 0x2c0);
      iVar16 = 0;
      iVar6 = *(int *)(iVar5 + 0x20);
      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);
      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);
      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);
      iVar7 = *(int *)(iVar5 + 8);
      iVar12 = *(int *)(iVar5 + 0x14);
      iVar8 = *(int *)(iVar5 + 0x34);
      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);
      dVar28 = dVar27;
      dVar23 = dVar29;
      dVar32 = dVar31;
      dVar34 = dVar33;
      do {
        pfVar20 = (float *)(param_6 + iVar6 * 4);
        pfVar15 = (float *)(param_6 + iVar12 * 4);
        if ((int)uVar19 < 1) {
          dVar26 = 0.0;
          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
          if (dVar32 <= dVar22) {
LAB_0017ae10:
            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);
            if (0 < (int)uVar19) goto LAB_0017a270;
          }
          else {
            *pfVar20 = 0.0;
          }
          pfVar20 = (float *)(param_6 + iVar7 * 4);
          dVar26 = 0.0;
LAB_0017acf8:
          dVar25 = dVar29;
          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {
            dVar25 = dVar27 / dVar22;
          }
          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));
          if (0 < (int)uVar19) goto LAB_0017a32c;
          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {
            dVar26 = 0.0;
            goto LAB_0017ad4c;
          }
          *pfVar20 = 0.0;
          dVar26 = 0.0;
LAB_0017ac38:
          dVar25 = dVar23;
          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {
LAB_0017ad74:
            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;
          }
          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));
        }
        else {
          uVar13 = param_2[0x15];
          uVar10 = 0;
          uVar14 = uVar19;
          do {
            while (uVar13 == 0) {
              bVar1 = *param_5;
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar11 = 8;
              if (uVar14 < 9) {
                uVar11 = uVar14;
              }
              uVar13 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |
                       uVar10 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a254;
            }
            uVar11 = uVar13;
            if (uVar14 <= uVar13) {
              uVar11 = uVar14;
            }
            uVar13 = uVar13 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |
                     uVar10 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a254:
          param_2[0x15] = uVar13;
          if ((iVar18 == 0) && (uVar17 < uVar10)) {
            *pfVar20 = *(float *)(puVar2 + 0x1a50);
          }
          else {
            dVar26 = (double)(int)uVar10;
            if ((int)uVar10 < 0) {
              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);
            }
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            if (dVar31 <= dVar22) goto LAB_0017ae10;
            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))
            ;
          }
LAB_0017a270:
          uVar10 = param_2[0x15];
          uVar13 = 0;
          uVar14 = uVar19;
          do {
            while (uVar10 == 0) {
              bVar1 = *param_5;
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar11 = 8;
              if (uVar14 < 9) {
                uVar11 = uVar14;
              }
              uVar10 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |
                       uVar13 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a304;
            }
            uVar11 = uVar10;
            if (uVar14 <= uVar10) {
              uVar11 = uVar14;
            }
            uVar10 = uVar10 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |
                     uVar13 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a304:
          param_2[0x15] = uVar10;
          pfVar20 = (float *)(param_6 + iVar7 * 4);
          if ((iVar18 != 0) || (uVar13 <= uVar17)) {
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            dVar26 = (double)(int)uVar13;
            if ((int)uVar13 < 0) {
              dVar26 = dVar26 + dVar33;
            }
            goto LAB_0017acf8;
          }
          *pfVar15 = *(float *)(puVar2 + 0x1a50);
LAB_0017a32c:
          uVar10 = param_2[0x15];
          uVar13 = 0;
          uVar14 = uVar19;
          do {
            while (uVar10 == 0) {
              bVar1 = *param_5;
              uVar11 = uVar14;
              if (7 < uVar14) {
                uVar11 = 8;
              }
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar10 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |
                       uVar13 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a3c0;
            }
            uVar11 = uVar14;
            if (uVar10 <= uVar14) {
              uVar11 = uVar10;
            }
            uVar10 = uVar10 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |
                     uVar13 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a3c0:
          param_2[0x15] = uVar10;
          if ((iVar18 != 0) || (uVar13 <= uVar17)) {
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            dVar26 = (double)(int)uVar13;
            if ((int)uVar13 < 0) {
              dVar26 = dVar26 + dVar33;
            }
            if (dVar22 < dVar31) {
              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);
              if ((int)uVar19 < 1) {
                dVar26 = 0.0;
                goto LAB_0017ac38;
              }
              goto LAB_0017a3dc;
            }
LAB_0017ad4c:
            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));
            if (0 < (int)uVar19) goto LAB_0017a3dc;
            dVar26 = 0.0;
            dVar25 = dVar23;
            goto LAB_0017ad74;
          }
          *pfVar20 = *(float *)(puVar2 + 0x1a50);
LAB_0017a3dc:
          uVar10 = param_2[0x15];
          uVar13 = 0;
          uVar14 = uVar19;
          do {
            while (uVar10 == 0) {
              bVar1 = *param_5;
              uVar11 = uVar14;
              if (7 < uVar14) {
                uVar11 = 8;
              }
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar10 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |
                       uVar13 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a470;
            }
            uVar11 = uVar14;
            if (uVar10 <= uVar14) {
              uVar11 = uVar10;
            }
            uVar10 = uVar10 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |
                     uVar13 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a470:
          param_2[0x15] = uVar10;
          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            dVar26 = (double)(int)uVar13;
            if ((int)uVar13 < 0) {
              dVar26 = dVar26 + dVar34;
            }
            goto LAB_0017ac38;
          }
        }
        if (iVar8 != 0) {
          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;
        }
        iVar16 = iVar16 + 1;
        param_6 = param_6 + iVar9 * 4;
        dVar23 = dVar25;
      } while (iVar16 != param_4);
    }
    if (iVar4 == *(int *)puVar3) {
      return;
    }
    (*(code *)PTR___stack_chk_fail_003a9064)();
  }
  (*(code *)PTR___assert_fail_003a9608)
            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,
             PTR_s_courses_003a88ec + -0x69cc);
  return;
}


lui gp,0x23
addiu gp,gp,0x6c34
addu gp,gp,t9
lw v0,-0x7680(gp)
addiu sp,sp,-0x110
sdc1 f30,0x108(sp)
sw v0,0x24(sp)
sw gp,0x10(sp)
sw s1,0xbc(sp)
sw s0,0xb8(sp)
sw ra,0xdc(sp)
sw s8,0xd8(sp)
sw s7,0xd4(sp)
sw s6,0xd0(sp)
sw s5,0xcc(sp)
sw s4,0xc8(sp)
sw s3,0xc4(sp)
sw s2,0xc0(sp)
lw v0,0x0(v0)
sdc1 f28,0x100(sp)
lw s0,0x120(sp)
sdc1 f26,0xf8(sp)
lw s1,0x124(sp)
sdc1 f24,0xf0(sp)
sw v0,0xb4(sp)
sdc1 f22,0xe8(sp)
beq a0,zero,0x0017b3b8
_sdc1 f20,0xe0(sp)
or s7,a0,zero
lw a0,0x336c(a0)
lui v0,0xabac
ori v0,v0,0xadab
bne a0,v0,0x0017b3dc
_or s8,a1,zero
lw s5,0x0(a1)
addiu v0,s5,-0x8
sltiu a0,v0,0x39
beq a0,zero,0x0017ac04
_or s3,a3,zero
sll a0,v0,0x2
lw v0,-0x7fc4(gp)
addiu v0,v0,-0x7234
addu v0,v0,a0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
lw a0,0x8(a1)
li v0,0x1
bne a0,v0,0x0017aa48
_nop
blez a3,0x0017a4c0
_lw v0,-0x7fc4(gp)
or a2,zero,zero
lw t3,-0x7fc4(gp)
lw t4,-0x7fc4(gp)
ldc1 f6,-0x6958(v0)
lw v0,-0x7fc4(gp)
lwc1 f12,-0x6960(t3)
lw t2,0x28(a1)
ldc1 f10,-0x6950(v0)
lw a0,0x2d0(s7)
lwc1 f24,-0x695c(t4)
lw t5,0x2c0(s7)
lw a1,0x44(a1)
mov.D f16,f6
ldc1 f4,0x10(s8)
mov.S f26,f12
ldc1 f2,0x20(s8)
mov.D f18,f10
mfc1 t8,f24
mfc1 s7,f6
mfhc1 s6,f6
mfc1 s2,f12
mov.D f20,f10
mfc1 t9,f24
mov.D f14,f6
mov.S f28,f12
mfc1 t7,f6
mfhc1 t6,f6
mfc1 s5,f12
mov.D f8,f6
b 0x00179f10
_mov.D f22,f10
c.lt.D f10,f0
bc1t 0x1,0x0017ae5c
_nop
cvt.s.D f0,f0
lw v0,0x8(a0)
li v1,0x1
lbu t1,0x4(s0)
sll v0,v0,0x2
addu v0,s1,v0
beq a1,v1,0x00179f70
_swc1 f0,0x0(v0)
lbu t0,0x5(s0)
lbu a3,0x6(s0)
lbu v0,0x7(s0)
sb t1,0xb3(sp)
sb t0,0xb2(sp)
sb a3,0xb1(sp)
sb v0,0xb0(sp)
lwc1 f0,0xb0(sp)
cvt.d.S f0,f0
sub.D D f0,f0,f4
mul.D f0,f0,f2
c.lt.D f0,f14
bc1f 0x3,0x00179fb0
_addiu v1,s0,0x8
lw v0,0x14(a0)
sll v0,v0,0x2
addu v0,s1,v0
swc1 f28,0x0(v0)
lbu t1,0x0(v1)
addiu v0,v1,0x4
lbu t0,0x1(v1)
lbu a3,0x2(v1)
lbu v1,0x3(v1)
sb t1,0xb3(sp)
sb t0,0xb2(sp)
sb a3,0xb1(sp)
sb v1,0xb0(sp)
lwc1 f0,0xb0(sp)
cvt.d.S f0,f0
sub.D D f0,f0,f4
mul.D f0,f0,f2
c.lt.D f0,f16
bc1f 0x6,0x0017a020
_nop
lw v1,0x20(a0)
sll v1,v1,0x2
addu v1,s1,v1
swc1 f26,0x0(v1)
lbu t0,0x0(v0)
addiu s0,v0,0x4
lbu a3,0x1(v0)
lbu v1,0x2(v0)
lbu v0,0x3(v0)
sb t0,0xb3(sp)
sb a3,0xb2(sp)
sb v1,0xb1(sp)
sb v0,0xb0(sp)
lwc1 f0,0xb0(sp)
cvt.d.S f0,f0
sub.D D f0,f0,f4
mul.D f0,f0,f2
c.lt.D f0,f8
bc1t 0x0017a088
_nop
c.lt.D f22,f0
bc1t 0x1,0x0017ae6c
_nop
cvt.s.D f0,f0
lw v0,0x34(a0)
beq v0,zero,0x00179f00
_sll v0,t5,0x2
lw v0,0x38(a0)
sll v0,v0,0x2
addu v0,s1,v0
swc1 f0,0x0(v0)
sll v0,t5,0x2
addiu a2,a2,0x1
addu s0,s0,t2
beq a2,s3,0x0017a4c0
_addu s1,s1,v0
li v0,0x1
lbu t1,0x0(s0)
lbu t0,0x1(s0)
lbu a3,0x2(s0)
beq a1,v0,0x0017ae48
_lbu v1,0x3(s0)
sb t1,0xb3(sp)
sb t0,0xb2(sp)
sb a3,0xb1(sp)
sb v1,0xb0(sp)
lwc1 f0,0xb0(sp)
cvt.d.S f0,f0
sub.D D f0,f0,f4
mul.D f0,f0,f2
c.lt.D f0,f6
bc1f 0x00179dcc
_li v1,0x1
mov.S f0,f12
lw v0,0x8(a0)
lbu t1,0x4(s0)
sll v0,v0,0x2
addu v0,s1,v0
bne a1,v1,0x00179df8
_swc1 f0,0x0(v0)
lbu t0,0x5(s0)
mtc1 t7,f30
lbu a3,0x6(s0)
lbu v0,0x7(s0)
sb t1,0xb0(sp)
sb t0,0xb1(sp)
sb a3,0xb2(sp)
sb v0,0xb3(sp)
lwc1 f0,0xb0(sp)
mthc1 t6,f30
cvt.d.S f0,f0
sub.D D f0,f0,f4
mul.D f0,f2,f0
c.lt.D f0,f30
bc1t 0x2,0x0017b400
_addiu v1,s0,0x8
c.lt.D f20,f0
bc1t 0x4,0x0017ae74
_nop
cvt.s.D f0,f0
lw v0,0x14(a0)
li a3,0x1
sll v0,v0,0x2
addu v0,s1,v0
bne a1,a3,0x00179e40
_swc1 f0,0x0(v0)
lbu t1,0x0(v1)
addiu v0,v1,0x4
mtc1 s7,f30
lbu t0,0x1(v1)
lbu a3,0x2(v1)
lbu v1,0x3(v1)
sb t1,0xb0(sp)
sb t0,0xb1(sp)
sb a3,0xb2(sp)
sb v1,0xb3(sp)
lwc1 f0,0xb0(sp)
mthc1 s6,f30
cvt.d.S f0,f0
sub.D D f0,f0,f4
mul.D f0,f0,f2
c.lt.D f0,f30
bc1t 0x5,0x0017b41c
_nop
c.lt.D f18,f0
bc1t 0x7,0x0017ae64
_nop
cvt.s.D f0,f0
lw v1,0x20(a0)
li a3,0x1
sll v1,v1,0x2
addu v1,s1,v1
bne a1,a3,0x00179e90
_swc1 f0,0x0(v1)
lbu t0,0x0(v0)
addiu s0,v0,0x4
lbu a3,0x1(v0)
lbu v1,0x2(v0)
lbu v0,0x3(v0)
sb t0,0xb0(sp)
sb a3,0xb1(sp)
sb v1,0xb2(sp)
sb v0,0xb3(sp)
lwc1 f0,0xb0(sp)
cvt.d.S f0,f0
sub.D D f0,f0,f4
mul.D f0,f0,f2
c.lt.D f0,f8
bc1f 0x00179ed0
_nop
b 0x00179ee0
_lwc1 f0,-0x6960(t3)
lw a0,0x8(a1)
li v0,0x1
beq a0,v0,0x0017b2a8
_nop
li a0,0x40
sltiu v0,s5,0x41
movn a0,s5,v0
li t1,0x1
addiu v0,a0,-0x1
li a0,0x2
nor a1,zero,v0
sllv a0,a0,v0
srlv t1,t1,a1
andi v0,v0,0x20
movn t1,a0,v0
movn a0,zero,v0
addiu t1,t1,-0x1
addiu s2,a0,-0x1
sltu a0,s2,a0
addu s4,a0,t1
blez s3,0x0017a4c0
_lw v0,-0x7fd0(gp)
or s6,zero,zero
lw v1,-0x7fd0(gp)
lw a0,-0x7fd0(gp)
ldc1 f26,0x13f8(v0)
sw v0,0x28(sp)
sw v1,0x5c(sp)
lw v0,0x2d0(s7)
ldc1 f22,0x1a68(v1)
lw v1,0x2c0(s7)
or s7,s4,zero
lw a1,-0x7fd0(gp)
or s4,s0,zero
lw a2,-0x7fd0(gp)
or s0,s6,zero
sw v0,0x58(sp)
or s6,s1,zero
sw v1,0x38(sp)
or v1,v0,zero
lw v0,0x20(v0)
or s1,s8,zero
ldc1 f28,0x1418(a2)
lw a3,-0x7fd0(gp)
sll v0,v0,0x2
ldc1 f20,0x1438(a1)
sw a0,0x20(sp)
ldc1 f0,0x1a58(a0)
sw v0,0x2c(sp)
lw v0,0x8(v1)
lw a0,0x14(v1)
sw a1,0x90(sp)
sw v0,0x40(sp)
lw v0,0x34(v1)
sw a2,0x94(sp)
sw a3,0x1c(sp)
sw v0,0x34(sp)
sll v0,a0,0x2
sdc1 f0,0x88(sp)
sw v0,0x30(sp)
sdc1 f26,0x48(sp)
lwc1 f24,0x1a50(a3)
sdc1 f22,0x80(sp)
sdc1 f28,0x98(sp)
sdc1 f22,0x60(sp)
sdc1 f20,0x68(sp)
sdc1 f28,0xa0(sp)
sdc1 f20,0x70(sp)
sdc1 f0,0x78(sp)
sw s3,0x3c(sp)
sdc1 f26,0x50(sp)
lw v0,0x2c(sp)
addu s8,s6,v0
lw v0,0x30(sp)
blez s5,0x0017ade4
_addu t5,s6,v0
lw a1,0x54(s1)
or v1,zero,zero
li t6,-0x1
b 0x0017a208
_or t4,s5,zero
lw a2,0x50(s1)
or a0,a1,zero
movz a0,t4,v0
subu a1,a1,a0
or v0,a0,zero
sllv a0,t6,a0
srlv a2,a2,a1
sllv v1,v1,v0
nor a0,zero,a0
subu t4,t4,v0
and v0,a0,a2
blez t4,0x0017a254
_or v1,v0,v1
bne a1,zero,0x0017a1d4
_sltu v0,a1,t4
li a1,0x8
lbu a2,0x0(s4)
addiu s4,s4,0x1
sltu v0,a1,t4
or a0,a1,zero
sw a2,0x50(s1)
movz a0,t4,v0
subu a1,a1,a0
or v0,a0,zero
sllv a0,t6,a0
srlv a2,a2,a1
sllv v1,v1,v0
nor a0,zero,a0
subu t4,t4,v0
and v0,a0,a2
bgtz t4,0x0017a208
_or v1,v0,v1
bne s7,zero,0x0017ad80
_sw a1,0x54(s1)
sltu v0,s2,v1
beq v0,zero,0x0017ad80
_lw v0,0x1c(sp)
lwc1 f0,0x1a50(v0)
swc1 f0,0x0(s8)
lw a1,0x54(s1)
or s8,zero,zero
li t6,-0x1
b 0x0017a2b8
_or t4,s5,zero
lw a0,0x50(s1)
or v1,a1,zero
movz v1,t4,v0
subu a1,a1,v1
or v0,v1,zero
sllv v1,t6,v1
srlv a0,a0,a1
sllv s8,s8,v0
nor v1,zero,v1
subu t4,t4,v0
and v0,v1,a0
blez t4,0x0017a304
_or s8,v0,s8
bne a1,zero,0x0017a284
_sltu v0,a1,t4
li a1,0x8
lbu a0,0x0(s4)
addiu s4,s4,0x1
sltu v0,a1,t4
or v1,a1,zero
sw a0,0x50(s1)
movz v1,t4,v0
subu a1,a1,v1
or v0,v1,zero
sllv v1,t6,v1
srlv a0,a0,a1
sllv s8,s8,v0
nor v1,zero,v1
subu t4,t4,v0
and v0,v1,a0
bgtz t4,0x0017a2b8
_or s8,v0,s8
lw v0,0x40(sp)
sw a1,0x54(s1)
sll t4,v0,0x2
bne s7,zero,0x0017acc8
_addu s3,s6,t4
sltu v0,s2,s8
beq v0,zero,0x0017acc8
_lw v0,0x1c(sp)
lwc1 f0,0x1a50(v0)
swc1 f0,0x0(t5)
lw a1,0x54(s1)
or s8,zero,zero
li t6,-0x1
b 0x0017a374
_or t5,s5,zero
lw a0,0x50(s1)
or v1,t5,zero
movz v1,a1,v0
subu a1,a1,v1
or v0,v1,zero
sllv v1,t6,v1
srlv a0,a0,a1
sllv s8,s8,v0
nor v1,zero,v1
subu t5,t5,v0
and v0,v1,a0
blez t5,0x0017a3c0
_or s8,v0,s8
bne a1,zero,0x0017a340
_sltu v0,t5,a1
li a1,0x8
lbu a0,0x0(s4)
or v1,t5,zero
sltu v0,t5,a1
movz v1,a1,v0
addiu s4,s4,0x1
sw a0,0x50(s1)
subu a1,a1,v1
or v0,v1,zero
sllv v1,t6,v1
srlv a0,a0,a1
sllv s8,s8,v0
nor v1,zero,v1
subu t5,t5,v0
and v0,v1,a0
bgtz t5,0x0017a374
_or s8,v0,s8
bne s7,zero,0x0017ac68
_sw a1,0x54(s1)
sltu v0,s2,s8
beq v0,zero,0x0017ac68
_lw v0,0x1c(sp)
lwc1 f0,0x1a50(v0)
swc1 f0,0x0(s3)
lw t4,0x54(s1)
or s8,zero,zero
li t6,-0x1
b 0x0017a424
_or t5,s5,zero
lw a0,0x50(s1)
or v1,t5,zero
movz v1,t4,v0
subu t4,t4,v1
or v0,v1,zero
sllv v1,t6,v1
srlv a0,a0,t4
sllv s8,s8,v0
nor v1,zero,v1
subu t5,t5,v0
and v0,v1,a0
blez t5,0x0017a470
_or s8,v0,s8
bne t4,zero,0x0017a3f0
_sltu v0,t5,t4
li t4,0x8
lbu a0,0x0(s4)
or v1,t5,zero
sltu v0,t5,t4
movz v1,t4,v0
addiu s4,s4,0x1
sw a0,0x50(s1)
subu t4,t4,v1
or v0,v1,zero
sllv v1,t6,v1
srlv a0,a0,t4
sllv s8,s8,v0
nor v1,zero,v1
subu t5,t5,v0
and v0,v1,a0
bgtz t5,0x0017a424
_or s8,v0,s8
bne s7,zero,0x0017ac14
_sw t4,0x54(s1)
sltu v0,s2,s8
beq v0,zero,0x0017ac14
_mov.S f0,f24
lw v0,0x34(sp)
beq v0,zero,0x0017a4a8
_lw v0,0x38(sp)
lw v0,0x58(sp)
lw v0,0x38(v0)
sll v0,v0,0x2
addu v0,s6,v0
swc1 f0,0x0(v0)
lw v0,0x38(sp)
addiu s0,s0,0x1
sll v0,v0,0x2
addu s6,s6,v0
lw v0,0x3c(sp)
bne s0,v0,0x0017a1b0
_lw v0,0x2c(sp)
lw v0,0x24(sp)
lw v1,0xb4(sp)
lw v0,0x0(v0)
bne v1,v0,0x0017b3ac
_lw ra,0xdc(sp)
lw s8,0xd8(sp)
lw s7,0xd4(sp)
lw s6,0xd0(sp)
lw s5,0xcc(sp)
lw s4,0xc8(sp)
lw s3,0xc4(sp)
lw s2,0xc0(sp)
lw s1,0xbc(sp)
lw s0,0xb8(sp)
ldc1 f30,0x108(sp)
ldc1 f28,0x100(sp)
ldc1 f26,0xf8(sp)
ldc1 f24,0xf0(sp)
ldc1 f22,0xe8(sp)
ldc1 f20,0xe0(sp)
jr ra
_addiu sp,sp,0x110
blez a3,0x0017a4c0
_or t1,zero,zero
lw t2,0x2d0(s7)
lw v1,-0x7fc8(gp)
lw v0,0x28(a1)
lw a0,0x2c0(s7)
ldc1 f6,-0x5af0(v1)
lw a3,0x20(t2)
addiu t0,v0,0x4
lw a2,0x14(t2)
sll a0,a0,0x2
lw a1,0x8(t2)
sll a3,a3,0x2
lw t3,0x34(t2)
sll a2,a2,0x2
sll a1,a1,0x2
addu a3,s1,a3
addu a2,s1,a2
addu a1,s1,a1
lbu t4,0x0(s0)
lbu v1,0x1(s0)
lbu v0,0x2(s0)
mtc1 t4,f0
cvt.d.W f4,f0
mtc1 v1,f0
mul.D f4,f4,f6
cvt.d.W f2,f0
mtc1 v0,f0
cvt.s.D f4,f4
mul.D f2,f2,f6
cvt.d.W f0,f0
swc1 f4,0x0(a3)
cvt.s.D f2,f2
mul.D f0,f0,f6
swc1 f2,0x0(a2)
cvt.s.D f0,f0
beq t3,zero,0x0017a5d4
_swc1 f0,0x0(a1)
lbu v0,0x3(s0)
lw v1,0x38(t2)
mtc1 v0,f0
sll v0,v1,0x2
addu v0,s1,v0
cvt.d.W f0,f0
mul.D f0,f0,f6
cvt.s.D f0,f0
swc1 f0,0x0(v0)
addiu t1,t1,0x1
addu s0,s0,t0
addu s1,s1,a0
addu a3,a3,a0
addu a2,a2,a0
bne t1,s3,0x0017a564
_addu a1,a1,a0
b 0x0017a4c4
_lw v0,0x24(sp)
lw v0,0x30(a1)
beq v0,zero,0x0017ae8c
_nop
blez a3,0x0017a4c0
_or t1,zero,zero
lw t5,0x2d0(s7)
lw t4,0x2c0(s7)
li a3,-0x1
lw t3,0x8(t5)
sll t4,t4,0x2
lw t2,0x20(t5)
lw t0,0x14(t5)
lw t6,0x34(t5)
sll t3,t3,0x2
sll t2,t2,0x2
sll t0,t0,0x2
lw v0,0x54(s8)
or a1,zero,zero
b 0x0017a67c
_li a2,0xa
lw t7,0x50(s8)
or a0,v0,zero
movz a0,a2,v1
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a1,a1,v1
nor a0,zero,a0
subu a2,a2,v1
and v1,a0,t7
blez a2,0x0017a6c8
_or a1,v1,a1
bne v0,zero,0x0017a648
_sltu v1,v0,a2
li v0,0x8
lbu t7,0x0(s0)
addiu s0,s0,0x1
sltu v1,v0,a2
or a0,v0,zero
sw t7,0x50(s8)
movz a0,a2,v1
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a1,a1,v1
nor a0,zero,a0
subu a2,a2,v1
and v1,a0,t7
bgtz a2,0x0017a67c
_or a1,v1,a1
sll v1,a1,0x6
sw v0,0x54(s8)
addu a0,s1,t3
andi v1,v1,0xffff
mtc1 v1,f0
or a1,zero,zero
li a2,0xa
cvt.s.W f0,f0
b 0x0017a724
_swc1 f0,0x0(a0)
lw t7,0x50(s8)
or a0,a2,zero
movz a0,v0,v1
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a1,a1,v1
nor a0,zero,a0
subu a2,a2,v1
and v1,a0,t7
blez a2,0x0017a770
_or a1,v1,a1
bne v0,zero,0x0017a6f0
_sltu v1,a2,v0
li v0,0x8
lbu t7,0x0(s0)
or a0,a2,zero
sltu v1,a2,v0
movz a0,v0,v1
addiu s0,s0,0x1
sw t7,0x50(s8)
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a1,a1,v1
nor a0,zero,a0
subu a2,a2,v1
and v1,a0,t7
bgtz a2,0x0017a724
_or a1,v1,a1
sll v1,a1,0x6
sw v0,0x54(s8)
addu a0,s1,t0
andi v1,v1,0xffff
mtc1 v1,f0
or a1,zero,zero
li a2,0xa
cvt.s.W f0,f0
b 0x0017a7cc
_swc1 f0,0x0(a0)
lw t7,0x50(s8)
or a0,a2,zero
movz a0,v0,v1
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a1,a1,v1
nor a0,zero,a0
subu a2,a2,v1
and v1,a0,t7
blez a2,0x0017a818
_or a1,v1,a1
bne v0,zero,0x0017a798
_sltu v1,a2,v0
li v0,0x8
lbu t7,0x0(s0)
or a0,a2,zero
sltu v1,a2,v0
movz a0,v0,v1
addiu s0,s0,0x1
sw t7,0x50(s8)
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a1,a1,v1
nor a0,zero,a0
subu a2,a2,v1
and v1,a0,t7
bgtz a2,0x0017a7cc
_or a1,v1,a1
sll v1,a1,0x6
sw v0,0x54(s8)
addu a0,s1,t2
andi v1,v1,0xffff
mtc1 v1,f0
or a2,zero,zero
li a1,0xa
cvt.s.W f0,f0
b 0x0017a874
_swc1 f0,0x0(a0)
lw t7,0x50(s8)
or a0,v0,zero
movz a0,a1,v1
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a2,a2,v1
nor a0,zero,a0
subu a1,a1,v1
and v1,a0,t7
blez a1,0x0017a8c0
_or a2,v1,a2
bne v0,zero,0x0017a840
_sltu v1,v0,a1
li v0,0x8
lbu t7,0x0(s0)
addiu s0,s0,0x1
sltu v1,v0,a1
or a0,v0,zero
sw t7,0x50(s8)
movz a0,a1,v1
subu v0,v0,a0
or v1,a0,zero
sllv a0,a3,a0
srlv t7,t7,v0
sllv a2,a2,v1
nor a0,zero,a0
subu a1,a1,v1
and v1,a0,t7
bgtz a1,0x0017a874
_or a2,v1,a2
beq t6,zero,0x0017a8e8
_sw v0,0x54(s8)
sll v1,a2,0x6
lw v0,0x38(t5)
andi v1,v1,0xffff
mtc1 v1,f0
sll v0,v0,0x2
addu v0,s1,v0
cvt.s.W f0,f0
swc1 f0,0x0(v0)
addiu t1,t1,0x1
bne t1,s3,0x0017a638
_addu s1,s1,t4
b 0x0017a4c4
_lw v0,0x24(sp)
lw a0,0x8(a1)
li v0,0x1
beq a0,v0,0x0017b100
_nop
blez a3,0x0017a4c0
_or a2,zero,zero
lw t7,0x2d0(s7)
lw t6,0x28(a1)
li t8,0x1
lw t5,0x2c0(s7)
lw s2,0x44(a1)
lw t4,0x8(t7)
addiu t6,t6,0x8
lw t3,0x14(t7)
sll t5,t5,0x2
lw t2,0x20(t7)
lw t9,0x34(t7)
sll t4,t4,0x2
sll t3,t3,0x2
b 0x0017a9a0
_sll t2,t2,0x2
mtc1 a0,f0
mtc1 v0,f4
cvt.s.W f2,f0
mtc1 v1,f0
cvt.s.W f4,f4
swc1 f2,0x0(t1)
cvt.s.W f0,f0
swc1 f0,0x0(t0)
swc1 f4,0x0(a3)
beq t9,zero,0x0017a990
_mtc1 a1,f0
lw v0,0x38(t7)
sll v0,v0,0x2
addu v0,s1,v0
cvt.s.W f0,f0
swc1 f0,0x0(v0)
addiu a2,a2,0x1
addu s0,s0,t6
beq a2,s3,0x0017a4c0
_addu s1,s1,t5
lbu a0,0x0(s0)
addu a3,s1,t4
lbu v1,0x2(s0)
addu t0,s1,t3
lbu a1,0x6(s0)
addu t1,s1,t2
lbu v0,0x4(s0)
sll s5,a0,0x8
sll s4,v1,0x8
lbu s7,0x7(s0)
lbu a0,0x1(s0)
sll a1,a1,0x8
lbu s6,0x5(s0)
sll v0,v0,0x8
lbu v1,0x3(s0)
or a1,s7,a1
or a0,a0,s5
or v0,s6,v0
bne s2,t8,0x0017a950
_or v1,v1,s4
wsbh a0,a0
wsbh v1,v1
andi a0,a0,0xffff
mtc1 a0,f0
wsbh v0,v0
andi v1,v1,0xffff
andi v0,v0,0xffff
mtc1 v0,f4
wsbh a1,a1
andi a1,a1,0xffff
cvt.s.W f2,f0
mtc1 v1,f0
cvt.s.W f4,f4
swc1 f2,0x0(t1)
cvt.s.W f0,f0
swc1 f0,0x0(t0)
b 0x0017a974
_swc1 f4,0x0(a3)
lw a0,0x8(a1)
li v0,0x1
beq a0,v0,0x0017b00c
_nop
blez s3,0x0017a4c0
_lw v0,-0x7fc8(gp)
or a1,zero,zero
lw t3,0x2d0(s7)
li t6,0x1
lw t2,0x28(s8)
ldc1 f2,-0x5b00(v0)
lw v0,-0x7fd0(gp)
lw t1,0x2c0(s7)
addiu t2,t2,0x10
lw t0,0x20(t3)
ldc1 f4,0x1418(v0)
lw a3,0x14(t3)
sll t1,t1,0x2
lw a2,0x8(t3)
sll t0,t0,0x2
lw t5,0x44(s8)
mov.D f8,f2
lw t4,0x34(t3)
sll a3,a3,0x2
sll a2,a2,0x2
mov.D f6,f2
mov.D f18,f4
mov.D f22,f4
mov.D f16,f2
mov.D f14,f2
mov.D f12,f2
mov.D f26,f4
mov.D f28,f4
mov.D f30,f4
mov.D f10,f2
b 0x0017ab5c
_mov.D f24,f4
mtc1 s2,f0
bgez s2,0x0017aadc
_cvt.d.W f20,f0
add.D f20,f20,f22
div.D f20,f20,f2
mtc1 t9,f0
cvt.s.D f20,f20
cvt.d.W f0,f0
bgez t9,0x0017aaf8
_swc1 f20,0x0(t8)
add.D f0,f0,f18
div.D f20,f0,f8
mtc1 v0,f0
cvt.s.D f20,f20
cvt.d.W f0,f0
bgez v0,0x0017ab14
_swc1 f20,0x0(t7)
add.D f0,f0,f4
div.D f0,f0,f6
cvt.s.D f0,f0
swc1 f0,0x0(a0)
beq t4,zero,0x0017ab4c
_mtc1 v1,f0
lw v0,0x38(t3)
sll v0,v0,0x2
addu v0,s1,v0
bgez v1,0x0017ab40
_cvt.d.W f0,f0
add.D f0,f0,f24
div.D f0,f0,f10
cvt.s.D f0,f0
swc1 f0,0x0(v0)
addiu a1,a1,0x1
addu s0,s0,t2
beq a1,s3,0x0017a4c0
_addu s1,s1,t1
lwl v1,0xc(s0)
addu t8,s1,t0
lwl v0,0x8(s0)
addu t7,s1,a3
lwl t9,0x4(s0)
addu a0,s1,a2
lwl s2,0x0(s0)
lwr v1,0xf(s0)
lwr v0,0xb(s0)
lwr t9,0x7(s0)
bne t5,t6,0x0017aacc
_lwr s2,0x3(s0)
wsbh s2,s2
rotr s2,s2,0x10
mtc1 s2,f0
bgez s2,0x0017aba4
_cvt.d.W f0,f0
add.D f0,f0,f30
wsbh t9,t9
div.D f0,f0,f16
rotr t9,t9,0x10
mtc1 t9,f20
cvt.s.D f0,f0
cvt.d.W f20,f20
bgez t9,0x0017abc8
_swc1 f0,0x0(t8)
add.D f20,f20,f28
wsbh v0,v0
div.D f20,f20,f14
rotr v0,v0,0x10
mtc1 v0,f0
cvt.s.D f20,f20
cvt.d.W f0,f0
bgez v0,0x0017abec
_swc1 f20,0x0(t7)
add.D f0,f0,f26
wsbh v1,v1
div.D f0,f0,f12
rotr v1,v1,0x10
cvt.s.D f0,f0
b 0x0017ab20
_swc1 f0,0x0(a0)
bne s5,zero,0x0017a0a0
_or s4,zero,zero
b 0x0017a0e0
_or s2,zero,zero
lw t9,-0x7f50(gp)
or a0,s7,zero
jalr t9
_or a1,s2,zero
mtc1 s8,f2
lw gp,0x10(sp)
bgez s8,0x0017ac38
_cvt.d.W f4,f2
add.D f4,f4,f28
lw v0,0x28(sp)
ldc1 f2,0x13f8(v0)
c.le.D f2,f0
bc1t 0x3,0x0017ad74
_lw v0,0x90(sp)
mov.D f0,f22
lw v0,0x20(sp)
mul.D f0,f0,f4
ldc1 f2,0x1a58(v0)
mul.D f0,f0,f2
b 0x0017a484
_cvt.s.D f0,f0
lw t9,-0x7f50(gp)
or a0,s7,zero
jalr t9
_or a1,s2,zero
mtc1 s8,f2
lw gp,0x10(sp)
bgez s8,0x0017ac90
_cvt.d.W f2,f2
ldc1 f4,0x98(sp)
add.D f2,f2,f4
ldc1 f4,0x48(sp)
c.le.D f4,f0
bc1t 0x5,0x0017ad4c
_lw v0,0x20(sp)
ldc1 f4,0x80(sp)
mul.D f2,f2,f4
ldc1 f4,0x88(sp)
mul.D f2,f2,f4
cvt.s.D f2,f2
bgtz s5,0x0017a3dc
_swc1 f2,0x0(s3)
mtc1 zero,f4
b 0x0017ac38
_mthc1 zero,f4
lw t9,-0x7f50(gp)
or a0,s7,zero
sw t5,0x44(sp)
jalr t9
_or a1,s2,zero
mtc1 s8,f2
lw gp,0x10(sp)
lw t5,0x44(sp)
bgez s8,0x0017acf8
_cvt.d.W f4,f2
ldc1 f2,0xa0(sp)
add.D f4,f4,f2
lw v0,0x28(sp)
ldc1 f2,0x13f8(v0)
c.le.D f2,f0
bc1f 0x2,0x0017ad14
_ldc1 f2,0x60(sp)
ldc1 f2,0x68(sp)
div.D f2,f2,f0
lw v0,0x20(sp)
ldc1 f6,0x1a58(v0)
mul.D f2,f2,f4
mul.D f2,f2,f6
cvt.s.D f2,f2
bgtz s5,0x0017a32c
_swc1 f2,0x0(t5)
lw v0,0x28(sp)
ldc1 f2,0x13f8(v0)
c.le.D f2,f0
bc1f 0x7,0x0017ae7c
_lw v0,0x20(sp)
mtc1 zero,f2
mthc1 zero,f2
div.D f4,f20,f0
ldc1 f6,0x1a58(v0)
mul.D f2,f4,f2
mul.D f2,f2,f6
cvt.s.D f2,f2
bgtz s5,0x0017a3dc
_swc1 f2,0x0(s3)
mtc1 zero,f4
mthc1 zero,f4
lw v0,0x90(sp)
ldc1 f2,0x1438(v0)
b 0x0017ac50
_div.D f0,f2,f0
mtc1 v1,f0
bgez v1,0x0017ad98
_cvt.d.W f30,f0
lw v0,0x94(sp)
ldc1 f0,0x1418(v0)
add.D f30,f30,f0
lw t9,-0x7f50(gp)
or a0,s7,zero
sw t5,0x44(sp)
jalr t9
_or a1,s2,zero
ldc1 f2,0x50(sp)
lw gp,0x10(sp)
c.le.D f2,f0
bc1t 0x4,0x0017ae10
_lw t5,0x44(sp)
lw v0,0x5c(sp)
ldc1 f2,0x1a68(v0)
lw v0,0x20(sp)
ldc1 f0,0x1a58(v0)
mul.D f30,f30,f2
mul.D f30,f30,f0
cvt.s.D f30,f30
b 0x0017a270
_swc1 f30,0x0(s8)
mtc1 zero,f30
lw t9,-0x7f50(gp)
or a0,s7,zero
sw t5,0x44(sp)
or a1,s2,zero
jalr t9
_mthc1 zero,f30
lw gp,0x10(sp)
c.le.D f26,f0
bc1f 0x6,0x0017b414
_lw t5,0x44(sp)
ldc1 f2,0x70(sp)
div.D f2,f2,f0
mul.D f30,f2,f30
ldc1 f2,0x78(sp)
mul.D f30,f30,f2
cvt.s.D f30,f30
bgtz s5,0x0017a270
_swc1 f30,0x0(s8)
mtc1 zero,f4
lw v0,0x40(sp)
sll t4,v0,0x2
addu s3,s6,t4
b 0x0017acf8
_mthc1 zero,f4
sb t1,0xb0(sp)
sb t0,0xb1(sp)
sb a3,0xb2(sp)
b 0x00179f38
_sb v1,0xb3(sp)
b 0x00179ddc
_mov.S f0,f24
b 0x0017a030
_mtc1 t8,f0
b 0x00179ee0
_lwc1 f0,-0x695c(t4)
b 0x00179fc0
_mtc1 t9,f0
mtc1 zero,f4
sw zero,0x0(s3)
b 0x0017ac38
_mthc1 zero,f4
blez a3,0x0017a4c0
_lui t3,0xaaaa
lw t9,0x2c0(s7)
lw t8,0x28(a1)
or a3,zero,zero
lw t4,0x2d0(s7)
or t2,zero,zero
or t6,zero,zero
sll t9,t9,0x2
li t0,0x1
li t1,0x2
li t5,0x3
li t7,0x4
ori t3,t3,0xaaab
or a0,zero,zero
or v1,t2,zero
multu v1,t3
mfhi v0
srl a1,v0,0x1
sll v0,a1,0x1
addu v0,v0,a1
subu v0,v1,v0
beq v0,t0,0x0017afa8
_nop
bne v0,t1,0x0017af4c
_addiu a1,s0,0x4
sll v0,a3,0x4
andi v0,v0,0xffc0
mtc1 v0,f0
addiu v1,v1,0x1
beq a0,t1,0x0017af78
_cvt.s.W f0,f0
beq a0,t5,0x0017afb4
_nop
beq a0,t0,0x0017afec
_subu a0,v1,t2
lw v0,0x8(t4)
sll v0,v0,0x2
addu v0,s1,v0
bne a0,t7,0x0017aecc
_swc1 f0,0x0(v0)
addiu t6,t6,0x1
addu s0,s0,t8
addu s1,s1,t9
bne t6,s3,0x0017aec4
_or t2,v1,zero
b 0x0017a4c4
_lw v0,0x24(sp)
lwl a3,0x0(s0)
lw v0,0x44(s8)
beq v0,t0,0x0017b000
_lwr a3,0x3(s0)
srl v0,a3,0x16
or s0,a1,zero
sll v0,v0,0x6
addiu v1,v1,0x1
mtc1 v0,f0
bne a0,t1,0x0017af0c
_cvt.s.W f0,f0
lw v0,0x20(t4)
multu v1,t3
sll v0,v0,0x2
addu v0,s1,v0
swc1 f0,0x0(v0)
mfhi v0
srl a1,v0,0x1
sll v0,a1,0x1
addu v0,v0,a1
subu v0,v1,v0
bne v0,t0,0x0017aeec
_subu a0,v1,t2
srl v0,a3,0x6
b 0x0017aefc
_andi v0,v0,0xffc0
lw v0,0x34(t4)
beq v0,zero,0x0017af30
_nop
lw v0,0x38(t4)
addiu t6,t6,0x1
addu s0,s0,t8
or t2,v1,zero
sll v0,v0,0x2
addu v0,s1,v0
addu s1,s1,t9
bne t6,s3,0x0017aec4
_swc1 f0,0x0(v0)
b 0x0017a4c4
_lw v0,0x24(sp)
lw v0,0x14(t4)
sll v0,v0,0x2
addu v0,s1,v0
b 0x0017aecc
_swc1 f0,0x0(v0)
wsbh a3,a3
b 0x0017af5c
_rotr a3,a3,0x10
blez a3,0x0017a4c0
_or a1,s0,zero
lw s5,-0x7d4c(gp)
or s6,zero,zero
addiu s2,sp,0xa8
addiu s5,s5,0x32e0
or a2,s2,zero
or t9,s5,zero
bal 0x001732e0
_or a0,s8,zero
or a2,s2,zero
lw v1,0x2d0(s7)
or a1,v0,zero
lwc1 f0,0xa8(sp)
or a0,s8,zero
or t9,s5,zero
lw v0,0x8(v1)
sll v0,v0,0x2
addu v0,s1,v0
bal 0x001732e0
_swc1 f0,0x0(v0)
or a2,s2,zero
lw v1,0x2d0(s7)
or a1,v0,zero
lwc1 f0,0xa8(sp)
or a0,s8,zero
or t9,s5,zero
lw v0,0x14(v1)
sll v0,v0,0x2
addu v0,s1,v0
bal 0x001732e0
_swc1 f0,0x0(v0)
or a0,s8,zero
lw v1,0x2d0(s7)
or a1,v0,zero
lwc1 f0,0xa8(sp)
or a2,s2,zero
or t9,s5,zero
lw v0,0x20(v1)
sll v0,v0,0x2
addu v0,s1,v0
bal 0x001732e0
_swc1 f0,0x0(v0)
lw v1,0x2d0(s7)
lw a0,0x34(v1)
beq a0,zero,0x0017b0dc
_lw gp,0x10(sp)
lwc1 f0,0xa8(sp)
lw v1,0x38(v1)
sll v1,v1,0x2
addu v1,s1,v1
swc1 f0,0x0(v1)
lw v1,0x2c0(s7)
addiu s6,s6,0x1
lw a1,0x28(s8)
sll v1,v1,0x2
addu a1,v0,a1
bne s6,s3,0x0017b024
_addu s1,s1,v1
b 0x0017a4c4
_lw v0,0x24(sp)
blez a3,0x0017a4c0
_lw v0,-0x7fd0(gp)
or t1,zero,zero
lw t9,-0x7d4c(gp)
li t4,0x1
lw t3,0x44(a1)
lwc1 f2,0x1a50(v0)
addiu t9,t9,0x3068
mov.S f4,f2
b 0x0017b1f0
_mov.S f6,f2
bal 0x00173068
_nop
lw t0,0x2d0(s7)
mul.S f0,f0,f2
lbu v1,0x2(s0)
lbu a0,0x3(s0)
lw v0,0x8(t0)
sll v1,v1,0x8
or a0,a0,v1
sll v0,v0,0x2
addu v0,s1,v0
bal 0x00173068
_swc1 f0,0x0(v0)
mul.S f0,f0,f2
lw v0,0x14(t0)
lbu v1,0x4(s0)
lbu a0,0x5(s0)
sll v0,v0,0x2
sll v1,v1,0x8
addu v0,s1,v0
or a0,a0,v1
bal 0x00173068
_swc1 f0,0x0(v0)
mul.S f0,f0,f2
lw v0,0x20(t0)
lbu v1,0x6(s0)
lbu a0,0x7(s0)
sll v0,v0,0x2
sll v1,v1,0x8
addu v0,s1,v0
or a0,a0,v1
swc1 f0,0x0(v0)
bal 0x00173068
_nop
lw v0,0x34(t0)
beq v0,zero,0x0017b1d4
_lw gp,0x10(sp)
mul.S f0,f0,f6
lw v0,0x38(t0)
sll v0,v0,0x2
addu v0,s1,v0
swc1 f0,0x0(v0)
lw v0,0x2c0(s7)
addiu t1,t1,0x1
lw s0,0x28(s8)
sll v0,v0,0x2
addu s0,t2,s0
beq t1,s3,0x0017a4c0
_addu s1,s1,v0
lbu v0,0x0(s0)
addiu t2,s0,0x8
lbu a0,0x1(s0)
sll v0,v0,0x8
bne t3,t4,0x0017b12c
_or a0,a0,v0
wsbh a0,a0
bal 0x00173068
_andi a0,a0,0xffff
lw t0,0x2d0(s7)
mul.S f0,f0,f4
lbu v1,0x2(s0)
lbu a0,0x3(s0)
lw v0,0x8(t0)
sll v1,v1,0x8
or a0,a0,v1
sll v0,v0,0x2
wsbh a0,a0
addu v0,s1,v0
andi a0,a0,0xffff
bal 0x00173068
_swc1 f0,0x0(v0)
mul.S f0,f0,f4
lw v0,0x14(t0)
lbu v1,0x4(s0)
lbu a0,0x5(s0)
sll v0,v0,0x2
sll v1,v1,0x8
addu v0,s1,v0
or a0,a0,v1
wsbh a0,a0
swc1 f0,0x0(v0)
bal 0x00173068
_andi a0,a0,0xffff
mul.S f0,f0,f4
lbu v1,0x6(s0)
lw v0,0x20(t0)
lbu a0,0x7(s0)
sll v1,v1,0x8
sll v0,v0,0x2
or a0,a0,v1
addu v0,s1,v0
wsbh a0,a0
swc1 f0,0x0(v0)
b 0x0017b1ac
_andi a0,a0,0xffff
blez a3,0x0017a4c0
_or a1,s0,zero
lw s5,-0x7d4c(gp)
or s6,zero,zero
addiu s2,sp,0xa8
addiu s5,s5,0x3108
or a2,s2,zero
or t9,s5,zero
bal 0x00173108
_or a0,s8,zero
or a2,s2,zero
ldc1 f0,0xa8(sp)
or a1,v0,zero
lw v1,0x2d0(s7)
or a0,s8,zero
or t9,s5,zero
lw v0,0x8(v1)
cvt.s.D f0,f0
sll v0,v0,0x2
addu v0,s1,v0
bal 0x00173108
_swc1 f0,0x0(v0)
or a2,s2,zero
ldc1 f0,0xa8(sp)
or a1,v0,zero
lw v1,0x2d0(s7)
or a0,s8,zero
or t9,s5,zero
lw v0,0x14(v1)
cvt.s.D f0,f0
sll v0,v0,0x2
addu v0,s1,v0
bal 0x00173108
_swc1 f0,0x0(v0)
or a0,s8,zero
ldc1 f0,0xa8(sp)
or a1,v0,zero
lw v0,0x2d0(s7)
or a2,s2,zero
or t9,s5,zero
lw v0,0x20(v0)
cvt.s.D f0,f0
sll v0,v0,0x2
addu v0,s1,v0
bal 0x00173108
_swc1 f0,0x0(v0)
lw v1,0x2d0(s7)
lw a0,0x34(v1)
beq a0,zero,0x0017b388
_lw gp,0x10(sp)
ldc1 f0,0xa8(sp)
lw v1,0x38(v1)
sll v1,v1,0x2
addu v1,s1,v1
cvt.s.D f0,f0
swc1 f0,0x0(v1)
lw v1,0x2c0(s7)
addiu s6,s6,0x1
lw a1,0x28(s8)
sll v1,v1,0x2
addu a1,v0,a1
bne s6,s3,0x0017b2c0
_addu s1,s1,v1
b 0x0017a4c4
_lw v0,0x24(sp)
lw t9,-0x784c(gp)
jalr t9
_nop
lw a3,-0x7fc4(gp)
li a2,0x318
lw a1,-0x7fc4(gp)
lw a0,-0x7fd0(gp)
lw t9,-0x72a8(gp)
addiu a3,a3,-0x69cc
addiu a1,a1,-0x7528
jalr t9
_addiu a0,a0,0xdd0
lw a3,-0x7fc4(gp)
li a2,0x319
lw a1,-0x7fc4(gp)
lw a0,-0x7fc8(gp)
lw t9,-0x72a8(gp)
addiu a3,a3,-0x69cc
addiu a1,a1,-0x7528
jalr t9
_addiu a0,a0,-0x3784
lw v0,0x14(a0)
sll v0,v0,0x2
addu v0,s1,v0
b 0x00179fd8
_sw s5,0x0(v0)
b 0x0017ae30
_sw zero,0x0(s8)
lw v1,0x20(a0)
sll v1,v1,0x2
addu v1,s1,v1
b 0x0017a048
_sw s2,0x0(v1)
(translation_unit "void FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}\n\n" (function_definition "void FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" primitive_type (function_declarator "FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )" identifier (parameter_list "(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "byte *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "float *pfVar15;" primitive_type (pointer_declarator "*pfVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "float *pfVar20;" primitive_type (pointer_declarator "*pfVar20" * identifier) ;) (declaration "double dVar21;" primitive_type identifier ;) (declaration "double dVar22;" primitive_type identifier ;) (declaration "float fVar24;" primitive_type identifier ;) (declaration "double dVar23;" primitive_type identifier ;) (declaration "double dVar25;" primitive_type identifier ;) (declaration "double dVar26;" primitive_type identifier ;) (declaration "double dVar27;" primitive_type identifier ;) (declaration "double dVar28;" primitive_type identifier ;) (declaration "double dVar29;" primitive_type identifier ;) (declaration "ulonglong uVar30;" type_identifier identifier ;) (declaration "double dVar31;" primitive_type identifier ;) (declaration "double dVar32;" primitive_type identifier ;) (declaration "double dVar33;" primitive_type identifier ;) (declaration "double dVar34;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_003a9230;" (assignment_expression "puVar3 = PTR___stack_chk_guard_003a9230" identifier = identifier) ;) (expression_statement "puVar2 = PTR_LAB_003a88e0;" (assignment_expression "puVar2 = PTR_LAB_003a88e0" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_003a9230;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_003a9230" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_003a9230" * (cast_expression "(int *)PTR___stack_chk_guard_003a9230" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" { (if_statement "if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x336c) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x336c) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x336c)" * (cast_expression "(int *)(param_1 + 0x336c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x336c)" ( (binary_expression "param_1 + 0x336c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" { (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x7528" identifier + number_literal) , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x69cc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar19 = *param_2;" (assignment_expression "uVar19 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar19 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }" if (parenthesized_expression "(uVar19 - 8 < 0x39)" ( (binary_expression "uVar19 - 8 < 0x39" (binary_expression "uVar19 - 8" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();" (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" ( (binary_expression "&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" * (cast_expression "(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" ( (binary_expression "PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234" (binary_expression "PTR_s_courses_003a88ec + (uVar19 - 8) * 4" identifier + (binary_expression "(uVar19 - 8) * 4" (parenthesized_expression "(uVar19 - 8)" ( (binary_expression "uVar19 - 8" identifier - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (if_statement "if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar17 = 0;\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" else (compound_statement "{\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }" if (parenthesized_expression "(uVar19 < 0x41)" ( (binary_expression "uVar19 < 0x41" identifier < number_literal) )) (compound_statement "{\n        uVar17 = uVar19;\n      }" { (expression_statement "uVar17 = uVar19;" (assignment_expression "uVar17 = uVar19" identifier = identifier) ;) })) (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "uVar13 = 2 << (uVar17 & 0x1f);" (assignment_expression "uVar13 = 2 << (uVar17 & 0x1f)" identifier = (binary_expression "2 << (uVar17 & 0x1f)" number_literal << (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar13;" (assignment_expression "uVar10 = uVar13" identifier = identifier) ;) (expression_statement "uVar14 = 1 >> (~uVar17 & 0x1f);" (assignment_expression "uVar14 = 1 >> (~uVar17 & 0x1f)" identifier = (binary_expression "1 >> (~uVar17 & 0x1f)" number_literal >> (parenthesized_expression "(~uVar17 & 0x1f)" ( (binary_expression "~uVar17 & 0x1f" (unary_expression "~uVar17" ~ identifier) & number_literal) )))) ;) (if_statement "if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }" if (parenthesized_expression "((uVar17 & 0x20) != 0)" ( (binary_expression "(uVar17 & 0x20) != 0" (parenthesized_expression "(uVar17 & 0x20)" ( (binary_expression "uVar17 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar13;" (assignment_expression "uVar14 = uVar13" identifier = identifier) ;) })) (expression_statement "uVar17 = uVar10 - 1;" (assignment_expression "uVar17 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);" (assignment_expression "iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1)" identifier = (binary_expression "(uint)(uVar17 < uVar10) + (uVar14 - 1)" (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))) + (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )))) ;) }))) (if_statement "if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }" if (parenthesized_expression "(0 < param_4)" ( (binary_expression "0 < param_4" number_literal < identifier) )) (compound_statement "{\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }" { (expression_statement "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" ( (binary_expression "PTR_LAB_003a88e0 + 0x13f8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x2d0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2d0)" identifier = (pointer_expression "*(int *)(param_1 + 0x2d0)" * (cast_expression "(int *)(param_1 + 0x2d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2d0)" ( (binary_expression "param_1 + 0x2d0" identifier + number_literal) ))))) ;) (expression_statement "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);" (assignment_expression "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a68)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a68)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a68)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a68" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(param_1 + 0x2c0);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x2c0)" identifier = (pointer_expression "*(int *)(param_1 + 0x2c0)" * (cast_expression "(int *)(param_1 + 0x2c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c0)" ( (binary_expression "param_1 + 0x2c0" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(iVar5 + 0x20);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x20)" identifier = (pointer_expression "*(int *)(iVar5 + 0x20)" * (cast_expression "(int *)(iVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);" (assignment_expression "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1418)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1418)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1418" identifier + number_literal) ))))) ;) (expression_statement "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);" (assignment_expression "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1438)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1438)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1438)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1438" identifier + number_literal) ))))) ;) (expression_statement "dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);" (assignment_expression "dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a58" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar5 + 8);" (assignment_expression "iVar7 = *(int *)(iVar5 + 8)" identifier = (pointer_expression "*(int *)(iVar5 + 8)" * (cast_expression "(int *)(iVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar5 + 0x14);" (assignment_expression "iVar12 = *(int *)(iVar5 + 0x14)" identifier = (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar5 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar5 + 0x34)" identifier = (pointer_expression "*(int *)(iVar5 + 0x34)" * (cast_expression "(int *)(iVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);" (assignment_expression "uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" identifier = (binary_expression "(ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(PTR_LAB_003a88e0 + 0x1a50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a50)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a50" identifier + number_literal) ))))) ;) (expression_statement "dVar28 = dVar27;" (assignment_expression "dVar28 = dVar27" identifier = identifier) ;) (expression_statement "dVar23 = dVar29;" (assignment_expression "dVar23 = dVar29" identifier = identifier) ;) (expression_statement "dVar32 = dVar31;" (assignment_expression "dVar32 = dVar31" identifier = identifier) ;) (expression_statement "dVar34 = dVar33;" (assignment_expression "dVar34 = dVar33" identifier = identifier) ;) (do_statement "do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);" do (compound_statement "{\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      }" { (expression_statement "pfVar20 = (float *)(param_6 + iVar6 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar6 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar6 * 4)" ( (binary_expression "param_6 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "pfVar15 = (float *)(param_6 + iVar12 * 4);" (assignment_expression "pfVar15 = (float *)(param_6 + iVar12 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar12 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar12 * 4)" ( (binary_expression "param_6 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" if (parenthesized_expression "((int)uVar19 < 1)" ( (binary_expression "(int)uVar19 < 1" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }" { (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (if_statement "if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }" if (parenthesized_expression "(dVar32 <= dVar22)" ( (binary_expression "dVar32 <= dVar22" identifier <= identifier) )) (compound_statement "{\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }" { (labeled_statement "LAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);" statement_identifier : (expression_statement "*pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);" (assignment_expression "*pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21)" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)((dVar27 / dVar22) * dVar26 * dVar21)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar27 / dVar22) * dVar26 * dVar21)" ( (binary_expression "(dVar27 / dVar22) * dVar26 * dVar21" (binary_expression "(dVar27 / dVar22) * dVar26" (parenthesized_expression "(dVar27 / dVar22)" ( (binary_expression "dVar27 / dVar22" identifier / identifier) )) * identifier) * identifier) )))) ;)) (if_statement "if (0 < (int)uVar19) goto LAB_0017a270;" if (parenthesized_expression "(0 < (int)uVar19)" ( (binary_expression "0 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a270;" goto statement_identifier ;)) }) (else_clause "else {\n            *pfVar20 = 0.0;\n          }" else (compound_statement "{\n            *pfVar20 = 0.0;\n          }" { (expression_statement "*pfVar20 = 0.0;" (assignment_expression "*pfVar20 = 0.0" (pointer_expression "*pfVar20" * identifier) = number_literal) ;) }))) (expression_statement "pfVar20 = (float *)(param_6 + iVar7 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar7 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar7 * 4)" ( (binary_expression "param_6 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0017acf8:\n          dVar25 = dVar29;" statement_identifier : (expression_statement "dVar25 = dVar29;" (assignment_expression "dVar25 = dVar29" identifier = identifier) ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            dVar25 = dVar27 / dVar22;\n          }" { (expression_statement "dVar25 = dVar27 / dVar22;" (assignment_expression "dVar25 = dVar27 / dVar22" identifier = (binary_expression "dVar27 / dVar22" identifier / identifier)) ;) })) (expression_statement "*pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar15" * identifier) = (cast_expression "(float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar25 * dVar26" identifier * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) (if_statement "if (0 < (int)uVar19) goto LAB_0017a32c;" if (parenthesized_expression "(0 < (int)uVar19)" ( (binary_expression "0 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a32c;" goto statement_identifier ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }" { (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_0017ad4c;" goto statement_identifier ;) })) (expression_statement "*pfVar20 = 0.0;" (assignment_expression "*pfVar20 = 0.0" (pointer_expression "*pfVar20" * identifier) = number_literal) ;) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0017ac38:\n          dVar25 = dVar23;" statement_identifier : (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" identifier = identifier) ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }" { (labeled_statement "LAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;" statement_identifier : (expression_statement "dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;" (assignment_expression "dVar23 = *(double *)(puVar2 + 0x1438) / dVar22" identifier = (binary_expression "*(double *)(puVar2 + 0x1438) / dVar22" (pointer_expression "*(double *)(puVar2 + 0x1438)" * (cast_expression "(double *)(puVar2 + 0x1438)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1438)" ( (binary_expression "puVar2 + 0x1438" identifier + number_literal) )))) / identifier)) ;)) })) (expression_statement "fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" identifier = (cast_expression "(float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar23 * dVar26" identifier * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" else (compound_statement "{\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" { (expression_statement "uVar13 = param_2[0x15];" (assignment_expression "uVar13 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" while (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * 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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" if (parenthesized_expression "(uVar14 < 9)" ( (binary_expression "uVar14 < 9" identifier < number_literal) )) (compound_statement "{\n                uVar11 = uVar14;\n              }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar13 = 8 - uVar11;" (assignment_expression "uVar13 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar13 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar13 & 0x1f))" ( (binary_expression "bVar1 >> (uVar13 & 0x1f)" identifier >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a254;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a254;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar13;" (assignment_expression "uVar11 = uVar13" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }" if (parenthesized_expression "(uVar14 <= uVar13)" ( (binary_expression "uVar14 <= uVar13" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar14;\n            }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar13 = uVar13 - uVar11;" (assignment_expression "uVar13 = uVar13 - uVar11" identifier = (binary_expression "uVar13 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar13 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a254:\n          param_2[0x15] = uVar13;" statement_identifier : (expression_statement "param_2[0x15] = uVar13;" (assignment_expression "param_2[0x15] = uVar13" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (if_statement "if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" if (parenthesized_expression "((iVar18 == 0) && (uVar17 < uVar10))" ( (binary_expression "(iVar18 == 0) && (uVar17 < uVar10)" (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }" { (expression_statement "*pfVar20 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar20 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar20" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" else (compound_statement "{\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" { (expression_statement "dVar26 = (double)(int)uVar10;" (assignment_expression "dVar26 = (double)(int)uVar10" identifier = (cast_expression "(double)(int)uVar10" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }" { (expression_statement "dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);" (assignment_expression "dVar26 = dVar26 + *(double *)(puVar2 + 0x1418)" identifier = (binary_expression "dVar26 + *(double *)(puVar2 + 0x1418)" identifier + (pointer_expression "*(double *)(puVar2 + 0x1418)" * (cast_expression "(double *)(puVar2 + 0x1418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1418)" ( (binary_expression "puVar2 + 0x1418" identifier + number_literal) )))))) ;) })) (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (if_statement "if (dVar31 <= dVar22) goto LAB_0017ae10;" if (parenthesized_expression "(dVar31 <= dVar22)" ( (binary_expression "dVar31 <= dVar22" identifier <= identifier) )) (goto_statement "goto LAB_0017ae10;" goto statement_identifier ;)) (expression_statement "*pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;" (assignment_expression "*pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar26 * *(double *)(puVar2 + 0x1a68)" identifier * (pointer_expression "*(double *)(puVar2 + 0x1a68)" * (cast_expression "(double *)(puVar2 + 0x1a68)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a68)" ( (binary_expression "puVar2 + 0x1a68" identifier + number_literal) ))))) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) }))) (labeled_statement "LAB_0017a270:\n          uVar10 = param_2[0x15];" statement_identifier : (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" while (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * 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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" if (parenthesized_expression "(uVar14 < 9)" ( (binary_expression "uVar14 < 9" identifier < number_literal) )) (compound_statement "{\n                uVar11 = uVar14;\n              }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar10 & 0x1f))" ( (binary_expression "bVar1 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a304;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a304;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }" if (parenthesized_expression "(uVar14 <= uVar10)" ( (binary_expression "uVar14 <= uVar10" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar14;\n            }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a304:\n          param_2[0x15] = uVar10;" statement_identifier : (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "pfVar20 = (float *)(param_6 + iVar7 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar7 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar7 * 4)" ( (binary_expression "param_6 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (if_statement "if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }" if (parenthesized_expression "((iVar18 != 0) || (uVar13 <= uVar17))" ( (binary_expression "(iVar18 != 0) || (uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar13 <= uVar17)" ( (binary_expression "uVar13 <= uVar17" identifier <= identifier) ))) )) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }" { (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" identifier = (cast_expression "(double)(int)uVar13" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }" if (parenthesized_expression "((int)uVar13 < 0)" ( (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + dVar33;\n            }" { (expression_statement "dVar26 = dVar26 + dVar33;" (assignment_expression "dVar26 = dVar26 + dVar33" identifier = (binary_expression "dVar26 + dVar33" identifier + identifier)) ;) })) (goto_statement "goto LAB_0017acf8;" goto statement_identifier ;) })) (expression_statement "*pfVar15 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar15 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar15" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0017a32c:\n          uVar10 = param_2[0x15];" statement_identifier : (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" while (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" if (parenthesized_expression "(7 < uVar14)" ( (binary_expression "7 < uVar14" number_literal < identifier) )) (compound_statement "{\n                uVar11 = 8;\n              }" { (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) })) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar10 & 0x1f))" ( (binary_expression "bVar1 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a3c0;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a3c0;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }" if (parenthesized_expression "(uVar10 <= uVar14)" ( (binary_expression "uVar10 <= uVar14" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar10;\n            }" { (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a3c0:\n          param_2[0x15] = uVar10;" statement_identifier : (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (if_statement "if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }" if (parenthesized_expression "((iVar18 != 0) || (uVar13 <= uVar17))" ( (binary_expression "(iVar18 != 0) || (uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar13 <= uVar17)" ( (binary_expression "uVar13 <= uVar17" identifier <= identifier) ))) )) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }" { (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" identifier = (cast_expression "(double)(int)uVar13" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }" if (parenthesized_expression "((int)uVar13 < 0)" ( (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + dVar33;\n            }" { (expression_statement "dVar26 = dVar26 + dVar33;" (assignment_expression "dVar26 = dVar26 + dVar33" identifier = (binary_expression "dVar26 + dVar33" identifier + identifier)) ;) })) (if_statement "if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" if (parenthesized_expression "(dVar22 < dVar31)" ( (binary_expression "dVar22 < dVar31" identifier < identifier) )) (compound_statement "{\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" { (expression_statement "*pfVar20 = (float)(dVar26 * dVar29 * dVar21);" (assignment_expression "*pfVar20 = (float)(dVar26 * dVar29 * dVar21)" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)(dVar26 * dVar29 * dVar21)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar26 * dVar29 * dVar21)" ( (binary_expression "dVar26 * dVar29 * dVar21" (binary_expression "dVar26 * dVar29" identifier * identifier) * identifier) )))) ;) (if_statement "if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }" if (parenthesized_expression "((int)uVar19 < 1)" ( (binary_expression "(int)uVar19 < 1" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }" { (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_0017ac38;" goto statement_identifier ;) })) (goto_statement "goto LAB_0017a3dc;" goto statement_identifier ;) })) (labeled_statement "LAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));" statement_identifier : (expression_statement "*pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "(dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "(dVar28 / dVar22) * dVar26" (parenthesized_expression "(dVar28 / dVar22)" ( (binary_expression "dVar28 / dVar22" identifier / identifier) )) * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;)) (if_statement "if (0 < (int)uVar19) goto LAB_0017a3dc;" if (parenthesized_expression "(0 < (int)uVar19)" ( (binary_expression "0 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a3dc;" goto statement_identifier ;)) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" identifier = identifier) ;) (goto_statement "goto LAB_0017ad74;" goto statement_identifier ;) })) (expression_statement "*pfVar20 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar20 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar20" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0017a3dc:\n          uVar10 = param_2[0x15];" statement_identifier : (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" while (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" if (parenthesized_expression "(7 < uVar14)" ( (binary_expression "7 < uVar14" number_literal < identifier) )) (compound_statement "{\n                uVar11 = 8;\n              }" { (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) })) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar10 & 0x1f))" ( (binary_expression "bVar1 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a470;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a470;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }" if (parenthesized_expression "(uVar10 <= uVar14)" ( (binary_expression "uVar10 <= uVar14" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar10;\n            }" { (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a470:\n          param_2[0x15] = uVar10;" statement_identifier : (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (if_statement "if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }" if (parenthesized_expression "((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17))" ( (binary_expression "(iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) || (parenthesized_expression "(fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)" ( (comma_expression "fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17" (assignment_expression "fVar24 = (float)uVar30" identifier = (cast_expression "(float)uVar30" ( (type_descriptor "float" primitive_type) ) identifier)) , (comma_expression "dVar25 = dVar23, uVar13 <= uVar17" (assignment_expression "dVar25 = dVar23" identifier = identifier) , (binary_expression "uVar13 <= uVar17" identifier <= identifier))) ))) )) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }" { (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" identifier = (cast_expression "(double)(int)uVar13" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }" if (parenthesized_expression "((int)uVar13 < 0)" ( (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + dVar34;\n            }" { (expression_statement "dVar26 = dVar26 + dVar34;" (assignment_expression "dVar26 = dVar26 + dVar34" identifier = (binary_expression "dVar26 + dVar34" identifier + identifier)) ;) })) (goto_statement "goto LAB_0017ac38;" goto statement_identifier ;) })) }))) (if_statement "if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }" { (expression_statement "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;" (assignment_expression "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24" (pointer_expression "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar5 + 0x38) * 4)" ( (binary_expression "param_6 + *(int *)(iVar5 + 0x38) * 4" identifier + (binary_expression "*(int *)(iVar5 + 0x38) * 4" (pointer_expression "*(int *)(iVar5 + 0x38)" * (cast_expression "(int *)(iVar5 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x38)" ( (binary_expression "iVar5 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar9 * 4;" (assignment_expression "param_6 = param_6 + iVar9 * 4" identifier = (binary_expression "param_6 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal))) ;) (expression_statement "dVar23 = dVar25;" (assignment_expression "dVar23 = dVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar16 != param_4)" ( (binary_expression "iVar16 != param_4" identifier != identifier) )) ;) })) (if_statement "if (iVar4 == *(int *)puVar3) {\n      return;\n    }" if (parenthesized_expression "(iVar4 == *(int *)puVar3)" ( (binary_expression "iVar4 == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_003a9064)();" (call_expression "(*(code *)PTR___stack_chk_fail_003a9064)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_003a9064)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_003a9064" * (cast_expression "(code *)PTR___stack_chk_fail_003a9064" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" ( (binary_expression "PTR_LAB_003a88e0 + 0xdd0" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x7528" identifier + number_literal) , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x69cc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "GravityType": Some values do not have unique names */\n/* WARNING: Enum "DisposeType": Some values do not have unique names */\n/* WARNING: Enum "ChannelType": Some values do not have unique names */\n/* WARNING: Enum "PixelChannel": Some values do not have unique names */\n\nvoid ImportBGRAQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,\n                      Quantum *q)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  PixelChannelMap *pPVar5;\n  int iVar6;\n  int iVar7;\n  PixelTrait PVar8;\n  size_t sVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  size_t sVar13;\n  ssize_t i;\n  uint uVar14;\n  float *pfVar15;\n  Quantum *pQVar16;\n  uint uVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  int iVar21;\n  float *pfVar22;\n  double dVar23;\n  double dVar24;\n  float fVar26;\n  double dVar25;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  ulonglong uVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  float pixel;\n  uchar quantum [4];\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (image != (Image *)0x0) {\n    if (image->signature != 0xabacadab) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar20 = quantum_info->depth;\n    if (uVar20 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar19 = 0;\n    if (uVar20 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < (int)q) {\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      pPVar5 = image->channel_map;\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      sVar9 = image->number_channels;\n      pQVar16 = (Quantum *)0x0;\n      iVar6 = pPVar5[2].offset;\n      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = pPVar5->offset;\n      iVar12 = pPVar5[1].offset;\n      PVar8 = pPVar5[4].traits;\n      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar30 = dVar29;\n      dVar25 = dVar31;\n      dVar34 = dVar33;\n      dVar36 = dVar35;\n      do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}\n\n" comment comment comment comment (function_definition "void ImportBGRAQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,\n                      Quantum *q)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  PixelChannelMap *pPVar5;\n  int iVar6;\n  int iVar7;\n  PixelTrait PVar8;\n  size_t sVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  size_t sVar13;\n  ssize_t i;\n  uint uVar14;\n  float *pfVar15;\n  Quantum *pQVar16;\n  uint uVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  int iVar21;\n  float *pfVar22;\n  double dVar23;\n  double dVar24;\n  float fVar26;\n  double dVar25;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  ulonglong uVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  float pixel;\n  uchar quantum [4];\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (image != (Image *)0x0) {\n    if (image->signature != 0xabacadab) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar20 = quantum_info->depth;\n    if (uVar20 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar19 = 0;\n    if (uVar20 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < (int)q) {\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      pPVar5 = image->channel_map;\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      sVar9 = image->number_channels;\n      pQVar16 = (Quantum *)0x0;\n      iVar6 = pPVar5[2].offset;\n      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = pPVar5->offset;\n      iVar12 = pPVar5[1].offset;\n      PVar8 = pPVar5[4].traits;\n      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar30 = dVar29;\n      dVar25 = dVar31;\n      dVar34 = dVar33;\n      dVar36 = dVar35;\n      do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" primitive_type (function_declarator "ImportBGRAQuantum(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,\n                      Quantum *q)" identifier (parameter_list "(Image *image,QuantumInfo *quantum_info,MagickSizeType number_pixels,uchar *p,\n                      Quantum *q)" ( (parameter_declaration "Image *image" type_identifier (pointer_declarator "*image" * identifier)) , (parameter_declaration "QuantumInfo *quantum_info" type_identifier (pointer_declarator "*quantum_info" * identifier)) , (parameter_declaration "MagickSizeType number_pixels" type_identifier identifier) , (parameter_declaration "uchar *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "Quantum *q" type_identifier (pointer_declarator "*q" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  PixelChannelMap *pPVar5;\n  int iVar6;\n  int iVar7;\n  PixelTrait PVar8;\n  size_t sVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  size_t sVar13;\n  ssize_t i;\n  uint uVar14;\n  float *pfVar15;\n  Quantum *pQVar16;\n  uint uVar17;\n  byte *pbVar18;\n  int iVar19;\n  uint uVar20;\n  int iVar21;\n  float *pfVar22;\n  double dVar23;\n  double dVar24;\n  float fVar26;\n  double dVar25;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  double dVar30;\n  double dVar31;\n  ulonglong uVar32;\n  double dVar33;\n  double dVar34;\n  double dVar35;\n  double dVar36;\n  float pixel;\n  uchar quantum [4];\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (image != (Image *)0x0) {\n    if (image->signature != 0xabacadab) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar20 = quantum_info->depth;\n    if (uVar20 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar19 = 0;\n    if (uVar20 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < (int)q) {\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      pPVar5 = image->channel_map;\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      sVar9 = image->number_channels;\n      pQVar16 = (Quantum *)0x0;\n      iVar6 = pPVar5[2].offset;\n      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = pPVar5->offset;\n      iVar12 = pPVar5[1].offset;\n      PVar8 = pPVar5[4].traits;\n      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar30 = dVar29;\n      dVar25 = dVar31;\n      dVar34 = dVar33;\n      dVar36 = dVar35;\n      do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "PixelChannelMap *pPVar5;" type_identifier (pointer_declarator "*pPVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "PixelTrait PVar8;" type_identifier identifier ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "size_t sVar13;" primitive_type identifier ;) (declaration "ssize_t i;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "float *pfVar15;" primitive_type (pointer_declarator "*pfVar15" * identifier) ;) (declaration "Quantum *pQVar16;" type_identifier (pointer_declarator "*pQVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "uint uVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "float *pfVar22;" primitive_type (pointer_declarator "*pfVar22" * identifier) ;) (declaration "double dVar23;" primitive_type identifier ;) (declaration "double dVar24;" primitive_type identifier ;) (declaration "float fVar26;" primitive_type identifier ;) (declaration "double dVar25;" primitive_type identifier ;) (declaration "double dVar27;" primitive_type identifier ;) (declaration "double dVar28;" primitive_type identifier ;) (declaration "double dVar29;" primitive_type identifier ;) (declaration "double dVar30;" primitive_type identifier ;) (declaration "double dVar31;" primitive_type identifier ;) (declaration "ulonglong uVar32;" type_identifier identifier ;) (declaration "double dVar33;" primitive_type identifier ;) (declaration "double dVar34;" primitive_type identifier ;) (declaration "double dVar35;" primitive_type identifier ;) (declaration "double dVar36;" primitive_type identifier ;) (declaration "float pixel;" primitive_type identifier ;) (declaration "uchar quantum [4];" type_identifier (array_declarator "quantum [4]" identifier [ number_literal ]) ;) (expression_statement "puVar3 = PTR___stack_chk_guard_003a9230;" (assignment_expression "puVar3 = PTR___stack_chk_guard_003a9230" identifier = identifier) ;) (expression_statement "puVar2 = PTR_LAB_003a88e0;" (assignment_expression "puVar2 = PTR_LAB_003a88e0" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_003a9230;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_003a9230" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_003a9230" * (cast_expression "(int *)PTR___stack_chk_guard_003a9230" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (image != (Image *)0x0) {\n    if (image->signature != 0xabacadab) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar20 = quantum_info->depth;\n    if (uVar20 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar19 = 0;\n    if (uVar20 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < (int)q) {\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      pPVar5 = image->channel_map;\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      sVar9 = image->number_channels;\n      pQVar16 = (Quantum *)0x0;\n      iVar6 = pPVar5[2].offset;\n      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = pPVar5->offset;\n      iVar12 = pPVar5[1].offset;\n      PVar8 = pPVar5[4].traits;\n      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar30 = dVar29;\n      dVar25 = dVar31;\n      dVar34 = dVar33;\n      dVar36 = dVar35;\n      do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" if (parenthesized_expression "(image != (Image *)0x0)" ( (binary_expression "image != (Image *)0x0" identifier != (cast_expression "(Image *)0x0" ( (type_descriptor "Image *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (image->signature != 0xabacadab) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar20 = quantum_info->depth;\n    if (uVar20 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar19 = 0;\n    if (uVar20 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < (int)q) {\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      pPVar5 = image->channel_map;\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      sVar9 = image->number_channels;\n      pQVar16 = (Quantum *)0x0;\n      iVar6 = pPVar5[2].offset;\n      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = pPVar5->offset;\n      iVar12 = pPVar5[1].offset;\n      PVar8 = pPVar5[4].traits;\n      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar30 = dVar29;\n      dVar25 = dVar31;\n      dVar34 = dVar33;\n      dVar36 = dVar35;\n      do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" { (if_statement "if (image->signature != 0xabacadab) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" if (parenthesized_expression "(image->signature != 0xabacadab)" ( (binary_expression "image->signature != 0xabacadab" (field_expression "image->signature" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" { (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x7528" identifier + number_literal) , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x69cc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar20 = quantum_info->depth;" (assignment_expression "uVar20 = quantum_info->depth" identifier = (field_expression "quantum_info->depth" identifier -> field_identifier)) ;) (if_statement "if (uVar20 - 8 < 0x39) {\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();\n      return;\n    }" if (parenthesized_expression "(uVar20 - 8 < 0x39)" ( (binary_expression "uVar20 - 8 < 0x39" (binary_expression "uVar20 - 8" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00179d24 */\n                    /* WARNING: Treating indirect jump as call */\n      (*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();\n      return;\n    }" { comment comment (expression_statement "(*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))();" (call_expression "(*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234))" * (cast_expression "(code *)(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234))" ( (binary_expression "&_gp + *(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)" * (cast_expression "(int *)(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234)" ( (binary_expression "PTR_s_courses_003a88ec + (uVar20 - 8) * 4 + -0x7234" (binary_expression "PTR_s_courses_003a88ec + (uVar20 - 8) * 4" identifier + (binary_expression "(uVar20 - 8) * 4" (parenthesized_expression "(uVar20 - 8)" ( (binary_expression "uVar20 - 8" identifier - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (if_statement "if (uVar20 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" if (parenthesized_expression "(uVar20 == 0)" ( (binary_expression "uVar20 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar17 = 0;\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" else (compound_statement "{\n      uVar17 = 0;\n      if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }\n      uVar17 = uVar17 - 1;\n      uVar11 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar11;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }\n      uVar17 = uVar10 - 1;\n      iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if (uVar20 < 0x41) {\n        uVar17 = uVar20;\n      }" if (parenthesized_expression "(uVar20 < 0x41)" ( (binary_expression "uVar20 < 0x41" identifier < number_literal) )) (compound_statement "{\n        uVar17 = uVar20;\n      }" { (expression_statement "uVar17 = uVar20;" (assignment_expression "uVar17 = uVar20" identifier = identifier) ;) })) (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "uVar11 = 2 << (uVar17 & 0x1f);" (assignment_expression "uVar11 = 2 << (uVar17 & 0x1f)" identifier = (binary_expression "2 << (uVar17 & 0x1f)" number_literal << (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (expression_statement "uVar14 = 1 >> (~uVar17 & 0x1f);" (assignment_expression "uVar14 = 1 >> (~uVar17 & 0x1f)" identifier = (binary_expression "1 >> (~uVar17 & 0x1f)" number_literal >> (parenthesized_expression "(~uVar17 & 0x1f)" ( (binary_expression "~uVar17 & 0x1f" (unary_expression "~uVar17" ~ identifier) & number_literal) )))) ;) (if_statement "if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }" if (parenthesized_expression "((uVar17 & 0x20) != 0)" ( (binary_expression "(uVar17 & 0x20) != 0" (parenthesized_expression "(uVar17 & 0x20)" ( (binary_expression "uVar17 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar10 = 0;\n        uVar14 = uVar11;\n      }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar11;" (assignment_expression "uVar14 = uVar11" identifier = identifier) ;) })) (expression_statement "uVar17 = uVar10 - 1;" (assignment_expression "uVar17 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1);" (assignment_expression "iVar19 = (uint)(uVar17 < uVar10) + (uVar14 - 1)" identifier = (binary_expression "(uint)(uVar17 < uVar10) + (uVar14 - 1)" (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))) + (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )))) ;) }))) (if_statement "if (0 < (int)q) {\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      pPVar5 = image->channel_map;\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      sVar9 = image->number_channels;\n      pQVar16 = (Quantum *)0x0;\n      iVar6 = pPVar5[2].offset;\n      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = pPVar5->offset;\n      iVar12 = pPVar5[1].offset;\n      PVar8 = pPVar5[4].traits;\n      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar30 = dVar29;\n      dVar25 = dVar31;\n      dVar34 = dVar33;\n      dVar36 = dVar35;\n      do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);\n    }" if (parenthesized_expression "(0 < (int)q)" ( (binary_expression "0 < (int)q" number_literal < (cast_expression "(int)q" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      pPVar5 = image->channel_map;\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      sVar9 = image->number_channels;\n      pQVar16 = (Quantum *)0x0;\n      iVar6 = pPVar5[2].offset;\n      dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = pPVar5->offset;\n      iVar12 = pPVar5[1].offset;\n      PVar8 = pPVar5[4].traits;\n      uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar30 = dVar29;\n      dVar25 = dVar31;\n      dVar34 = dVar33;\n      dVar36 = dVar35;\n      do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);\n    }" { (expression_statement "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" ( (binary_expression "PTR_LAB_003a88e0 + 0x13f8" identifier + number_literal) ))))) ;) (expression_statement "pPVar5 = image->channel_map;" (assignment_expression "pPVar5 = image->channel_map" identifier = (field_expression "image->channel_map" identifier -> field_identifier)) ;) (expression_statement "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);" (assignment_expression "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x1a68)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a68)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a68)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a68)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a68" identifier + number_literal) ))))) ;) (expression_statement "sVar9 = image->number_channels;" (assignment_expression "sVar9 = image->number_channels" identifier = (field_expression "image->number_channels" identifier -> field_identifier)) ;) (expression_statement "pQVar16 = (Quantum *)0x0;" (assignment_expression "pQVar16 = (Quantum *)0x0" identifier = (cast_expression "(Quantum *)0x0" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar6 = pPVar5[2].offset;" (assignment_expression "iVar6 = pPVar5[2].offset" identifier = (field_expression "pPVar5[2].offset" (subscript_expression "pPVar5[2]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418);" (assignment_expression "dVar35 = *(double *)(PTR_LAB_003a88e0 + 0x1418)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1418)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1418)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1418" identifier + number_literal) ))))) ;) (expression_statement "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438);" (assignment_expression "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1438)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1438)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1438)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1438)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1438" identifier + number_literal) ))))) ;) (expression_statement "dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);" (assignment_expression "dVar23 = *(double *)(PTR_LAB_003a88e0 + 0x1a58)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a58" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = pPVar5->offset;" (assignment_expression "iVar7 = pPVar5->offset" identifier = (field_expression "pPVar5->offset" identifier -> field_identifier)) ;) (expression_statement "iVar12 = pPVar5[1].offset;" (assignment_expression "iVar12 = pPVar5[1].offset" identifier = (field_expression "pPVar5[1].offset" (subscript_expression "pPVar5[1]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "PVar8 = pPVar5[4].traits;" (assignment_expression "PVar8 = pPVar5[4].traits" identifier = (field_expression "pPVar5[4].traits" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);" (assignment_expression "uVar32 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" identifier = (binary_expression "(ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(PTR_LAB_003a88e0 + 0x1a50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a50)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a50" identifier + number_literal) ))))) ;) (expression_statement "dVar30 = dVar29;" (assignment_expression "dVar30 = dVar29" identifier = identifier) ;) (expression_statement "dVar25 = dVar31;" (assignment_expression "dVar25 = dVar31" identifier = identifier) ;) (expression_statement "dVar34 = dVar33;" (assignment_expression "dVar34 = dVar33" identifier = identifier) ;) (expression_statement "dVar36 = dVar35;" (assignment_expression "dVar36 = dVar35" identifier = identifier) ;) (do_statement "do {\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      } while (pQVar16 != q);" do (compound_statement "{\n        pbVar18 = (byte *)(number_pixels >> 0x20);\n        iVar21 = (int)number_pixels;\n        pfVar22 = (float *)(iVar21 + iVar6 * 4);\n        pfVar15 = (float *)(iVar21 + iVar12 * 4);\n        if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }\n        pQVar16 = (Quantum *)((int)pQVar16 + 1);\n        number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);\n        dVar25 = dVar27;\n      }" { (expression_statement "pbVar18 = (byte *)(number_pixels >> 0x20);" (assignment_expression "pbVar18 = (byte *)(number_pixels >> 0x20)" identifier = (cast_expression "(byte *)(number_pixels >> 0x20)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(number_pixels >> 0x20)" ( (binary_expression "number_pixels >> 0x20" identifier >> number_literal) )))) ;) (expression_statement "iVar21 = (int)number_pixels;" (assignment_expression "iVar21 = (int)number_pixels" identifier = (cast_expression "(int)number_pixels" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pfVar22 = (float *)(iVar21 + iVar6 * 4);" (assignment_expression "pfVar22 = (float *)(iVar21 + iVar6 * 4)" identifier = (cast_expression "(float *)(iVar21 + iVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + iVar6 * 4)" ( (binary_expression "iVar21 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "pfVar15 = (float *)(iVar21 + iVar12 * 4);" (assignment_expression "pfVar15 = (float *)(iVar21 + iVar12 * 4)" identifier = (cast_expression "(float *)(iVar21 + iVar12 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + iVar12 * 4)" ( (binary_expression "iVar21 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar20 < 1) {\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }" if (parenthesized_expression "((int)uVar20 < 1)" ( (binary_expression "(int)uVar20 < 1" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar28 = 0.0;\n          dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n          if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          dVar28 = 0.0;\nLAB_0017acf8:\n          dVar27 = dVar31;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }\n          *pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar20) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar22 = 0.0;\n          dVar28 = 0.0;\nLAB_0017ac38:\n          dVar27 = dVar25;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }\n          fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));\n        }" { (expression_statement "dVar28 = 0.0;" (assignment_expression "dVar28 = 0.0" identifier = number_literal) ;) (expression_statement "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);" (assignment_expression "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" (parenthesized_expression "(*(code *)PTR___floatundidf_003a8960)" ( (pointer_expression "*(code *)PTR___floatundidf_003a8960" * (cast_expression "(code *)PTR___floatundidf_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19,uVar17)" ( identifier , identifier ))))) ;) (if_statement "if (dVar34 <= dVar24) {\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }\n          else {\n            *pfVar22 = 0.0;\n          }" if (parenthesized_expression "(dVar34 <= dVar24)" ( (binary_expression "dVar34 <= dVar24" identifier <= identifier) )) (compound_statement "{\nLAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);\n            if (0 < (int)uVar20) goto LAB_0017a270;\n          }" { (labeled_statement "LAB_0017ae10:\n            *pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);" statement_identifier : (expression_statement "*pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23);" (assignment_expression "*pfVar22 = (float)((dVar29 / dVar24) * dVar28 * dVar23)" (pointer_expression "*pfVar22" * identifier) = (cast_expression "(float)((dVar29 / dVar24) * dVar28 * dVar23)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar29 / dVar24) * dVar28 * dVar23)" ( (binary_expression "(dVar29 / dVar24) * dVar28 * dVar23" (binary_expression "(dVar29 / dVar24) * dVar28" (parenthesized_expression "(dVar29 / dVar24)" ( (binary_expression "dVar29 / dVar24" identifier / identifier) )) * identifier) * identifier) )))) ;)) (if_statement "if (0 < (int)uVar20) goto LAB_0017a270;" if (parenthesized_expression "(0 < (int)uVar20)" ( (binary_expression "0 < (int)uVar20" number_literal < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a270;" goto statement_identifier ;)) }) (else_clause "else {\n            *pfVar22 = 0.0;\n          }" else (compound_statement "{\n            *pfVar22 = 0.0;\n          }" { (expression_statement "*pfVar22 = 0.0;" (assignment_expression "*pfVar22 = 0.0" (pointer_expression "*pfVar22" * identifier) = number_literal) ;) }))) (expression_statement "pfVar22 = (float *)(iVar21 + iVar7 * 4);" (assignment_expression "pfVar22 = (float *)(iVar21 + iVar7 * 4)" identifier = (cast_expression "(float *)(iVar21 + iVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + iVar7 * 4)" ( (binary_expression "iVar21 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "dVar28 = 0.0;" (assignment_expression "dVar28 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0017acf8:\n          dVar27 = dVar31;" statement_identifier : (expression_statement "dVar27 = dVar31;" (assignment_expression "dVar27 = dVar31" identifier = identifier) ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar27 = dVar29 / dVar24;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar24)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar24" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            dVar27 = dVar29 / dVar24;\n          }" { (expression_statement "dVar27 = dVar29 / dVar24;" (assignment_expression "dVar27 = dVar29 / dVar24" identifier = (binary_expression "dVar29 / dVar24" identifier / identifier)) ;) })) (expression_statement "*pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar15 = (float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar15" * identifier) = (cast_expression "(float)(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar27 * dVar28 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar27 * dVar28" identifier * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) (if_statement "if (0 < (int)uVar20) goto LAB_0017a32c;" if (parenthesized_expression "(0 < (int)uVar20)" ( (binary_expression "0 < (int)uVar20" number_literal < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a32c;" goto statement_identifier ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar24)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar24" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            dVar28 = 0.0;\n            goto LAB_0017ad4c;\n          }" { (expression_statement "dVar28 = 0.0;" (assignment_expression "dVar28 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_0017ad4c;" goto statement_identifier ;) })) (expression_statement "*pfVar22 = 0.0;" (assignment_expression "*pfVar22 = 0.0" (pointer_expression "*pfVar22" * identifier) = number_literal) ;) (expression_statement "dVar28 = 0.0;" (assignment_expression "dVar28 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0017ac38:\n          dVar27 = dVar25;" statement_identifier : (expression_statement "dVar27 = dVar25;" (assignment_expression "dVar27 = dVar25" identifier = identifier) ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar24) {\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar24)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar24" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\nLAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;\n          }" { (labeled_statement "LAB_0017ad74:\n            dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;" statement_identifier : (expression_statement "dVar25 = *(double *)(puVar2 + 0x1438) / dVar24;" (assignment_expression "dVar25 = *(double *)(puVar2 + 0x1438) / dVar24" identifier = (binary_expression "*(double *)(puVar2 + 0x1438) / dVar24" (pointer_expression "*(double *)(puVar2 + 0x1438)" * (cast_expression "(double *)(puVar2 + 0x1438)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1438)" ( (binary_expression "puVar2 + 0x1438" identifier + number_literal) )))) / identifier)) ;)) })) (expression_statement "fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "fVar26 = (float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58))" identifier = (cast_expression "(float)(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar25 * dVar28 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar25 * dVar28" identifier * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }" else (compound_statement "{\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          (quantum_info->state).bits = sVar13;\n          pfVar22 = (float *)(iVar21 + iVar7 * 4);\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }\n          *pfVar22 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;\n          uVar10 = 0;\n          uVar14 = uVar20;\n          do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          (quantum_info->state).bits = sVar13;\n          if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }\n        }" { (expression_statement "sVar13 = (quantum_info->state).bits;" (assignment_expression "sVar13 = (quantum_info->state).bits" identifier = (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar20;" (assignment_expression "uVar14 = uVar20" identifier = identifier) ;) (do_statement "do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          }" { (while_statement "while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" while (parenthesized_expression "(sVar13 == 0)" ( (binary_expression "sVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" { (expression_statement "bVar1 = *pbVar18;" (assignment_expression "bVar1 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).pixel = (uint)bVar1;" (assignment_expression "(quantum_info->state).pixel = (uint)bVar1" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" if (parenthesized_expression "(uVar14 < 9)" ( (binary_expression "uVar14 < 9" identifier < number_literal) )) (compound_statement "{\n                uVar11 = uVar14;\n              }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "sVar13 = 8 - uVar11;" (assignment_expression "sVar13 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (sVar13 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (sVar13 & 0x1f))" ( (binary_expression "bVar1 >> (sVar13 & 0x1f)" identifier >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a254;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a254;" goto statement_identifier ;)) })) (expression_statement "uVar11 = sVar13;" (assignment_expression "uVar11 = sVar13" identifier = identifier) ;) (if_statement "if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }" if (parenthesized_expression "(uVar14 <= sVar13)" ( (binary_expression "uVar14 <= sVar13" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar14;\n            }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "sVar13 = sVar13 - uVar11;" (assignment_expression "sVar13 = sVar13 - uVar11" identifier = (binary_expression "sVar13 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "(quantum_info->state).pixel >> (sVar13 & 0x1f)" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a254:\n          (quantum_info->state).bits = sVar13;" statement_identifier : (expression_statement "(quantum_info->state).bits = sVar13;" (assignment_expression "(quantum_info->state).bits = sVar13" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;)) (if_statement "if ((iVar19 == 0) && (uVar17 < uVar10)) {\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" if (parenthesized_expression "((iVar19 == 0) && (uVar17 < uVar10))" ( (binary_expression "(iVar19 == 0) && (uVar17 < uVar10)" (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n            *pfVar22 = *(float *)(puVar2 + 0x1a50);\n          }" { (expression_statement "*pfVar22 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar22 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar22" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" else (compound_statement "{\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            if (dVar33 <= dVar24) goto LAB_0017ae10;\n            *pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" { (expression_statement "dVar28 = (double)(int)uVar10;" (assignment_expression "dVar28 = (double)(int)uVar10" identifier = (cast_expression "(double)(int)uVar10" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);\n            }" { (expression_statement "dVar28 = dVar28 + *(double *)(puVar2 + 0x1418);" (assignment_expression "dVar28 = dVar28 + *(double *)(puVar2 + 0x1418)" identifier = (binary_expression "dVar28 + *(double *)(puVar2 + 0x1418)" identifier + (pointer_expression "*(double *)(puVar2 + 0x1418)" * (cast_expression "(double *)(puVar2 + 0x1418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1418)" ( (binary_expression "puVar2 + 0x1418" identifier + number_literal) )))))) ;) })) (expression_statement "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);" (assignment_expression "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" (parenthesized_expression "(*(code *)PTR___floatundidf_003a8960)" ( (pointer_expression "*(code *)PTR___floatundidf_003a8960" * (cast_expression "(code *)PTR___floatundidf_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19,uVar17)" ( identifier , identifier ))))) ;) (if_statement "if (dVar33 <= dVar24) goto LAB_0017ae10;" if (parenthesized_expression "(dVar33 <= dVar24)" ( (binary_expression "dVar33 <= dVar24" identifier <= identifier) )) (goto_statement "goto LAB_0017ae10;" goto statement_identifier ;)) (expression_statement "*pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;" (assignment_expression "*pfVar22 = (float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar22" * identifier) = (cast_expression "(float)(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar28 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar28 * *(double *)(puVar2 + 0x1a68)" identifier * (pointer_expression "*(double *)(puVar2 + 0x1a68)" * (cast_expression "(double *)(puVar2 + 0x1a68)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a68)" ( (binary_expression "puVar2 + 0x1a68" identifier + number_literal) ))))) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) }))) (labeled_statement "LAB_0017a270:\n          sVar13 = (quantum_info->state).bits;" statement_identifier : (expression_statement "sVar13 = (quantum_info->state).bits;" (assignment_expression "sVar13 = (quantum_info->state).bits" identifier = (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar20;" (assignment_expression "uVar14 = uVar20" identifier = identifier) ;) (do_statement "do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = sVar13;\n            if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          }" { (while_statement "while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" while (parenthesized_expression "(sVar13 == 0)" ( (binary_expression "sVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *pbVar18;\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" { (expression_statement "bVar1 = *pbVar18;" (assignment_expression "bVar1 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).pixel = (uint)bVar1;" (assignment_expression "(quantum_info->state).pixel = (uint)bVar1" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" if (parenthesized_expression "(uVar14 < 9)" ( (binary_expression "uVar14 < 9" identifier < number_literal) )) (compound_statement "{\n                uVar11 = uVar14;\n              }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "sVar13 = 8 - uVar11;" (assignment_expression "sVar13 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (sVar13 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (sVar13 & 0x1f))" ( (binary_expression "bVar1 >> (sVar13 & 0x1f)" identifier >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a304;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a304;" goto statement_identifier ;)) })) (expression_statement "uVar11 = sVar13;" (assignment_expression "uVar11 = sVar13" identifier = identifier) ;) (if_statement "if (uVar14 <= sVar13) {\n              uVar11 = uVar14;\n            }" if (parenthesized_expression "(uVar14 <= sVar13)" ( (binary_expression "uVar14 <= sVar13" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar14;\n            }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "sVar13 = sVar13 - uVar11;" (assignment_expression "sVar13 = sVar13 - uVar11" identifier = (binary_expression "sVar13 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "(quantum_info->state).pixel >> (sVar13 & 0x1f)" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a304:\n          (quantum_info->state).bits = sVar13;" statement_identifier : (expression_statement "(quantum_info->state).bits = sVar13;" (assignment_expression "(quantum_info->state).bits = sVar13" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;)) (expression_statement "pfVar22 = (float *)(iVar21 + iVar7 * 4);" (assignment_expression "pfVar22 = (float *)(iVar21 + iVar7 * 4)" identifier = (cast_expression "(float *)(iVar21 + iVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + iVar7 * 4)" ( (binary_expression "iVar21 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (if_statement "if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }" if (parenthesized_expression "((iVar19 != 0) || (uVar10 <= uVar17))" ( (binary_expression "(iVar19 != 0) || (uVar10 <= uVar17)" (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar10 <= uVar17)" ( (binary_expression "uVar10 <= uVar17" identifier <= identifier) ))) )) (compound_statement "{\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            goto LAB_0017acf8;\n          }" { (expression_statement "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);" (assignment_expression "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" (parenthesized_expression "(*(code *)PTR___floatundidf_003a8960)" ( (pointer_expression "*(code *)PTR___floatundidf_003a8960" * (cast_expression "(code *)PTR___floatundidf_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar28 = (double)(int)uVar10;" (assignment_expression "dVar28 = (double)(int)uVar10" identifier = (cast_expression "(double)(int)uVar10" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar28 = dVar28 + dVar35;\n            }" { (expression_statement "dVar28 = dVar28 + dVar35;" (assignment_expression "dVar28 = dVar28 + dVar35" identifier = (binary_expression "dVar28 + dVar35" identifier + identifier)) ;) })) (goto_statement "goto LAB_0017acf8;" goto statement_identifier ;) })) (expression_statement "*pfVar15 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar15 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar15" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0017a32c:\n          sVar13 = (quantum_info->state).bits;" statement_identifier : (expression_statement "sVar13 = (quantum_info->state).bits;" (assignment_expression "sVar13 = (quantum_info->state).bits" identifier = (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar20;" (assignment_expression "uVar14 = uVar20" identifier = identifier) ;) (do_statement "do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          }" { (while_statement "while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" while (parenthesized_expression "(sVar13 == 0)" ( (binary_expression "sVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" { (expression_statement "bVar1 = *pbVar18;" (assignment_expression "bVar1 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" if (parenthesized_expression "(7 < uVar14)" ( (binary_expression "7 < uVar14" number_literal < identifier) )) (compound_statement "{\n                uVar11 = 8;\n              }" { (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) })) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).pixel = (uint)bVar1;" (assignment_expression "(quantum_info->state).pixel = (uint)bVar1" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "sVar13 = 8 - uVar11;" (assignment_expression "sVar13 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (sVar13 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (sVar13 & 0x1f))" ( (binary_expression "bVar1 >> (sVar13 & 0x1f)" identifier >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a3c0;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a3c0;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }" if (parenthesized_expression "(sVar13 <= uVar14)" ( (binary_expression "sVar13 <= uVar14" identifier <= identifier) )) (compound_statement "{\n              uVar11 = sVar13;\n            }" { (expression_statement "uVar11 = sVar13;" (assignment_expression "uVar11 = sVar13" identifier = identifier) ;) })) (expression_statement "sVar13 = sVar13 - uVar11;" (assignment_expression "sVar13 = sVar13 - uVar11" identifier = (binary_expression "sVar13 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "(quantum_info->state).pixel >> (sVar13 & 0x1f)" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a3c0:\n          (quantum_info->state).bits = sVar13;" statement_identifier : (expression_statement "(quantum_info->state).bits = sVar13;" (assignment_expression "(quantum_info->state).bits = sVar13" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;)) (if_statement "if ((iVar19 != 0) || (uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }" if (parenthesized_expression "((iVar19 != 0) || (uVar10 <= uVar17))" ( (binary_expression "(iVar19 != 0) || (uVar10 <= uVar17)" (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar10 <= uVar17)" ( (binary_expression "uVar10 <= uVar17" identifier <= identifier) ))) )) (compound_statement "{\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }\n            if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar20) goto LAB_0017a3dc;\n            dVar28 = 0.0;\n            dVar27 = dVar25;\n            goto LAB_0017ad74;\n          }" { (expression_statement "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);" (assignment_expression "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" (parenthesized_expression "(*(code *)PTR___floatundidf_003a8960)" ( (pointer_expression "*(code *)PTR___floatundidf_003a8960" * (cast_expression "(code *)PTR___floatundidf_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar28 = (double)(int)uVar10;" (assignment_expression "dVar28 = (double)(int)uVar10" identifier = (cast_expression "(double)(int)uVar10" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar35;\n            }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar28 = dVar28 + dVar35;\n            }" { (expression_statement "dVar28 = dVar28 + dVar35;" (assignment_expression "dVar28 = dVar28 + dVar35" identifier = (binary_expression "dVar28 + dVar35" identifier + identifier)) ;) })) (if_statement "if (dVar24 < dVar33) {\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" if (parenthesized_expression "(dVar24 < dVar33)" ( (binary_expression "dVar24 < dVar33" identifier < identifier) )) (compound_statement "{\n              *pfVar22 = (float)(dVar28 * dVar31 * dVar23);\n              if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" { (expression_statement "*pfVar22 = (float)(dVar28 * dVar31 * dVar23);" (assignment_expression "*pfVar22 = (float)(dVar28 * dVar31 * dVar23)" (pointer_expression "*pfVar22" * identifier) = (cast_expression "(float)(dVar28 * dVar31 * dVar23)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar28 * dVar31 * dVar23)" ( (binary_expression "dVar28 * dVar31 * dVar23" (binary_expression "dVar28 * dVar31" identifier * identifier) * identifier) )))) ;) (if_statement "if ((int)uVar20 < 1) {\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }" if (parenthesized_expression "((int)uVar20 < 1)" ( (binary_expression "(int)uVar20 < 1" (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                dVar28 = 0.0;\n                goto LAB_0017ac38;\n              }" { (expression_statement "dVar28 = 0.0;" (assignment_expression "dVar28 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_0017ac38;" goto statement_identifier ;) })) (goto_statement "goto LAB_0017a3dc;" goto statement_identifier ;) })) (labeled_statement "LAB_0017ad4c:\n            *pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));" statement_identifier : (expression_statement "*pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar22 = (float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar22" * identifier) = (cast_expression "(float)((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "(dVar30 / dVar24) * dVar28 * *(double *)(puVar2 + 0x1a58)" (binary_expression "(dVar30 / dVar24) * dVar28" (parenthesized_expression "(dVar30 / dVar24)" ( (binary_expression "dVar30 / dVar24" identifier / identifier) )) * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;)) (if_statement "if (0 < (int)uVar20) goto LAB_0017a3dc;" if (parenthesized_expression "(0 < (int)uVar20)" ( (binary_expression "0 < (int)uVar20" number_literal < (cast_expression "(int)uVar20" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a3dc;" goto statement_identifier ;)) (expression_statement "dVar28 = 0.0;" (assignment_expression "dVar28 = 0.0" identifier = number_literal) ;) (expression_statement "dVar27 = dVar25;" (assignment_expression "dVar27 = dVar25" identifier = identifier) ;) (goto_statement "goto LAB_0017ad74;" goto statement_identifier ;) })) (expression_statement "*pfVar22 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar22 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar22" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0017a3dc:\n          sVar13 = (quantum_info->state).bits;" statement_identifier : (expression_statement "sVar13 = (quantum_info->state).bits;" (assignment_expression "sVar13 = (quantum_info->state).bits" identifier = (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar20;" (assignment_expression "uVar14 = uVar20" identifier = identifier) ;) (do_statement "do {\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }\n            sVar13 = sVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          }" { (while_statement "while (sVar13 == 0) {\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" while (parenthesized_expression "(sVar13 == 0)" ( (binary_expression "sVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *pbVar18;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              pbVar18 = pbVar18 + 1;\n              (quantum_info->state).pixel = (uint)bVar1;\n              sVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" { (expression_statement "bVar1 = *pbVar18;" (assignment_expression "bVar1 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" if (parenthesized_expression "(7 < uVar14)" ( (binary_expression "7 < uVar14" number_literal < identifier) )) (compound_statement "{\n                uVar11 = 8;\n              }" { (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) })) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "(quantum_info->state).pixel = (uint)bVar1;" (assignment_expression "(quantum_info->state).pixel = (uint)bVar1" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "sVar13 = 8 - uVar11;" (assignment_expression "sVar13 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (sVar13 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (sVar13 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (sVar13 & 0x1f))" ( (binary_expression "bVar1 >> (sVar13 & 0x1f)" identifier >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a470;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a470;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (sVar13 <= uVar14) {\n              uVar11 = sVar13;\n            }" if (parenthesized_expression "(sVar13 <= uVar14)" ( (binary_expression "sVar13 <= uVar14" identifier <= identifier) )) (compound_statement "{\n              uVar11 = sVar13;\n            }" { (expression_statement "uVar11 = sVar13;" (assignment_expression "uVar11 = sVar13" identifier = identifier) ;) })) (expression_statement "sVar13 = sVar13 - uVar11;" (assignment_expression "sVar13 = sVar13 - uVar11" identifier = (binary_expression "sVar13 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (quantum_info->state).pixel >> (sVar13 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "(quantum_info->state).pixel >> (sVar13 & 0x1f)" (field_expression "(quantum_info->state).pixel" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) >> (parenthesized_expression "(sVar13 & 0x1f)" ( (binary_expression "sVar13 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a470:\n          (quantum_info->state).bits = sVar13;" statement_identifier : (expression_statement "(quantum_info->state).bits = sVar13;" (assignment_expression "(quantum_info->state).bits = sVar13" (field_expression "(quantum_info->state).bits" (parenthesized_expression "(quantum_info->state)" ( (field_expression "quantum_info->state" identifier -> field_identifier) )) . field_identifier) = identifier) ;)) (if_statement "if ((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)) {\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }" if (parenthesized_expression "((iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17))" ( (binary_expression "(iVar19 != 0) || (fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)" (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) || (parenthesized_expression "(fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17)" ( (comma_expression "fVar26 = (float)uVar32, dVar27 = dVar25, uVar10 <= uVar17" (assignment_expression "fVar26 = (float)uVar32" identifier = (cast_expression "(float)uVar32" ( (type_descriptor "float" primitive_type) ) identifier)) , (comma_expression "dVar27 = dVar25, uVar10 <= uVar17" (assignment_expression "dVar27 = dVar25" identifier = identifier) , (binary_expression "uVar10 <= uVar17" identifier <= identifier))) ))) )) (compound_statement "{\n            dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);\n            dVar28 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }\n            goto LAB_0017ac38;\n          }" { (expression_statement "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17);" (assignment_expression "dVar24 = (double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR___floatundidf_003a8960)(iVar19,uVar17)" (parenthesized_expression "(*(code *)PTR___floatundidf_003a8960)" ( (pointer_expression "*(code *)PTR___floatundidf_003a8960" * (cast_expression "(code *)PTR___floatundidf_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar19,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar28 = (double)(int)uVar10;" (assignment_expression "dVar28 = (double)(int)uVar10" identifier = (cast_expression "(double)(int)uVar10" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar10 < 0) {\n              dVar28 = dVar28 + dVar36;\n            }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar28 = dVar28 + dVar36;\n            }" { (expression_statement "dVar28 = dVar28 + dVar36;" (assignment_expression "dVar28 = dVar28 + dVar36" identifier = (binary_expression "dVar28 + dVar36" identifier + identifier)) ;) })) (goto_statement "goto LAB_0017ac38;" goto statement_identifier ;) })) }))) (if_statement "if (PVar8 != UndefinedPixelTrait) {\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }" if (parenthesized_expression "(PVar8 != UndefinedPixelTrait)" ( (binary_expression "PVar8 != UndefinedPixelTrait" identifier != identifier) )) (compound_statement "{\n          *(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;\n        }" { (expression_statement "*(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26;" (assignment_expression "*(float *)(iVar21 + pPVar5[4].offset * 4) = fVar26" (pointer_expression "*(float *)(iVar21 + pPVar5[4].offset * 4)" * (cast_expression "(float *)(iVar21 + pPVar5[4].offset * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + pPVar5[4].offset * 4)" ( (binary_expression "iVar21 + pPVar5[4].offset * 4" identifier + (binary_expression "pPVar5[4].offset * 4" (field_expression "pPVar5[4].offset" (subscript_expression "pPVar5[4]" identifier [ number_literal ]) . field_identifier) * number_literal)) )))) = identifier) ;) })) (expression_statement "pQVar16 = (Quantum *)((int)pQVar16 + 1);" (assignment_expression "pQVar16 = (Quantum *)((int)pQVar16 + 1)" identifier = (cast_expression "(Quantum *)((int)pQVar16 + 1)" ( (type_descriptor "Quantum *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pQVar16 + 1)" ( (binary_expression "(int)pQVar16 + 1" (cast_expression "(int)pQVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4);" (assignment_expression "number_pixels = CONCAT44(pbVar18,iVar21 + sVar9 * 4)" identifier = (call_expression "CONCAT44(pbVar18,iVar21 + sVar9 * 4)" identifier (argument_list "(pbVar18,iVar21 + sVar9 * 4)" ( identifier , (binary_expression "iVar21 + sVar9 * 4" identifier + (binary_expression "sVar9 * 4" identifier * number_literal)) )))) ;) (expression_statement "dVar25 = dVar27;" (assignment_expression "dVar25 = dVar27" identifier = identifier) ;) }) while (parenthesized_expression "(pQVar16 != q)" ( (binary_expression "pQVar16 != q" identifier != identifier) )) ;) })) (if_statement "if (iVar4 == *(int *)puVar3) {\n      return;\n    }" if (parenthesized_expression "(iVar4 == *(int *)puVar3)" ( (binary_expression "iVar4 == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_003a9064)();" (call_expression "(*(code *)PTR___stack_chk_fail_003a9064)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_003a9064)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_003a9064" * (cast_expression "(code *)PTR___stack_chk_fail_003a9064" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" ( (binary_expression "PTR_LAB_003a88e0 + 0xdd0" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x7528" identifier + number_literal) , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x69cc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}\n\n" (function_definition "void FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" primitive_type (function_declarator "FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )" identifier (parameter_list "(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "byte *param_5" type_identifier (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int param_6" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "float *pfVar15;" primitive_type (pointer_declarator "*pfVar15" * identifier) ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "float *pfVar20;" primitive_type (pointer_declarator "*pfVar20" * identifier) ;) (declaration "double dVar21;" primitive_type identifier ;) (declaration "double dVar22;" primitive_type identifier ;) (declaration "float fVar24;" primitive_type identifier ;) (declaration "double dVar23;" primitive_type identifier ;) (declaration "double dVar25;" primitive_type identifier ;) (declaration "double dVar26;" primitive_type identifier ;) (declaration "double dVar27;" primitive_type identifier ;) (declaration "double dVar28;" primitive_type identifier ;) (declaration "double dVar29;" primitive_type identifier ;) (declaration "ulonglong uVar30;" type_identifier identifier ;) (declaration "double dVar31;" primitive_type identifier ;) (declaration "double dVar32;" primitive_type identifier ;) (declaration "double dVar33;" primitive_type identifier ;) (declaration "double dVar34;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_003a9230;" (assignment_expression "puVar3 = PTR___stack_chk_guard_003a9230" identifier = identifier) ;) (expression_statement "puVar2 = PTR_LAB_003a88e0;" (assignment_expression "puVar2 = PTR_LAB_003a88e0" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_003a9230;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_003a9230" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_003a9230" * (cast_expression "(int *)PTR___stack_chk_guard_003a9230" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" if (parenthesized_expression "(param_1 != 0)" ( (binary_expression "param_1 != 0" identifier != number_literal) )) (compound_statement "{\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" { (if_statement "if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x336c) != -0x54535255)" ( (binary_expression "*(int *)(param_1 + 0x336c) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x336c)" * (cast_expression "(int *)(param_1 + 0x336c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x336c)" ( (binary_expression "param_1 + 0x336c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" { (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" ( (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x7528" identifier + number_literal) , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x69cc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })) (expression_statement "uVar19 = *param_2;" (assignment_expression "uVar19 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }" if (parenthesized_expression "(uVar19 - 8 < 0x39)" ( (binary_expression "uVar19 - 8 < 0x39" (binary_expression "uVar19 - 8" identifier - number_literal) < number_literal) )) (compound_statement "{\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }" { (expression_statement "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();" (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" ( (binary_expression "&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" * (cast_expression "(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" ( (binary_expression "PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234" (binary_expression "PTR_s_courses_003a88ec + (uVar19 - 8) * 4" identifier + (binary_expression "(uVar19 - 8) * 4" (parenthesized_expression "(uVar19 - 8)" ( (binary_expression "uVar19 - 8" identifier - number_literal) )) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" identifier = number_literal) ;) (if_statement "if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" if (parenthesized_expression "(uVar19 == 0)" ( (binary_expression "uVar19 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar17 = 0;\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" else (compound_statement "{\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" { (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (if_statement "if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }" if (parenthesized_expression "(uVar19 < 0x41)" ( (binary_expression "uVar19 < 0x41" identifier < number_literal) )) (compound_statement "{\n        uVar17 = uVar19;\n      }" { (expression_statement "uVar17 = uVar19;" (assignment_expression "uVar17 = uVar19" identifier = identifier) ;) })) (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" identifier = (binary_expression "uVar17 - 1" identifier - number_literal)) ;) (expression_statement "uVar13 = 2 << (uVar17 & 0x1f);" (assignment_expression "uVar13 = 2 << (uVar17 & 0x1f)" identifier = (binary_expression "2 << (uVar17 & 0x1f)" number_literal << (parenthesized_expression "(uVar17 & 0x1f)" ( (binary_expression "uVar17 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = uVar13;" (assignment_expression "uVar10 = uVar13" identifier = identifier) ;) (expression_statement "uVar14 = 1 >> (~uVar17 & 0x1f);" (assignment_expression "uVar14 = 1 >> (~uVar17 & 0x1f)" identifier = (binary_expression "1 >> (~uVar17 & 0x1f)" number_literal >> (parenthesized_expression "(~uVar17 & 0x1f)" ( (binary_expression "~uVar17 & 0x1f" (unary_expression "~uVar17" ~ identifier) & number_literal) )))) ;) (if_statement "if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }" if (parenthesized_expression "((uVar17 & 0x20) != 0)" ( (binary_expression "(uVar17 & 0x20) != 0" (parenthesized_expression "(uVar17 & 0x20)" ( (binary_expression "uVar17 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar13;" (assignment_expression "uVar14 = uVar13" identifier = identifier) ;) })) (expression_statement "uVar17 = uVar10 - 1;" (assignment_expression "uVar17 = uVar10 - 1" identifier = (binary_expression "uVar10 - 1" identifier - number_literal)) ;) (expression_statement "iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);" (assignment_expression "iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1)" identifier = (binary_expression "(uint)(uVar17 < uVar10) + (uVar14 - 1)" (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))) + (parenthesized_expression "(uVar14 - 1)" ( (binary_expression "uVar14 - 1" identifier - number_literal) )))) ;) }))) (if_statement "if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }" if (parenthesized_expression "(0 < param_4)" ( (binary_expression "0 < param_4" number_literal < identifier) )) (compound_statement "{\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }" { (expression_statement "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" ( (binary_expression "PTR_LAB_003a88e0 + 0x13f8" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x2d0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2d0)" identifier = (pointer_expression "*(int *)(param_1 + 0x2d0)" * (cast_expression "(int *)(param_1 + 0x2d0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2d0)" ( (binary_expression "param_1 + 0x2d0" identifier + number_literal) ))))) ;) (expression_statement "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);" (assignment_expression "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a68)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a68)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a68)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a68" identifier + number_literal) ))))) ;) (expression_statement "iVar9 = *(int *)(param_1 + 0x2c0);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x2c0)" identifier = (pointer_expression "*(int *)(param_1 + 0x2c0)" * (cast_expression "(int *)(param_1 + 0x2c0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c0)" ( (binary_expression "param_1 + 0x2c0" identifier + number_literal) ))))) ;) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = *(int *)(iVar5 + 0x20);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x20)" identifier = (pointer_expression "*(int *)(iVar5 + 0x20)" * (cast_expression "(int *)(iVar5 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x20)" ( (binary_expression "iVar5 + 0x20" identifier + number_literal) ))))) ;) (expression_statement "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);" (assignment_expression "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1418)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1418)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1418" identifier + number_literal) ))))) ;) (expression_statement "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);" (assignment_expression "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1438)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1438)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1438)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1438" identifier + number_literal) ))))) ;) (expression_statement "dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);" (assignment_expression "dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58)" identifier = (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" * (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a58" identifier + number_literal) ))))) ;) (expression_statement "iVar7 = *(int *)(iVar5 + 8);" (assignment_expression "iVar7 = *(int *)(iVar5 + 8)" identifier = (pointer_expression "*(int *)(iVar5 + 8)" * (cast_expression "(int *)(iVar5 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 8)" ( (binary_expression "iVar5 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar5 + 0x14);" (assignment_expression "iVar12 = *(int *)(iVar5 + 0x14)" identifier = (pointer_expression "*(int *)(iVar5 + 0x14)" * (cast_expression "(int *)(iVar5 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x14)" ( (binary_expression "iVar5 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(iVar5 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar5 + 0x34)" identifier = (pointer_expression "*(int *)(iVar5 + 0x34)" * (cast_expression "(int *)(iVar5 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x34)" ( (binary_expression "iVar5 + 0x34" identifier + number_literal) ))))) ;) (expression_statement "uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);" (assignment_expression "uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" identifier = (binary_expression "(ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" (parenthesized_expression "(ulonglong)" ( identifier )) * (cast_expression "(uint *)(PTR_LAB_003a88e0 + 0x1a50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a50)" ( (binary_expression "PTR_LAB_003a88e0 + 0x1a50" identifier + number_literal) ))))) ;) (expression_statement "dVar28 = dVar27;" (assignment_expression "dVar28 = dVar27" identifier = identifier) ;) (expression_statement "dVar23 = dVar29;" (assignment_expression "dVar23 = dVar29" identifier = identifier) ;) (expression_statement "dVar32 = dVar31;" (assignment_expression "dVar32 = dVar31" identifier = identifier) ;) (expression_statement "dVar34 = dVar33;" (assignment_expression "dVar34 = dVar33" identifier = identifier) ;) (do_statement "do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);" do (compound_statement "{\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      }" { (expression_statement "pfVar20 = (float *)(param_6 + iVar6 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar6 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar6 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar6 * 4)" ( (binary_expression "param_6 + iVar6 * 4" identifier + (binary_expression "iVar6 * 4" identifier * number_literal)) )))) ;) (expression_statement "pfVar15 = (float *)(param_6 + iVar12 * 4);" (assignment_expression "pfVar15 = (float *)(param_6 + iVar12 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar12 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar12 * 4)" ( (binary_expression "param_6 + iVar12 * 4" identifier + (binary_expression "iVar12 * 4" identifier * number_literal)) )))) ;) (if_statement "if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" if (parenthesized_expression "((int)uVar19 < 1)" ( (binary_expression "(int)uVar19 < 1" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }" { (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (if_statement "if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }" if (parenthesized_expression "(dVar32 <= dVar22)" ( (binary_expression "dVar32 <= dVar22" identifier <= identifier) )) (compound_statement "{\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }" { (labeled_statement "LAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);" statement_identifier : (expression_statement "*pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);" (assignment_expression "*pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21)" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)((dVar27 / dVar22) * dVar26 * dVar21)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar27 / dVar22) * dVar26 * dVar21)" ( (binary_expression "(dVar27 / dVar22) * dVar26 * dVar21" (binary_expression "(dVar27 / dVar22) * dVar26" (parenthesized_expression "(dVar27 / dVar22)" ( (binary_expression "dVar27 / dVar22" identifier / identifier) )) * identifier) * identifier) )))) ;)) (if_statement "if (0 < (int)uVar19) goto LAB_0017a270;" if (parenthesized_expression "(0 < (int)uVar19)" ( (binary_expression "0 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a270;" goto statement_identifier ;)) }) (else_clause "else {\n            *pfVar20 = 0.0;\n          }" else (compound_statement "{\n            *pfVar20 = 0.0;\n          }" { (expression_statement "*pfVar20 = 0.0;" (assignment_expression "*pfVar20 = 0.0" (pointer_expression "*pfVar20" * identifier) = number_literal) ;) }))) (expression_statement "pfVar20 = (float *)(param_6 + iVar7 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar7 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar7 * 4)" ( (binary_expression "param_6 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0017acf8:\n          dVar25 = dVar29;" statement_identifier : (expression_statement "dVar25 = dVar29;" (assignment_expression "dVar25 = dVar29" identifier = identifier) ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            dVar25 = dVar27 / dVar22;\n          }" { (expression_statement "dVar25 = dVar27 / dVar22;" (assignment_expression "dVar25 = dVar27 / dVar22" identifier = (binary_expression "dVar27 / dVar22" identifier / identifier)) ;) })) (expression_statement "*pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar15" * identifier) = (cast_expression "(float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar25 * dVar26" identifier * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) (if_statement "if (0 < (int)uVar19) goto LAB_0017a32c;" if (parenthesized_expression "(0 < (int)uVar19)" ( (binary_expression "0 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a32c;" goto statement_identifier ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }" { (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_0017ad4c;" goto statement_identifier ;) })) (expression_statement "*pfVar20 = 0.0;" (assignment_expression "*pfVar20 = 0.0" (pointer_expression "*pfVar20" * identifier) = number_literal) ;) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (labeled_statement "LAB_0017ac38:\n          dVar25 = dVar23;" statement_identifier : (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" identifier = identifier) ;)) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }" if (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" ( (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" * (cast_expression "(double *)(puVar2 + 0x13f8)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x13f8)" ( (binary_expression "puVar2 + 0x13f8" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }" { (labeled_statement "LAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;" statement_identifier : (expression_statement "dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;" (assignment_expression "dVar23 = *(double *)(puVar2 + 0x1438) / dVar22" identifier = (binary_expression "*(double *)(puVar2 + 0x1438) / dVar22" (pointer_expression "*(double *)(puVar2 + 0x1438)" * (cast_expression "(double *)(puVar2 + 0x1438)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1438)" ( (binary_expression "puVar2 + 0x1438" identifier + number_literal) )))) / identifier)) ;)) })) (expression_statement "fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" identifier = (cast_expression "(float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar23 * dVar26" identifier * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) }) (else_clause "else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" else (compound_statement "{\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" { (expression_statement "uVar13 = param_2[0x15];" (assignment_expression "uVar13 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" while (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * 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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" if (parenthesized_expression "(uVar14 < 9)" ( (binary_expression "uVar14 < 9" identifier < number_literal) )) (compound_statement "{\n                uVar11 = uVar14;\n              }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar13 = 8 - uVar11;" (assignment_expression "uVar13 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar13 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar13 & 0x1f))" ( (binary_expression "bVar1 >> (uVar13 & 0x1f)" identifier >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a254;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a254;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar13;" (assignment_expression "uVar11 = uVar13" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }" if (parenthesized_expression "(uVar14 <= uVar13)" ( (binary_expression "uVar14 <= uVar13" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar14;\n            }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar13 = uVar13 - uVar11;" (assignment_expression "uVar13 = uVar13 - uVar11" identifier = (binary_expression "uVar13 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar13 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar13 & 0x1f)" ( (binary_expression "uVar13 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar10 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a254:\n          param_2[0x15] = uVar13;" statement_identifier : (expression_statement "param_2[0x15] = uVar13;" (assignment_expression "param_2[0x15] = uVar13" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (if_statement "if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" if (parenthesized_expression "((iVar18 == 0) && (uVar17 < uVar10))" ( (binary_expression "(iVar18 == 0) && (uVar17 < uVar10)" (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))) )) (compound_statement "{\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }" { (expression_statement "*pfVar20 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar20 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar20" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" else (compound_statement "{\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" { (expression_statement "dVar26 = (double)(int)uVar10;" (assignment_expression "dVar26 = (double)(int)uVar10" identifier = (cast_expression "(double)(int)uVar10" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }" if (parenthesized_expression "((int)uVar10 < 0)" ( (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }" { (expression_statement "dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);" (assignment_expression "dVar26 = dVar26 + *(double *)(puVar2 + 0x1418)" identifier = (binary_expression "dVar26 + *(double *)(puVar2 + 0x1418)" identifier + (pointer_expression "*(double *)(puVar2 + 0x1418)" * (cast_expression "(double *)(puVar2 + 0x1418)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1418)" ( (binary_expression "puVar2 + 0x1418" identifier + number_literal) )))))) ;) })) (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (if_statement "if (dVar31 <= dVar22) goto LAB_0017ae10;" if (parenthesized_expression "(dVar31 <= dVar22)" ( (binary_expression "dVar31 <= dVar22" identifier <= identifier) )) (goto_statement "goto LAB_0017ae10;" goto statement_identifier ;)) (expression_statement "*pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;" (assignment_expression "*pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar26 * *(double *)(puVar2 + 0x1a68)" identifier * (pointer_expression "*(double *)(puVar2 + 0x1a68)" * (cast_expression "(double *)(puVar2 + 0x1a68)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a68)" ( (binary_expression "puVar2 + 0x1a68" identifier + number_literal) ))))) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;) }))) (labeled_statement "LAB_0017a270:\n          uVar10 = param_2[0x15];" statement_identifier : (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" while (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * 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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" if (parenthesized_expression "(uVar14 < 9)" ( (binary_expression "uVar14 < 9" identifier < number_literal) )) (compound_statement "{\n                uVar11 = uVar14;\n              }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar10 & 0x1f))" ( (binary_expression "bVar1 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a304;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a304;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) (if_statement "if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }" if (parenthesized_expression "(uVar14 <= uVar10)" ( (binary_expression "uVar14 <= uVar10" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar14;\n            }" { (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) })) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a304:\n          param_2[0x15] = uVar10;" statement_identifier : (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "pfVar20 = (float *)(param_6 + iVar7 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar7 * 4)" identifier = (cast_expression "(float *)(param_6 + iVar7 * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar7 * 4)" ( (binary_expression "param_6 + iVar7 * 4" identifier + (binary_expression "iVar7 * 4" identifier * number_literal)) )))) ;) (if_statement "if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }" if (parenthesized_expression "((iVar18 != 0) || (uVar13 <= uVar17))" ( (binary_expression "(iVar18 != 0) || (uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar13 <= uVar17)" ( (binary_expression "uVar13 <= uVar17" identifier <= identifier) ))) )) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }" { (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" identifier = (cast_expression "(double)(int)uVar13" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }" if (parenthesized_expression "((int)uVar13 < 0)" ( (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + dVar33;\n            }" { (expression_statement "dVar26 = dVar26 + dVar33;" (assignment_expression "dVar26 = dVar26 + dVar33" identifier = (binary_expression "dVar26 + dVar33" identifier + identifier)) ;) })) (goto_statement "goto LAB_0017acf8;" goto statement_identifier ;) })) (expression_statement "*pfVar15 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar15 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar15" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0017a32c:\n          uVar10 = param_2[0x15];" statement_identifier : (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" while (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" if (parenthesized_expression "(7 < uVar14)" ( (binary_expression "7 < uVar14" number_literal < identifier) )) (compound_statement "{\n                uVar11 = 8;\n              }" { (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) })) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar10 & 0x1f))" ( (binary_expression "bVar1 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a3c0;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a3c0;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }" if (parenthesized_expression "(uVar10 <= uVar14)" ( (binary_expression "uVar10 <= uVar14" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar10;\n            }" { (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a3c0:\n          param_2[0x15] = uVar10;" statement_identifier : (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (if_statement "if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }" if (parenthesized_expression "((iVar18 != 0) || (uVar13 <= uVar17))" ( (binary_expression "(iVar18 != 0) || (uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) || (parenthesized_expression "(uVar13 <= uVar17)" ( (binary_expression "uVar13 <= uVar17" identifier <= identifier) ))) )) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }" { (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" identifier = (cast_expression "(double)(int)uVar13" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }" if (parenthesized_expression "((int)uVar13 < 0)" ( (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + dVar33;\n            }" { (expression_statement "dVar26 = dVar26 + dVar33;" (assignment_expression "dVar26 = dVar26 + dVar33" identifier = (binary_expression "dVar26 + dVar33" identifier + identifier)) ;) })) (if_statement "if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" if (parenthesized_expression "(dVar22 < dVar31)" ( (binary_expression "dVar22 < dVar31" identifier < identifier) )) (compound_statement "{\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" { (expression_statement "*pfVar20 = (float)(dVar26 * dVar29 * dVar21);" (assignment_expression "*pfVar20 = (float)(dVar26 * dVar29 * dVar21)" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)(dVar26 * dVar29 * dVar21)" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "(dVar26 * dVar29 * dVar21)" ( (binary_expression "dVar26 * dVar29 * dVar21" (binary_expression "dVar26 * dVar29" identifier * identifier) * identifier) )))) ;) (if_statement "if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }" if (parenthesized_expression "((int)uVar19 < 1)" ( (binary_expression "(int)uVar19 < 1" (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }" { (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (goto_statement "goto LAB_0017ac38;" goto statement_identifier ;) })) (goto_statement "goto LAB_0017a3dc;" goto statement_identifier ;) })) (labeled_statement "LAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));" statement_identifier : (expression_statement "*pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar20" * identifier) = (cast_expression "(float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (type_descriptor "float" primitive_type) ) (parenthesized_expression "((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" ( (binary_expression "(dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "(dVar28 / dVar22) * dVar26" (parenthesized_expression "(dVar28 / dVar22)" ( (binary_expression "dVar28 / dVar22" identifier / identifier) )) * identifier) * (pointer_expression "*(double *)(puVar2 + 0x1a58)" * (cast_expression "(double *)(puVar2 + 0x1a58)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a58)" ( (binary_expression "puVar2 + 0x1a58" identifier + number_literal) ))))) )))) ;)) (if_statement "if (0 < (int)uVar19) goto LAB_0017a3dc;" if (parenthesized_expression "(0 < (int)uVar19)" ( (binary_expression "0 < (int)uVar19" number_literal < (cast_expression "(int)uVar19" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_0017a3dc;" goto statement_identifier ;)) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" identifier = number_literal) ;) (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" identifier = identifier) ;) (goto_statement "goto LAB_0017ad74;" goto statement_identifier ;) })) (expression_statement "*pfVar20 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar20 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar20" * identifier) = (pointer_expression "*(float *)(puVar2 + 0x1a50)" * (cast_expression "(float *)(puVar2 + 0x1a50)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + 0x1a50)" ( (binary_expression "puVar2 + 0x1a50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0017a3dc:\n          uVar10 = param_2[0x15];" statement_identifier : (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" identifier = (subscript_expression "param_2[0x15]" identifier [ number_literal ])) ;)) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" identifier = identifier) ;) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" do (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" { (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" while (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" { (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" identifier = (pointer_expression "*param_5" * identifier)) ;) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" if (parenthesized_expression "(7 < uVar14)" ( (binary_expression "7 < uVar14" number_literal < identifier) )) (compound_statement "{\n                uVar11 = 8;\n              }" { (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" identifier = number_literal) ;) })) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" identifier = (binary_expression "8 - uVar11" number_literal - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> (uVar10 & 0x1f))" ( (binary_expression "bVar1 >> (uVar10 & 0x1f)" identifier >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) ))) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a470;" if (parenthesized_expression "((int)uVar14 < 1)" ( (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0017a470;" goto statement_identifier ;)) })) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" identifier = identifier) ;) (if_statement "if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }" if (parenthesized_expression "(uVar10 <= uVar14)" ( (binary_expression "uVar10 <= uVar14" identifier <= identifier) )) (compound_statement "{\n              uVar11 = uVar10;\n            }" { (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" identifier = identifier) ;) })) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" identifier = (binary_expression "uVar10 - uVar11" identifier - identifier)) ;) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" identifier = (binary_expression "uVar14 - uVar11" identifier - identifier)) ;) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" identifier = (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" ~ (parenthesized_expression "(-1 << (uVar11 & 0x1f))" ( (binary_expression "-1 << (uVar11 & 0x1f)" number_literal << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))) ))) & (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" identifier [ number_literal ]) >> (parenthesized_expression "(uVar10 & 0x1f)" ( (binary_expression "uVar10 & 0x1f" identifier & number_literal) )))) | (binary_expression "uVar13 << (uVar11 & 0x1f)" identifier << (parenthesized_expression "(uVar11 & 0x1f)" ( (binary_expression "uVar11 & 0x1f" identifier & number_literal) ))))) ;) }) while (parenthesized_expression "(0 < (int)uVar14)" ( (binary_expression "0 < (int)uVar14" number_literal < (cast_expression "(int)uVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (labeled_statement "LAB_0017a470:\n          param_2[0x15] = uVar10;" statement_identifier : (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" identifier [ number_literal ]) = identifier) ;)) (if_statement "if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }" if (parenthesized_expression "((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17))" ( (binary_expression "(iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) || (parenthesized_expression "(fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)" ( (comma_expression "fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17" (assignment_expression "fVar24 = (float)uVar30" identifier = (cast_expression "(float)uVar30" ( (type_descriptor "float" primitive_type) ) identifier)) , (comma_expression "dVar25 = dVar23, uVar13 <= uVar17" (assignment_expression "dVar25 = dVar23" identifier = identifier) , (binary_expression "uVar13 <= uVar17" identifier <= identifier))) ))) )) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }" { (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" identifier = (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" ( (type_descriptor "double" primitive_type) ) (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" ( (pointer_expression "*(code *)PTR_FUN_003a8960" * (cast_expression "(code *)PTR_FUN_003a8960" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar18,uVar17)" ( identifier , identifier ))))) ;) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" identifier = (cast_expression "(double)(int)uVar13" ( (type_descriptor "double" primitive_type) ) (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }" if (parenthesized_expression "((int)uVar13 < 0)" ( (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n              dVar26 = dVar26 + dVar34;\n            }" { (expression_statement "dVar26 = dVar26 + dVar34;" (assignment_expression "dVar26 = dVar26 + dVar34" identifier = (binary_expression "dVar26 + dVar34" identifier + identifier)) ;) })) (goto_statement "goto LAB_0017ac38;" goto statement_identifier ;) })) }))) (if_statement "if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }" { (expression_statement "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;" (assignment_expression "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24" (pointer_expression "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4)" * (cast_expression "(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4)" ( (type_descriptor "float *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + *(int *)(iVar5 + 0x38) * 4)" ( (binary_expression "param_6 + *(int *)(iVar5 + 0x38) * 4" identifier + (binary_expression "*(int *)(iVar5 + 0x38) * 4" (pointer_expression "*(int *)(iVar5 + 0x38)" * (cast_expression "(int *)(iVar5 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x38)" ( (binary_expression "iVar5 + 0x38" identifier + number_literal) )))) * number_literal)) )))) = identifier) ;) })) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" identifier = (binary_expression "iVar16 + 1" identifier + number_literal)) ;) (expression_statement "param_6 = param_6 + iVar9 * 4;" (assignment_expression "param_6 = param_6 + iVar9 * 4" identifier = (binary_expression "param_6 + iVar9 * 4" identifier + (binary_expression "iVar9 * 4" identifier * number_literal))) ;) (expression_statement "dVar23 = dVar25;" (assignment_expression "dVar23 = dVar25" identifier = identifier) ;) }) while (parenthesized_expression "(iVar16 != param_4)" ( (binary_expression "iVar16 != param_4" identifier != identifier) )) ;) })) (if_statement "if (iVar4 == *(int *)puVar3) {\n      return;\n    }" if (parenthesized_expression "(iVar4 == *(int *)puVar3)" ( (binary_expression "iVar4 == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_003a9064)();" (call_expression "(*(code *)PTR___stack_chk_fail_003a9064)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_003a9064)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_003a9064" * (cast_expression "(code *)PTR___stack_chk_fail_003a9064" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) })) (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" ( (pointer_expression "*(code *)PTR___assert_fail_003a9608" * (cast_expression "(code *)PTR___assert_fail_003a9608" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" ( (binary_expression "PTR_LAB_003a88e0 + 0xdd0" identifier + number_literal) , (binary_expression "PTR_s_courses_003a88ec + -0x7528" identifier + number_literal) , number_literal , (binary_expression "PTR_s_courses_003a88ec + -0x69cc" identifier + number_literal) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE 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 ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT)) + LIT) ))))) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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) ))))) ;) (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) ))))) ;) (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) ))))) ;) (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 ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT / IDENT) )) * IDENT) * IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (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 / IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (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 = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) / IDENT)) ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (binary_expression (subscript_expression IDENT [ LIT ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression 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) ))))) )))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (binary_expression (subscript_expression IDENT [ LIT ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (binary_expression (subscript_expression IDENT [ LIT ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * IDENT) * IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT / IDENT) )) * IDENT) * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) & (binary_expression (subscript_expression IDENT [ LIT ]) >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) | (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (goto_statement goto statement_identifier ;) })) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00179c7c(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )" (identifier "FUN_00179c7c") (parameter_list "(int param_1,uint *param_2,undefined4 param_3,int param_4,byte *param_5,int param_6\n                 )" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "byte *param_5" (type_identifier "byte") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  int iVar4;\n  int iVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  uint uVar13;\n  uint uVar14;\n  float *pfVar15;\n  int iVar16;\n  uint uVar17;\n  int iVar18;\n  uint uVar19;\n  float *pfVar20;\n  double dVar21;\n  double dVar22;\n  float fVar24;\n  double dVar23;\n  double dVar25;\n  double dVar26;\n  double dVar27;\n  double dVar28;\n  double dVar29;\n  ulonglong uVar30;\n  double dVar31;\n  double dVar32;\n  double dVar33;\n  double dVar34;\n  \n  puVar3 = PTR___stack_chk_guard_003a9230;\n  puVar2 = PTR_LAB_003a88e0;\n  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;\n  if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }\n  (*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "float *pfVar15;" (primitive_type "float") (pointer_declarator "*pfVar15" (* "*") (identifier "pfVar15")) (; ";")) (declaration "int iVar16;" (primitive_type "int") (identifier "iVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "float *pfVar20;" (primitive_type "float") (pointer_declarator "*pfVar20" (* "*") (identifier "pfVar20")) (; ";")) (declaration "double dVar21;" (primitive_type "double") (identifier "dVar21") (; ";")) (declaration "double dVar22;" (primitive_type "double") (identifier "dVar22") (; ";")) (declaration "float fVar24;" (primitive_type "float") (identifier "fVar24") (; ";")) (declaration "double dVar23;" (primitive_type "double") (identifier "dVar23") (; ";")) (declaration "double dVar25;" (primitive_type "double") (identifier "dVar25") (; ";")) (declaration "double dVar26;" (primitive_type "double") (identifier "dVar26") (; ";")) (declaration "double dVar27;" (primitive_type "double") (identifier "dVar27") (; ";")) (declaration "double dVar28;" (primitive_type "double") (identifier "dVar28") (; ";")) (declaration "double dVar29;" (primitive_type "double") (identifier "dVar29") (; ";")) (declaration "ulonglong uVar30;" (type_identifier "ulonglong") (identifier "uVar30") (; ";")) (declaration "double dVar31;" (primitive_type "double") (identifier "dVar31") (; ";")) (declaration "double dVar32;" (primitive_type "double") (identifier "dVar32") (; ";")) (declaration "double dVar33;" (primitive_type "double") (identifier "dVar33") (; ";")) (declaration "double dVar34;" (primitive_type "double") (identifier "dVar34") (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_003a9230;" (assignment_expression "puVar3 = PTR___stack_chk_guard_003a9230" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_003a9230")) (; ";")) (expression_statement "puVar2 = PTR_LAB_003a88e0;" (assignment_expression "puVar2 = PTR_LAB_003a88e0" (identifier "puVar2") (= "=") (identifier "PTR_LAB_003a88e0")) (; ";")) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_003a9230;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_003a9230" (identifier "iVar4") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_003a9230" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_003a9230" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_003a9230")))) (; ";")) (if_statement "if (param_1 != 0) {\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" (if "if") (parenthesized_expression "(param_1 != 0)" (( "(") (binary_expression "param_1 != 0" (identifier "param_1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }\n    uVar19 = *param_2;\n    if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }\n    iVar18 = 0;\n    if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }\n    if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }\n    if (iVar4 == *(int *)puVar3) {\n      return;\n    }\n    (*(code *)PTR___stack_chk_fail_003a9064)();\n  }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x336c) != -0x54535255) {\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x336c) != -0x54535255)" (( "(") (binary_expression "*(int *)(param_1 + 0x336c) != -0x54535255" (pointer_expression "*(int *)(param_1 + 0x336c)" (* "*") (cast_expression "(int *)(param_1 + 0x336c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x336c)" (( "(") (binary_expression "param_1 + 0x336c" (identifier "param_1") (+ "+") (number_literal "0x336c")) () ")")))) (!= "!=") (number_literal "-0x54535255")) () ")")) (compound_statement "{\n      (*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);\n      return;\n    }" ({ "{") (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_003a9608" (* "*") (cast_expression "(code *)PTR___assert_fail_003a9608" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_003a9608"))) () ")")) (argument_list "(PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,\n                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc)" (( "(") (binary_expression "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784" (identifier "PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8") (+ "+") (number_literal "-0x3784")) (, ",") (binary_expression "PTR_s_courses_003a88ec + -0x7528" (identifier "PTR_s_courses_003a88ec") (+ "+") (number_literal "-0x7528")) (, ",") (number_literal "0x319") (, ",") (binary_expression "PTR_s_courses_003a88ec + -0x69cc" (identifier "PTR_s_courses_003a88ec") (+ "+") (number_literal "-0x69cc")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar19 = *param_2;" (assignment_expression "uVar19 = *param_2" (identifier "uVar19") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (uVar19 - 8 < 0x39) {\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }" (if "if") (parenthesized_expression "(uVar19 - 8 < 0x39)" (( "(") (binary_expression "uVar19 - 8 < 0x39" (binary_expression "uVar19 - 8" (identifier "uVar19") (- "-") (number_literal "8")) (< "<") (number_literal "0x39")) () ")")) (compound_statement "{\n                    \n                    \n      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();\n      return;\n    }" ({ "{") (expression_statement "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();" (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234))" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" (* "*") (cast_expression "(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)" (( "(") (binary_expression "PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234" (binary_expression "PTR_s_courses_003a88ec + (uVar19 - 8) * 4" (identifier "PTR_s_courses_003a88ec") (+ "+") (binary_expression "(uVar19 - 8) * 4" (parenthesized_expression "(uVar19 - 8)" (( "(") (binary_expression "uVar19 - 8" (identifier "uVar19") (- "-") (number_literal "8")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x7234")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar18 = 0;" (assignment_expression "iVar18 = 0" (identifier "iVar18") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar19 == 0) {\n      uVar17 = 0;\n    }\n    else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" (if "if") (parenthesized_expression "(uVar19 == 0)" (( "(") (binary_expression "uVar19 == 0" (identifier "uVar19") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar17 = 0;\n    }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" (else "else") (compound_statement "{\n      uVar17 = 0;\n      if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }\n      uVar17 = uVar17 - 1;\n      uVar13 = 2 << (uVar17 & 0x1f);\n      uVar10 = uVar13;\n      uVar14 = 1 >> (~uVar17 & 0x1f);\n      if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }\n      uVar17 = uVar10 - 1;\n      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);\n    }" ({ "{") (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar19 < 0x41) {\n        uVar17 = uVar19;\n      }" (if "if") (parenthesized_expression "(uVar19 < 0x41)" (( "(") (binary_expression "uVar19 < 0x41" (identifier "uVar19") (< "<") (number_literal "0x41")) () ")")) (compound_statement "{\n        uVar17 = uVar19;\n      }" ({ "{") (expression_statement "uVar17 = uVar19;" (assignment_expression "uVar17 = uVar19" (identifier "uVar17") (= "=") (identifier "uVar19")) (; ";")) (} "}"))) (expression_statement "uVar17 = uVar17 - 1;" (assignment_expression "uVar17 = uVar17 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 - 1" (identifier "uVar17") (- "-") (number_literal "1"))) (; ";")) (expression_statement "uVar13 = 2 << (uVar17 & 0x1f);" (assignment_expression "uVar13 = 2 << (uVar17 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "2 << (uVar17 & 0x1f)" (number_literal "2") (<< "<<") (parenthesized_expression "(uVar17 & 0x1f)" (( "(") (binary_expression "uVar17 & 0x1f" (identifier "uVar17") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar10 = uVar13;" (assignment_expression "uVar10 = uVar13" (identifier "uVar10") (= "=") (identifier "uVar13")) (; ";")) (expression_statement "uVar14 = 1 >> (~uVar17 & 0x1f);" (assignment_expression "uVar14 = 1 >> (~uVar17 & 0x1f)" (identifier "uVar14") (= "=") (binary_expression "1 >> (~uVar17 & 0x1f)" (number_literal "1") (>> ">>") (parenthesized_expression "(~uVar17 & 0x1f)" (( "(") (binary_expression "~uVar17 & 0x1f" (unary_expression "~uVar17" (~ "~") (identifier "uVar17")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((uVar17 & 0x20) != 0) {\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }" (if "if") (parenthesized_expression "((uVar17 & 0x20) != 0)" (( "(") (binary_expression "(uVar17 & 0x20) != 0" (parenthesized_expression "(uVar17 & 0x20)" (( "(") (binary_expression "uVar17 & 0x20" (identifier "uVar17") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar10 = 0;\n        uVar14 = uVar13;\n      }" ({ "{") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = uVar13;" (assignment_expression "uVar14 = uVar13" (identifier "uVar14") (= "=") (identifier "uVar13")) (; ";")) (} "}"))) (expression_statement "uVar17 = uVar10 - 1;" (assignment_expression "uVar17 = uVar10 - 1" (identifier "uVar17") (= "=") (binary_expression "uVar10 - 1" (identifier "uVar10") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);" (assignment_expression "iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1)" (identifier "iVar18") (= "=") (binary_expression "(uint)(uVar17 < uVar10) + (uVar14 - 1)" (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar17 < uVar10)" (( "(") (binary_expression "uVar17 < uVar10" (identifier "uVar17") (< "<") (identifier "uVar10")) () ")"))) (+ "+") (parenthesized_expression "(uVar14 - 1)" (( "(") (binary_expression "uVar14 - 1" (identifier "uVar14") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}")))) (if_statement "if (0 < param_4) {\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }" (if "if") (parenthesized_expression "(0 < param_4)" (( "(") (binary_expression "0 < param_4" (number_literal "0") (< "<") (identifier "param_4")) () ")")) (compound_statement "{\n      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);\n      iVar5 = *(int *)(param_1 + 0x2d0);\n      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);\n      iVar9 = *(int *)(param_1 + 0x2c0);\n      iVar16 = 0;\n      iVar6 = *(int *)(iVar5 + 0x20);\n      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);\n      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);\n      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);\n      iVar7 = *(int *)(iVar5 + 8);\n      iVar12 = *(int *)(iVar5 + 0x14);\n      iVar8 = *(int *)(iVar5 + 0x34);\n      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);\n      dVar28 = dVar27;\n      dVar23 = dVar29;\n      dVar32 = dVar31;\n      dVar34 = dVar33;\n      do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);\n    }" ({ "{") (expression_statement "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);" (assignment_expression "dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8)" (identifier "dVar31") (= "=") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x13f8)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x13f8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x13f8)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x13f8" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x13f8")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x2d0);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2d0)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x2d0)" (* "*") (cast_expression "(int *)(param_1 + 0x2d0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2d0)" (( "(") (binary_expression "param_1 + 0x2d0" (identifier "param_1") (+ "+") (number_literal "0x2d0")) () ")"))))) (; ";")) (expression_statement "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);" (assignment_expression "dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68)" (identifier "dVar29") (= "=") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a68)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a68)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a68)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1a68" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1a68")) () ")"))))) (; ";")) (expression_statement "iVar9 = *(int *)(param_1 + 0x2c0);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x2c0)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0x2c0)" (* "*") (cast_expression "(int *)(param_1 + 0x2c0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c0)" (( "(") (binary_expression "param_1 + 0x2c0" (identifier "param_1") (+ "+") (number_literal "0x2c0")) () ")"))))) (; ";")) (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" (identifier "iVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = *(int *)(iVar5 + 0x20);" (assignment_expression "iVar6 = *(int *)(iVar5 + 0x20)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar5 + 0x20)" (* "*") (cast_expression "(int *)(iVar5 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x20)" (( "(") (binary_expression "iVar5 + 0x20" (identifier "iVar5") (+ "+") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);" (assignment_expression "dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418)" (identifier "dVar33") (= "=") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1418)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1418)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1418)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1418" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1418")) () ")"))))) (; ";")) (expression_statement "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);" (assignment_expression "dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438)" (identifier "dVar27") (= "=") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1438)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1438)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1438)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1438" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1438")) () ")"))))) (; ";")) (expression_statement "dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);" (assignment_expression "dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58)" (identifier "dVar21") (= "=") (pointer_expression "*(double *)(PTR_LAB_003a88e0 + 0x1a58)" (* "*") (cast_expression "(double *)(PTR_LAB_003a88e0 + 0x1a58)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a58)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1a58" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1a58")) () ")"))))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar5 + 8);" (assignment_expression "iVar7 = *(int *)(iVar5 + 8)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(iVar5 + 8)" (* "*") (cast_expression "(int *)(iVar5 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 8)" (( "(") (binary_expression "iVar5 + 8" (identifier "iVar5") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar12 = *(int *)(iVar5 + 0x14);" (assignment_expression "iVar12 = *(int *)(iVar5 + 0x14)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar5 + 0x14)" (* "*") (cast_expression "(int *)(iVar5 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x14)" (( "(") (binary_expression "iVar5 + 0x14" (identifier "iVar5") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(iVar5 + 0x34);" (assignment_expression "iVar8 = *(int *)(iVar5 + 0x34)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(iVar5 + 0x34)" (* "*") (cast_expression "(int *)(iVar5 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x34)" (( "(") (binary_expression "iVar5 + 0x34" (identifier "iVar5") (+ "+") (number_literal "0x34")) () ")"))))) (; ";")) (expression_statement "uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);" (assignment_expression "uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" (identifier "uVar30") (= "=") (binary_expression "(ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (* "*") (cast_expression "(uint *)(PTR_LAB_003a88e0 + 0x1a50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_003a88e0 + 0x1a50)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0x1a50" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0x1a50")) () ")"))))) (; ";")) (expression_statement "dVar28 = dVar27;" (assignment_expression "dVar28 = dVar27" (identifier "dVar28") (= "=") (identifier "dVar27")) (; ";")) (expression_statement "dVar23 = dVar29;" (assignment_expression "dVar23 = dVar29" (identifier "dVar23") (= "=") (identifier "dVar29")) (; ";")) (expression_statement "dVar32 = dVar31;" (assignment_expression "dVar32 = dVar31" (identifier "dVar32") (= "=") (identifier "dVar31")) (; ";")) (expression_statement "dVar34 = dVar33;" (assignment_expression "dVar34 = dVar33" (identifier "dVar34") (= "=") (identifier "dVar33")) (; ";")) (do_statement "do {\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      } while (iVar16 != param_4);" (do "do") (compound_statement "{\n        pfVar20 = (float *)(param_6 + iVar6 * 4);\n        pfVar15 = (float *)(param_6 + iVar12 * 4);\n        if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }\n        if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }\n        iVar16 = iVar16 + 1;\n        param_6 = param_6 + iVar9 * 4;\n        dVar23 = dVar25;\n      }" ({ "{") (expression_statement "pfVar20 = (float *)(param_6 + iVar6 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar6 * 4)" (identifier "pfVar20") (= "=") (cast_expression "(float *)(param_6 + iVar6 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar6 * 4)" (( "(") (binary_expression "param_6 + iVar6 * 4" (identifier "param_6") (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "pfVar15 = (float *)(param_6 + iVar12 * 4);" (assignment_expression "pfVar15 = (float *)(param_6 + iVar12 * 4)" (identifier "pfVar15") (= "=") (cast_expression "(float *)(param_6 + iVar12 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar12 * 4)" (( "(") (binary_expression "param_6 + iVar12 * 4" (identifier "param_6") (+ "+") (binary_expression "iVar12 * 4" (identifier "iVar12") (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if ((int)uVar19 < 1) {\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }\n        else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" (if "if") (parenthesized_expression "((int)uVar19 < 1)" (( "(") (binary_expression "(int)uVar19 < 1" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          dVar26 = 0.0;\n          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n          if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          dVar26 = 0.0;\nLAB_0017acf8:\n          dVar25 = dVar29;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }\n          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));\n          if (0 < (int)uVar19) goto LAB_0017a32c;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }\n          *pfVar20 = 0.0;\n          dVar26 = 0.0;\nLAB_0017ac38:\n          dVar25 = dVar23;\n          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }\n          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));\n        }" ({ "{") (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" (identifier "dVar26") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (identifier "dVar22") (= "=") (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" (( "(") (pointer_expression "*(code *)PTR_FUN_003a8960" (* "*") (cast_expression "(code *)PTR_FUN_003a8960" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003a8960"))) () ")")) (argument_list "(iVar18,uVar17)" (( "(") (identifier "iVar18") (, ",") (identifier "uVar17") () ")"))))) (; ";")) (if_statement "if (dVar32 <= dVar22) {\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }\n          else {\n            *pfVar20 = 0.0;\n          }" (if "if") (parenthesized_expression "(dVar32 <= dVar22)" (( "(") (binary_expression "dVar32 <= dVar22" (identifier "dVar32") (<= "<=") (identifier "dVar22")) () ")")) (compound_statement "{\nLAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);\n            if (0 < (int)uVar19) goto LAB_0017a270;\n          }" ({ "{") (labeled_statement "LAB_0017ae10:\n            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);" (statement_identifier "LAB_0017ae10") (: ":") (expression_statement "*pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);" (assignment_expression "*pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21)" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (cast_expression "(float)((dVar27 / dVar22) * dVar26 * dVar21)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((dVar27 / dVar22) * dVar26 * dVar21)" (( "(") (binary_expression "(dVar27 / dVar22) * dVar26 * dVar21" (binary_expression "(dVar27 / dVar22) * dVar26" (parenthesized_expression "(dVar27 / dVar22)" (( "(") (binary_expression "dVar27 / dVar22" (identifier "dVar27") (/ "/") (identifier "dVar22")) () ")")) (* "*") (identifier "dVar26")) (* "*") (identifier "dVar21")) () ")")))) (; ";"))) (if_statement "if (0 < (int)uVar19) goto LAB_0017a270;" (if "if") (parenthesized_expression "(0 < (int)uVar19)" (( "(") (binary_expression "0 < (int)uVar19" (number_literal "0") (< "<") (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19"))) () ")")) (goto_statement "goto LAB_0017a270;" (goto "goto") (statement_identifier "LAB_0017a270") (; ";"))) (} "}")) (else_clause "else {\n            *pfVar20 = 0.0;\n          }" (else "else") (compound_statement "{\n            *pfVar20 = 0.0;\n          }" ({ "{") (expression_statement "*pfVar20 = 0.0;" (assignment_expression "*pfVar20 = 0.0" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (number_literal "0.0")) (; ";")) (} "}")))) (expression_statement "pfVar20 = (float *)(param_6 + iVar7 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar7 * 4)" (identifier "pfVar20") (= "=") (cast_expression "(float *)(param_6 + iVar7 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar7 * 4)" (( "(") (binary_expression "param_6 + iVar7 * 4" (identifier "param_6") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" (identifier "dVar26") (= "=") (number_literal "0.0")) (; ";")) (labeled_statement "LAB_0017acf8:\n          dVar25 = dVar29;" (statement_identifier "LAB_0017acf8") (: ":") (expression_statement "dVar25 = dVar29;" (assignment_expression "dVar25 = dVar29" (identifier "dVar25") (= "=") (identifier "dVar29")) (; ";"))) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar25 = dVar27 / dVar22;\n          }" (if "if") (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" (( "(") (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" (* "*") (cast_expression "(double *)(puVar2 + 0x13f8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x13f8)" (( "(") (binary_expression "puVar2 + 0x13f8" (identifier "puVar2") (+ "+") (number_literal "0x13f8")) () ")")))) (<= "<=") (identifier "dVar22")) () ")")) (compound_statement "{\n            dVar25 = dVar27 / dVar22;\n          }" ({ "{") (expression_statement "dVar25 = dVar27 / dVar22;" (assignment_expression "dVar25 = dVar27 / dVar22" (identifier "dVar25") (= "=") (binary_expression "dVar27 / dVar22" (identifier "dVar27") (/ "/") (identifier "dVar22"))) (; ";")) (} "}"))) (expression_statement "*pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar15" (* "*") (identifier "pfVar15")) (= "=") (cast_expression "(float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58))" (( "(") (binary_expression "dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar25 * dVar26" (identifier "dVar25") (* "*") (identifier "dVar26")) (* "*") (pointer_expression "*(double *)(puVar2 + 0x1a58)" (* "*") (cast_expression "(double *)(puVar2 + 0x1a58)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a58)" (( "(") (binary_expression "puVar2 + 0x1a58" (identifier "puVar2") (+ "+") (number_literal "0x1a58")) () ")"))))) () ")")))) (; ";")) (if_statement "if (0 < (int)uVar19) goto LAB_0017a32c;" (if "if") (parenthesized_expression "(0 < (int)uVar19)" (( "(") (binary_expression "0 < (int)uVar19" (number_literal "0") (< "<") (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19"))) () ")")) (goto_statement "goto LAB_0017a32c;" (goto "goto") (statement_identifier "LAB_0017a32c") (; ";"))) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }" (if "if") (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" (( "(") (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" (* "*") (cast_expression "(double *)(puVar2 + 0x13f8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x13f8)" (( "(") (binary_expression "puVar2 + 0x13f8" (identifier "puVar2") (+ "+") (number_literal "0x13f8")) () ")")))) (<= "<=") (identifier "dVar22")) () ")")) (compound_statement "{\n            dVar26 = 0.0;\n            goto LAB_0017ad4c;\n          }" ({ "{") (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" (identifier "dVar26") (= "=") (number_literal "0.0")) (; ";")) (goto_statement "goto LAB_0017ad4c;" (goto "goto") (statement_identifier "LAB_0017ad4c") (; ";")) (} "}"))) (expression_statement "*pfVar20 = 0.0;" (assignment_expression "*pfVar20 = 0.0" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (number_literal "0.0")) (; ";")) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" (identifier "dVar26") (= "=") (number_literal "0.0")) (; ";")) (labeled_statement "LAB_0017ac38:\n          dVar25 = dVar23;" (statement_identifier "LAB_0017ac38") (: ":") (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" (identifier "dVar25") (= "=") (identifier "dVar23")) (; ";"))) (if_statement "if (*(double *)(puVar2 + 0x13f8) <= dVar22) {\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }" (if "if") (parenthesized_expression "(*(double *)(puVar2 + 0x13f8) <= dVar22)" (( "(") (binary_expression "*(double *)(puVar2 + 0x13f8) <= dVar22" (pointer_expression "*(double *)(puVar2 + 0x13f8)" (* "*") (cast_expression "(double *)(puVar2 + 0x13f8)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x13f8)" (( "(") (binary_expression "puVar2 + 0x13f8" (identifier "puVar2") (+ "+") (number_literal "0x13f8")) () ")")))) (<= "<=") (identifier "dVar22")) () ")")) (compound_statement "{\nLAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;\n          }" ({ "{") (labeled_statement "LAB_0017ad74:\n            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;" (statement_identifier "LAB_0017ad74") (: ":") (expression_statement "dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;" (assignment_expression "dVar23 = *(double *)(puVar2 + 0x1438) / dVar22" (identifier "dVar23") (= "=") (binary_expression "*(double *)(puVar2 + 0x1438) / dVar22" (pointer_expression "*(double *)(puVar2 + 0x1438)" (* "*") (cast_expression "(double *)(puVar2 + 0x1438)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1438)" (( "(") (binary_expression "puVar2 + 0x1438" (identifier "puVar2") (+ "+") (number_literal "0x1438")) () ")")))) (/ "/") (identifier "dVar22"))) (; ";"))) (} "}"))) (expression_statement "fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" (identifier "fVar24") (= "=") (cast_expression "(float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58))" (( "(") (binary_expression "dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar23 * dVar26" (identifier "dVar23") (* "*") (identifier "dVar26")) (* "*") (pointer_expression "*(double *)(puVar2 + 0x1a58)" (* "*") (cast_expression "(double *)(puVar2 + 0x1a58)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a58)" (( "(") (binary_expression "puVar2 + 0x1a58" (identifier "puVar2") (+ "+") (number_literal "0x1a58")) () ")"))))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" (else "else") (compound_statement "{\n          uVar13 = param_2[0x15];\n          uVar10 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a254:\n          param_2[0x15] = uVar13;\n          if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }\nLAB_0017a270:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a304:\n          param_2[0x15] = uVar10;\n          pfVar20 = (float *)(param_6 + iVar7 * 4);\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }\n          *pfVar15 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a32c:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a3c0:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }\n          *pfVar20 = *(float *)(puVar2 + 0x1a50);\nLAB_0017a3dc:\n          uVar10 = param_2[0x15];\n          uVar13 = 0;\n          uVar14 = uVar19;\n          do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);\nLAB_0017a470:\n          param_2[0x15] = uVar10;\n          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }\n        }" ({ "{") (expression_statement "uVar13 = param_2[0x15];" (assignment_expression "uVar13 = param_2[0x15]" (identifier "uVar13") (= "=") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]"))) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" (identifier "uVar14") (= "=") (identifier "uVar19")) (; ";")) (do_statement "do {\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" (do "do") (compound_statement "{\n            while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }\n            uVar11 = uVar13;\n            if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }\n            uVar13 = uVar13 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);\n          }" ({ "{") (while_statement "while (uVar13 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" (while "while") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar13 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a254;\n            }" ({ "{") (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" (identifier "bVar1") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" (identifier "uVar11") (= "=") (number_literal "8")) (; ";")) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" (if "if") (parenthesized_expression "(uVar14 < 9)" (( "(") (binary_expression "uVar14 < 9" (identifier "uVar14") (< "<") (number_literal "9")) () ")")) (compound_statement "{\n                uVar11 = uVar14;\n              }" ({ "{") (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (expression_statement "uVar13 = 8 - uVar11;" (assignment_expression "uVar13 = 8 - uVar11" (identifier "uVar13") (= "=") (binary_expression "8 - uVar11" (number_literal "8") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |\n                       uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (call_expression "(uint)(bVar1 >> (uVar13 & 0x1f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 >> (uVar13 & 0x1f))" (( "(") (binary_expression "bVar1 >> (uVar13 & 0x1f)" (identifier "bVar1") (>> ">>") (parenthesized_expression "(uVar13 & 0x1f)" (( "(") (binary_expression "uVar13 & 0x1f" (identifier "uVar13") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (| "|") (binary_expression "uVar10 << (uVar11 & 0x1f)" (identifier "uVar10") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a254;" (if "if") (parenthesized_expression "((int)uVar14 < 1)" (( "(") (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0017a254;" (goto "goto") (statement_identifier "LAB_0017a254") (; ";"))) (} "}"))) (expression_statement "uVar11 = uVar13;" (assignment_expression "uVar11 = uVar13" (identifier "uVar11") (= "=") (identifier "uVar13")) (; ";")) (if_statement "if (uVar14 <= uVar13) {\n              uVar11 = uVar14;\n            }" (if "if") (parenthesized_expression "(uVar14 <= uVar13)" (( "(") (binary_expression "uVar14 <= uVar13" (identifier "uVar14") (<= "<=") (identifier "uVar13")) () ")")) (compound_statement "{\n              uVar11 = uVar14;\n            }" ({ "{") (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (expression_statement "uVar13 = uVar13 - uVar11;" (assignment_expression "uVar13 = uVar13 - uVar11" (identifier "uVar13") (= "=") (binary_expression "uVar13 - uVar11" (identifier "uVar13") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f);" (assignment_expression "uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (identifier "uVar10") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |\n                     uVar10 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "param_2[0x14] >> (uVar13 & 0x1f)" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (>> ">>") (parenthesized_expression "(uVar13 & 0x1f)" (( "(") (binary_expression "uVar13 & 0x1f" (identifier "uVar13") (& "&") (number_literal "0x1f")) () ")")))) (| "|") (binary_expression "uVar10 << (uVar11 & 0x1f)" (identifier "uVar10") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar14)" (( "(") (binary_expression "0 < (int)uVar14" (number_literal "0") (< "<") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")")) (; ";")) (labeled_statement "LAB_0017a254:\n          param_2[0x15] = uVar13;" (statement_identifier "LAB_0017a254") (: ":") (expression_statement "param_2[0x15] = uVar13;" (assignment_expression "param_2[0x15] = uVar13" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "uVar13")) (; ";"))) (if_statement "if ((iVar18 == 0) && (uVar17 < uVar10)) {\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }\n          else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" (if "if") (parenthesized_expression "((iVar18 == 0) && (uVar17 < uVar10))" (( "(") (binary_expression "(iVar18 == 0) && (uVar17 < uVar10)" (parenthesized_expression "(iVar18 == 0)" (( "(") (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar17 < uVar10)" (( "(") (binary_expression "uVar17 < uVar10" (identifier "uVar17") (< "<") (identifier "uVar10")) () ")"))) () ")")) (compound_statement "{\n            *pfVar20 = *(float *)(puVar2 + 0x1a50);\n          }" ({ "{") (expression_statement "*pfVar20 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar20 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (pointer_expression "*(float *)(puVar2 + 0x1a50)" (* "*") (cast_expression "(float *)(puVar2 + 0x1a50)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a50)" (( "(") (binary_expression "puVar2 + 0x1a50" (identifier "puVar2") (+ "+") (number_literal "0x1a50")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" (else "else") (compound_statement "{\n            dVar26 = (double)(int)uVar10;\n            if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            if (dVar31 <= dVar22) goto LAB_0017ae10;\n            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;\n          }" ({ "{") (expression_statement "dVar26 = (double)(int)uVar10;" (assignment_expression "dVar26 = (double)(int)uVar10" (identifier "dVar26") (= "=") (cast_expression "(double)(int)uVar10" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")))) (; ";")) (if_statement "if ((int)uVar10 < 0) {\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }" (if "if") (parenthesized_expression "((int)uVar10 < 0)" (( "(") (binary_expression "(int)uVar10 < 0" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);\n            }" ({ "{") (expression_statement "dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);" (assignment_expression "dVar26 = dVar26 + *(double *)(puVar2 + 0x1418)" (identifier "dVar26") (= "=") (binary_expression "dVar26 + *(double *)(puVar2 + 0x1418)" (identifier "dVar26") (+ "+") (pointer_expression "*(double *)(puVar2 + 0x1418)" (* "*") (cast_expression "(double *)(puVar2 + 0x1418)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1418)" (( "(") (binary_expression "puVar2 + 0x1418" (identifier "puVar2") (+ "+") (number_literal "0x1418")) () ")")))))) (; ";")) (} "}"))) (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (identifier "dVar22") (= "=") (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" (( "(") (pointer_expression "*(code *)PTR_FUN_003a8960" (* "*") (cast_expression "(code *)PTR_FUN_003a8960" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003a8960"))) () ")")) (argument_list "(iVar18,uVar17)" (( "(") (identifier "iVar18") (, ",") (identifier "uVar17") () ")"))))) (; ";")) (if_statement "if (dVar31 <= dVar22) goto LAB_0017ae10;" (if "if") (parenthesized_expression "(dVar31 <= dVar22)" (( "(") (binary_expression "dVar31 <= dVar22" (identifier "dVar31") (<= "<=") (identifier "dVar22")) () ")")) (goto_statement "goto LAB_0017ae10;" (goto "goto") (statement_identifier "LAB_0017ae10") (; ";"))) (expression_statement "*pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))\n            ;" (assignment_expression "*pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (cast_expression "(float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))" (( "(") (binary_expression "dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58)" (binary_expression "dVar26 * *(double *)(puVar2 + 0x1a68)" (identifier "dVar26") (* "*") (pointer_expression "*(double *)(puVar2 + 0x1a68)" (* "*") (cast_expression "(double *)(puVar2 + 0x1a68)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a68)" (( "(") (binary_expression "puVar2 + 0x1a68" (identifier "puVar2") (+ "+") (number_literal "0x1a68")) () ")"))))) (* "*") (pointer_expression "*(double *)(puVar2 + 0x1a58)" (* "*") (cast_expression "(double *)(puVar2 + 0x1a58)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a58)" (( "(") (binary_expression "puVar2 + 0x1a58" (identifier "puVar2") (+ "+") (number_literal "0x1a58")) () ")"))))) () ")")))) (; ";")) (} "}")))) (labeled_statement "LAB_0017a270:\n          uVar10 = param_2[0x15];" (statement_identifier "LAB_0017a270") (: ":") (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" (identifier "uVar10") (= "=") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]"))) (; ";"))) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" (identifier "uVar14") (= "=") (identifier "uVar19")) (; ";")) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" (do "do") (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }\n            uVar11 = uVar10;\n            if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" ({ "{") (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" (while "while") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              bVar1 = *param_5;\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar11 = 8;\n              if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a304;\n            }" ({ "{") (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" (identifier "bVar1") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" (identifier "uVar11") (= "=") (number_literal "8")) (; ";")) (if_statement "if (uVar14 < 9) {\n                uVar11 = uVar14;\n              }" (if "if") (parenthesized_expression "(uVar14 < 9)" (( "(") (binary_expression "uVar14 < 9" (identifier "uVar14") (< "<") (number_literal "9")) () ")")) (compound_statement "{\n                uVar11 = uVar14;\n              }" ({ "{") (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" (identifier "uVar10") (= "=") (binary_expression "8 - uVar11" (number_literal "8") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 >> (uVar10 & 0x1f))" (( "(") (binary_expression "bVar1 >> (uVar10 & 0x1f)" (identifier "bVar1") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (| "|") (binary_expression "uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a304;" (if "if") (parenthesized_expression "((int)uVar14 < 1)" (( "(") (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0017a304;" (goto "goto") (statement_identifier "LAB_0017a304") (; ";"))) (} "}"))) (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" (identifier "uVar11") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (uVar14 <= uVar10) {\n              uVar11 = uVar14;\n            }" (if "if") (parenthesized_expression "(uVar14 <= uVar10)" (( "(") (binary_expression "uVar14 <= uVar10" (identifier "uVar14") (<= "<=") (identifier "uVar10")) () ")")) (compound_statement "{\n              uVar11 = uVar14;\n            }" ({ "{") (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" (identifier "uVar10") (= "=") (binary_expression "uVar10 - uVar11" (identifier "uVar10") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (| "|") (binary_expression "uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar14)" (( "(") (binary_expression "0 < (int)uVar14" (number_literal "0") (< "<") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")")) (; ";")) (labeled_statement "LAB_0017a304:\n          param_2[0x15] = uVar10;" (statement_identifier "LAB_0017a304") (: ":") (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "uVar10")) (; ";"))) (expression_statement "pfVar20 = (float *)(param_6 + iVar7 * 4);" (assignment_expression "pfVar20 = (float *)(param_6 + iVar7 * 4)" (identifier "pfVar20") (= "=") (cast_expression "(float *)(param_6 + iVar7 * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar7 * 4)" (( "(") (binary_expression "param_6 + iVar7 * 4" (identifier "param_6") (+ "+") (binary_expression "iVar7 * 4" (identifier "iVar7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }" (if "if") (parenthesized_expression "((iVar18 != 0) || (uVar13 <= uVar17))" (( "(") (binary_expression "(iVar18 != 0) || (uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar13 <= uVar17)" (( "(") (binary_expression "uVar13 <= uVar17" (identifier "uVar13") (<= "<=") (identifier "uVar17")) () ")"))) () ")")) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            goto LAB_0017acf8;\n          }" ({ "{") (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (identifier "dVar22") (= "=") (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" (( "(") (pointer_expression "*(code *)PTR_FUN_003a8960" (* "*") (cast_expression "(code *)PTR_FUN_003a8960" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003a8960"))) () ")")) (argument_list "(iVar18,uVar17)" (( "(") (identifier "iVar18") (, ",") (identifier "uVar17") () ")"))))) (; ";")) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" (identifier "dVar26") (= "=") (cast_expression "(double)(int)uVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")))) (; ";")) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }" (if "if") (parenthesized_expression "((int)uVar13 < 0)" (( "(") (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              dVar26 = dVar26 + dVar33;\n            }" ({ "{") (expression_statement "dVar26 = dVar26 + dVar33;" (assignment_expression "dVar26 = dVar26 + dVar33" (identifier "dVar26") (= "=") (binary_expression "dVar26 + dVar33" (identifier "dVar26") (+ "+") (identifier "dVar33"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0017acf8;" (goto "goto") (statement_identifier "LAB_0017acf8") (; ";")) (} "}"))) (expression_statement "*pfVar15 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar15 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar15" (* "*") (identifier "pfVar15")) (= "=") (pointer_expression "*(float *)(puVar2 + 0x1a50)" (* "*") (cast_expression "(float *)(puVar2 + 0x1a50)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a50)" (( "(") (binary_expression "puVar2 + 0x1a50" (identifier "puVar2") (+ "+") (number_literal "0x1a50")) () ")"))))) (; ";")) (labeled_statement "LAB_0017a32c:\n          uVar10 = param_2[0x15];" (statement_identifier "LAB_0017a32c") (: ":") (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" (identifier "uVar10") (= "=") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]"))) (; ";"))) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" (identifier "uVar14") (= "=") (identifier "uVar19")) (; ";")) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" (do "do") (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" ({ "{") (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" (while "while") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a3c0;\n            }" ({ "{") (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" (identifier "bVar1") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" (if "if") (parenthesized_expression "(7 < uVar14)" (( "(") (binary_expression "7 < uVar14" (number_literal "7") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n                uVar11 = 8;\n              }" ({ "{") (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" (identifier "uVar11") (= "=") (number_literal "8")) (; ";")) (} "}"))) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" (identifier "uVar10") (= "=") (binary_expression "8 - uVar11" (number_literal "8") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 >> (uVar10 & 0x1f))" (( "(") (binary_expression "bVar1 >> (uVar10 & 0x1f)" (identifier "bVar1") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (| "|") (binary_expression "uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a3c0;" (if "if") (parenthesized_expression "((int)uVar14 < 1)" (( "(") (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0017a3c0;" (goto "goto") (statement_identifier "LAB_0017a3c0") (; ";"))) (} "}"))) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }" (if "if") (parenthesized_expression "(uVar10 <= uVar14)" (( "(") (binary_expression "uVar10 <= uVar14" (identifier "uVar10") (<= "<=") (identifier "uVar14")) () ")")) (compound_statement "{\n              uVar11 = uVar10;\n            }" ({ "{") (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" (identifier "uVar11") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" (identifier "uVar10") (= "=") (binary_expression "uVar10 - uVar11" (identifier "uVar10") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (| "|") (binary_expression "uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar14)" (( "(") (binary_expression "0 < (int)uVar14" (number_literal "0") (< "<") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")")) (; ";")) (labeled_statement "LAB_0017a3c0:\n          param_2[0x15] = uVar10;" (statement_identifier "LAB_0017a3c0") (: ":") (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "uVar10")) (; ";"))) (if_statement "if ((iVar18 != 0) || (uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }" (if "if") (parenthesized_expression "((iVar18 != 0) || (uVar13 <= uVar17))" (( "(") (binary_expression "(iVar18 != 0) || (uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(uVar13 <= uVar17)" (( "(") (binary_expression "uVar13 <= uVar17" (identifier "uVar13") (<= "<=") (identifier "uVar17")) () ")"))) () ")")) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }\n            if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }\nLAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));\n            if (0 < (int)uVar19) goto LAB_0017a3dc;\n            dVar26 = 0.0;\n            dVar25 = dVar23;\n            goto LAB_0017ad74;\n          }" ({ "{") (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (identifier "dVar22") (= "=") (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" (( "(") (pointer_expression "*(code *)PTR_FUN_003a8960" (* "*") (cast_expression "(code *)PTR_FUN_003a8960" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003a8960"))) () ")")) (argument_list "(iVar18,uVar17)" (( "(") (identifier "iVar18") (, ",") (identifier "uVar17") () ")"))))) (; ";")) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" (identifier "dVar26") (= "=") (cast_expression "(double)(int)uVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")))) (; ";")) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar33;\n            }" (if "if") (parenthesized_expression "((int)uVar13 < 0)" (( "(") (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              dVar26 = dVar26 + dVar33;\n            }" ({ "{") (expression_statement "dVar26 = dVar26 + dVar33;" (assignment_expression "dVar26 = dVar26 + dVar33" (identifier "dVar26") (= "=") (binary_expression "dVar26 + dVar33" (identifier "dVar26") (+ "+") (identifier "dVar33"))) (; ";")) (} "}"))) (if_statement "if (dVar22 < dVar31) {\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" (if "if") (parenthesized_expression "(dVar22 < dVar31)" (( "(") (binary_expression "dVar22 < dVar31" (identifier "dVar22") (< "<") (identifier "dVar31")) () ")")) (compound_statement "{\n              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);\n              if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }\n              goto LAB_0017a3dc;\n            }" ({ "{") (expression_statement "*pfVar20 = (float)(dVar26 * dVar29 * dVar21);" (assignment_expression "*pfVar20 = (float)(dVar26 * dVar29 * dVar21)" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (cast_expression "(float)(dVar26 * dVar29 * dVar21)" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "(dVar26 * dVar29 * dVar21)" (( "(") (binary_expression "dVar26 * dVar29 * dVar21" (binary_expression "dVar26 * dVar29" (identifier "dVar26") (* "*") (identifier "dVar29")) (* "*") (identifier "dVar21")) () ")")))) (; ";")) (if_statement "if ((int)uVar19 < 1) {\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }" (if "if") (parenthesized_expression "((int)uVar19 < 1)" (( "(") (binary_expression "(int)uVar19 < 1" (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n                dVar26 = 0.0;\n                goto LAB_0017ac38;\n              }" ({ "{") (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" (identifier "dVar26") (= "=") (number_literal "0.0")) (; ";")) (goto_statement "goto LAB_0017ac38;" (goto "goto") (statement_identifier "LAB_0017ac38") (; ";")) (} "}"))) (goto_statement "goto LAB_0017a3dc;" (goto "goto") (statement_identifier "LAB_0017a3dc") (; ";")) (} "}"))) (labeled_statement "LAB_0017ad4c:\n            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));" (statement_identifier "LAB_0017ad4c") (: ":") (expression_statement "*pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));" (assignment_expression "*pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (cast_expression "(float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (parenthesized_expression "((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58))" (( "(") (binary_expression "(dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58)" (binary_expression "(dVar28 / dVar22) * dVar26" (parenthesized_expression "(dVar28 / dVar22)" (( "(") (binary_expression "dVar28 / dVar22" (identifier "dVar28") (/ "/") (identifier "dVar22")) () ")")) (* "*") (identifier "dVar26")) (* "*") (pointer_expression "*(double *)(puVar2 + 0x1a58)" (* "*") (cast_expression "(double *)(puVar2 + 0x1a58)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a58)" (( "(") (binary_expression "puVar2 + 0x1a58" (identifier "puVar2") (+ "+") (number_literal "0x1a58")) () ")"))))) () ")")))) (; ";"))) (if_statement "if (0 < (int)uVar19) goto LAB_0017a3dc;" (if "if") (parenthesized_expression "(0 < (int)uVar19)" (( "(") (binary_expression "0 < (int)uVar19" (number_literal "0") (< "<") (cast_expression "(int)uVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar19"))) () ")")) (goto_statement "goto LAB_0017a3dc;" (goto "goto") (statement_identifier "LAB_0017a3dc") (; ";"))) (expression_statement "dVar26 = 0.0;" (assignment_expression "dVar26 = 0.0" (identifier "dVar26") (= "=") (number_literal "0.0")) (; ";")) (expression_statement "dVar25 = dVar23;" (assignment_expression "dVar25 = dVar23" (identifier "dVar25") (= "=") (identifier "dVar23")) (; ";")) (goto_statement "goto LAB_0017ad74;" (goto "goto") (statement_identifier "LAB_0017ad74") (; ";")) (} "}"))) (expression_statement "*pfVar20 = *(float *)(puVar2 + 0x1a50);" (assignment_expression "*pfVar20 = *(float *)(puVar2 + 0x1a50)" (pointer_expression "*pfVar20" (* "*") (identifier "pfVar20")) (= "=") (pointer_expression "*(float *)(puVar2 + 0x1a50)" (* "*") (cast_expression "(float *)(puVar2 + 0x1a50)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + 0x1a50)" (( "(") (binary_expression "puVar2 + 0x1a50" (identifier "puVar2") (+ "+") (number_literal "0x1a50")) () ")"))))) (; ";")) (labeled_statement "LAB_0017a3dc:\n          uVar10 = param_2[0x15];" (statement_identifier "LAB_0017a3dc") (: ":") (expression_statement "uVar10 = param_2[0x15];" (assignment_expression "uVar10 = param_2[0x15]" (identifier "uVar10") (= "=") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]"))) (; ";"))) (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" (identifier "uVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar14 = uVar19;" (assignment_expression "uVar14 = uVar19" (identifier "uVar14") (= "=") (identifier "uVar19")) (; ";")) (do_statement "do {\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          } while (0 < (int)uVar14);" (do "do") (compound_statement "{\n            while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }\n            uVar11 = uVar14;\n            if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }\n            uVar10 = uVar10 - uVar11;\n            uVar14 = uVar14 - uVar11;\n            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);\n          }" ({ "{") (while_statement "while (uVar10 == 0) {\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" (while "while") (parenthesized_expression "(uVar10 == 0)" (( "(") (binary_expression "uVar10 == 0" (identifier "uVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              bVar1 = *param_5;\n              uVar11 = uVar14;\n              if (7 < uVar14) {\n                uVar11 = 8;\n              }\n              param_5 = param_5 + 1;\n              param_2[0x14] = (uint)bVar1;\n              uVar10 = 8 - uVar11;\n              uVar14 = uVar14 - uVar11;\n              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);\n              if ((int)uVar14 < 1) goto LAB_0017a470;\n            }" ({ "{") (expression_statement "bVar1 = *param_5;" (assignment_expression "bVar1 = *param_5" (identifier "bVar1") (= "=") (pointer_expression "*param_5" (* "*") (identifier "param_5"))) (; ";")) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (7 < uVar14) {\n                uVar11 = 8;\n              }" (if "if") (parenthesized_expression "(7 < uVar14)" (( "(") (binary_expression "7 < uVar14" (number_literal "7") (< "<") (identifier "uVar14")) () ")")) (compound_statement "{\n                uVar11 = 8;\n              }" ({ "{") (expression_statement "uVar11 = 8;" (assignment_expression "uVar11 = 8" (identifier "uVar11") (= "=") (number_literal "8")) (; ";")) (} "}"))) (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 "param_2[0x14] = (uint)bVar1;" (assignment_expression "param_2[0x14] = (uint)bVar1" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (expression_statement "uVar10 = 8 - uVar11;" (assignment_expression "uVar10 = 8 - uVar11" (identifier "uVar10") (= "=") (binary_expression "8 - uVar11" (number_literal "8") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |\n                       uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f))" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (call_expression "(uint)(bVar1 >> (uVar10 & 0x1f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 >> (uVar10 & 0x1f))" (( "(") (binary_expression "bVar1 >> (uVar10 & 0x1f)" (identifier "bVar1") (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (| "|") (binary_expression "uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (if_statement "if ((int)uVar14 < 1) goto LAB_0017a470;" (if "if") (parenthesized_expression "((int)uVar14 < 1)" (( "(") (binary_expression "(int)uVar14 < 1" (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_0017a470;" (goto "goto") (statement_identifier "LAB_0017a470") (; ";"))) (} "}"))) (expression_statement "uVar11 = uVar14;" (assignment_expression "uVar11 = uVar14" (identifier "uVar11") (= "=") (identifier "uVar14")) (; ";")) (if_statement "if (uVar10 <= uVar14) {\n              uVar11 = uVar10;\n            }" (if "if") (parenthesized_expression "(uVar10 <= uVar14)" (( "(") (binary_expression "uVar10 <= uVar14" (identifier "uVar10") (<= "<=") (identifier "uVar14")) () ")")) (compound_statement "{\n              uVar11 = uVar10;\n            }" ({ "{") (expression_statement "uVar11 = uVar10;" (assignment_expression "uVar11 = uVar10" (identifier "uVar11") (= "=") (identifier "uVar10")) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 - uVar11;" (assignment_expression "uVar10 = uVar10 - uVar11" (identifier "uVar10") (= "=") (binary_expression "uVar10 - uVar11" (identifier "uVar10") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar14 = uVar14 - uVar11;" (assignment_expression "uVar14 = uVar14 - uVar11" (identifier "uVar14") (= "=") (binary_expression "uVar14 - uVar11" (identifier "uVar14") (- "-") (identifier "uVar11"))) (; ";")) (expression_statement "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f);" (assignment_expression "uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (= "=") (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |\n                     uVar13 << (uVar11 & 0x1f)" (binary_expression "~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f)" (unary_expression "~(-1 << (uVar11 & 0x1f))" (~ "~") (parenthesized_expression "(-1 << (uVar11 & 0x1f))" (( "(") (binary_expression "-1 << (uVar11 & 0x1f)" (number_literal "-1") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (binary_expression "param_2[0x14] >> (uVar10 & 0x1f)" (subscript_expression "param_2[0x14]" (identifier "param_2") ([ "[") (number_literal "0x14") (] "]")) (>> ">>") (parenthesized_expression "(uVar10 & 0x1f)" (( "(") (binary_expression "uVar10 & 0x1f" (identifier "uVar10") (& "&") (number_literal "0x1f")) () ")")))) (| "|") (binary_expression "uVar13 << (uVar11 & 0x1f)" (identifier "uVar13") (<< "<<") (parenthesized_expression "(uVar11 & 0x1f)" (( "(") (binary_expression "uVar11 & 0x1f" (identifier "uVar11") (& "&") (number_literal "0x1f")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)uVar14)" (( "(") (binary_expression "0 < (int)uVar14" (number_literal "0") (< "<") (cast_expression "(int)uVar14" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar14"))) () ")")) (; ";")) (labeled_statement "LAB_0017a470:\n          param_2[0x15] = uVar10;" (statement_identifier "LAB_0017a470") (: ":") (expression_statement "param_2[0x15] = uVar10;" (assignment_expression "param_2[0x15] = uVar10" (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")) (= "=") (identifier "uVar10")) (; ";"))) (if_statement "if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }" (if "if") (parenthesized_expression "((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17))" (( "(") (binary_expression "(iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)" (parenthesized_expression "(iVar18 != 0)" (( "(") (binary_expression "iVar18 != 0" (identifier "iVar18") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)" (( "(") (comma_expression "fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17" (assignment_expression "fVar24 = (float)uVar30" (identifier "fVar24") (= "=") (cast_expression "(float)uVar30" (( "(") (type_descriptor "float" (primitive_type "float")) () ")") (identifier "uVar30"))) (, ",") (comma_expression "dVar25 = dVar23, uVar13 <= uVar17" (assignment_expression "dVar25 = dVar23" (identifier "dVar25") (= "=") (identifier "dVar23")) (, ",") (binary_expression "uVar13 <= uVar17" (identifier "uVar13") (<= "<=") (identifier "uVar17")))) () ")"))) () ")")) (compound_statement "{\n            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);\n            dVar26 = (double)(int)uVar13;\n            if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }\n            goto LAB_0017ac38;\n          }" ({ "{") (expression_statement "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);" (assignment_expression "dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (identifier "dVar22") (= "=") (cast_expression "(double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "(*(code *)PTR_FUN_003a8960)(iVar18,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_003a8960)" (( "(") (pointer_expression "*(code *)PTR_FUN_003a8960" (* "*") (cast_expression "(code *)PTR_FUN_003a8960" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_003a8960"))) () ")")) (argument_list "(iVar18,uVar17)" (( "(") (identifier "iVar18") (, ",") (identifier "uVar17") () ")"))))) (; ";")) (expression_statement "dVar26 = (double)(int)uVar13;" (assignment_expression "dVar26 = (double)(int)uVar13" (identifier "dVar26") (= "=") (cast_expression "(double)(int)uVar13" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")))) (; ";")) (if_statement "if ((int)uVar13 < 0) {\n              dVar26 = dVar26 + dVar34;\n            }" (if "if") (parenthesized_expression "((int)uVar13 < 0)" (( "(") (binary_expression "(int)uVar13 < 0" (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n              dVar26 = dVar26 + dVar34;\n            }" ({ "{") (expression_statement "dVar26 = dVar26 + dVar34;" (assignment_expression "dVar26 = dVar26 + dVar34" (identifier "dVar26") (= "=") (binary_expression "dVar26 + dVar34" (identifier "dVar26") (+ "+") (identifier "dVar34"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0017ac38;" (goto "goto") (statement_identifier "LAB_0017ac38") (; ";")) (} "}"))) (} "}")))) (if_statement "if (iVar8 != 0) {\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;\n        }" ({ "{") (expression_statement "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;" (assignment_expression "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24" (pointer_expression "*(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4)" (* "*") (cast_expression "(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4)" (( "(") (type_descriptor "float *" (primitive_type "float") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + *(int *)(iVar5 + 0x38) * 4)" (( "(") (binary_expression "param_6 + *(int *)(iVar5 + 0x38) * 4" (identifier "param_6") (+ "+") (binary_expression "*(int *)(iVar5 + 0x38) * 4" (pointer_expression "*(int *)(iVar5 + 0x38)" (* "*") (cast_expression "(int *)(iVar5 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar5 + 0x38)" (( "(") (binary_expression "iVar5 + 0x38" (identifier "iVar5") (+ "+") (number_literal "0x38")) () ")")))) (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "fVar24")) (; ";")) (} "}"))) (expression_statement "iVar16 = iVar16 + 1;" (assignment_expression "iVar16 = iVar16 + 1" (identifier "iVar16") (= "=") (binary_expression "iVar16 + 1" (identifier "iVar16") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_6 = param_6 + iVar9 * 4;" (assignment_expression "param_6 = param_6 + iVar9 * 4" (identifier "param_6") (= "=") (binary_expression "param_6 + iVar9 * 4" (identifier "param_6") (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4")))) (; ";")) (expression_statement "dVar23 = dVar25;" (assignment_expression "dVar23 = dVar25" (identifier "dVar23") (= "=") (identifier "dVar25")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar16 != param_4)" (( "(") (binary_expression "iVar16 != param_4" (identifier "iVar16") (!= "!=") (identifier "param_4")) () ")")) (; ";")) (} "}"))) (if_statement "if (iVar4 == *(int *)puVar3) {\n      return;\n    }" (if "if") (parenthesized_expression "(iVar4 == *(int *)puVar3)" (( "(") (binary_expression "iVar4 == *(int *)puVar3" (identifier "iVar4") (== "==") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___stack_chk_fail_003a9064)();" (call_expression "(*(code *)PTR___stack_chk_fail_003a9064)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_003a9064)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_003a9064" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_003a9064" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_003a9064"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc);" (call_expression "(*(code *)PTR___assert_fail_003a9608)\n            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" (parenthesized_expression "(*(code *)PTR___assert_fail_003a9608)" (( "(") (pointer_expression "*(code *)PTR___assert_fail_003a9608" (* "*") (cast_expression "(code *)PTR___assert_fail_003a9608" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___assert_fail_003a9608"))) () ")")) (argument_list "(PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,\n             PTR_s_courses_003a88ec + -0x69cc)" (( "(") (binary_expression "PTR_LAB_003a88e0 + 0xdd0" (identifier "PTR_LAB_003a88e0") (+ "+") (number_literal "0xdd0")) (, ",") (binary_expression "PTR_s_courses_003a88ec + -0x7528" (identifier "PTR_s_courses_003a88ec") (+ "+") (number_literal "-0x7528")) (, ",") (number_literal "0x318") (, ",") (binary_expression "PTR_s_courses_003a88ec + -0x69cc" (identifier "PTR_s_courses_003a88ec") (+ "+") (number_literal "-0x69cc")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "GravityType": Some values do not have unique names */
/* WARNING: Enum "DisposeType": Some values do not have unique names */
/* WARNING: Enum "ChannelType": Some values do not have unique names */
/* WARNING: Enum "PixelChannel": Some values do not have unique names */

void function_1(type_1 *var_1,type_2 *quantum_info,type_3 var_9,type_4 *p,
                      type_5 *var_37)

{
  type_6 var_25;
  type_7 *var_19;
  type_7 *puVar3;
  int var_38;
  type_8 *pPVar5;
  int var_11;
  int var_18;
  type_9 var_32;
  size_t var_35;
  type_10 var_6;
  type_10 var_24;
  int var_12;
  size_t var_22;
  ssize_t i;
  type_10 var_7;
  float *pfVar15;
  type_5 *var_36;
  type_10 var_5;
  type_6 *var_23;
  int var_26;
  type_10 var_4;
  int var_10;
  float *pfVar22;
  double var_17;
  double var_14;
  float fVar26;
  double var_21;
  double var_20;
  double var_16;
  double var_15;
  double var_30;
  double var_29;
  type_11 uVar32;
  double var_27;
  double var_13;
  double var_28;
  double var_31;
  float pixel;
  type_4 quantum [4];
  
  puVar3 = PTR___stack_chk_guard_003a9230;
  var_19 = var_8;
  var_38 = *(int *)PTR___stack_chk_guard_003a9230;
  if (var_1 != (type_1 *)0x0) {
    if (var_1->signature != 0xabacadab) {
      (*(type_12 *)PTR___assert_fail_003a9608)
                (var_2 + -0x3784,
                 var_3 + -0x7528,0x319,var_3 + -0x69cc);
      return;
    }
    var_4 = quantum_info->depth;
    if (var_4 - 8 < 0x39) {
                    /* WARNING: Could not emulate address calculation at 0x00179d24 */
                    /* WARNING: Treating indirect jump as call */
      (*(type_12 *)(&_gp + *(int *)(var_3 + (var_4 - 8) * 4 + -0x7234)))();
      return;
    }
    var_26 = 0;
    if (var_4 == 0) {
      var_5 = 0;
    }
    else {
      var_5 = 0;
      if (var_4 < 0x41) {
        var_5 = var_4;
      }
      var_5 = var_5 - 1;
      var_24 = 2 << (var_5 & 0x1f);
      var_6 = var_24;
      var_7 = 1 >> (~var_5 & 0x1f);
      if ((var_5 & 0x20) != 0) {
        var_6 = 0;
        var_7 = var_24;
      }
      var_5 = var_6 - 1;
      var_26 = (type_10)(var_5 < var_6) + (var_7 - 1);
    }
    if (0 < (int)var_37) {
      var_27 = *(double *)(var_8 + 0x13f8);
      pPVar5 = var_1->channel_map;
      var_29 = *(double *)(var_8 + 0x1a68);
      var_35 = var_1->number_channels;
      var_36 = (type_5 *)0x0;
      var_11 = pPVar5[2].offset;
      var_28 = *(double *)(var_8 + 0x1418);
      var_15 = *(double *)(var_8 + 0x1438);
      var_17 = *(double *)(var_8 + 0x1a58);
      var_18 = pPVar5->offset;
      var_12 = pPVar5[1].offset;
      var_32 = pPVar5[4].traits;
      uVar32 = (type_11)*(type_10 *)(var_8 + 0x1a50);
      var_30 = var_15;
      var_21 = var_29;
      var_13 = var_27;
      var_31 = var_28;
      do {
        var_23 = (type_6 *)(var_9 >> 0x20);
        var_10 = (int)var_9;
        pfVar22 = (float *)(var_10 + var_11 * 4);
        pfVar15 = (float *)(var_10 + var_12 * 4);
        if ((int)var_4 < 1) {
          var_16 = 0.0;
          var_14 = (double)(*(type_12 *)PTR___floatundidf_003a8960)(var_26,var_5);
          if (var_13 <= var_14) {
LAB_0017ae10:
            *pfVar22 = (float)((var_15 / var_14) * var_16 * var_17);
            if (0 < (int)var_4) goto LAB_0017a270;
          }
          else {
            *pfVar22 = 0.0;
          }
          pfVar22 = (float *)(var_10 + var_18 * 4);
          var_16 = 0.0;
LAB_0017acf8:
          var_20 = var_29;
          if (*(double *)(var_19 + 0x13f8) <= var_14) {
            var_20 = var_15 / var_14;
          }
          *pfVar15 = (float)(var_20 * var_16 * *(double *)(var_19 + 0x1a58));
          if (0 < (int)var_4) goto LAB_0017a32c;
          if (*(double *)(var_19 + 0x13f8) <= var_14) {
            var_16 = 0.0;
            goto LAB_0017ad4c;
          }
          *pfVar22 = 0.0;
          var_16 = 0.0;
LAB_0017ac38:
          var_20 = var_21;
          if (*(double *)(var_19 + 0x13f8) <= var_14) {
LAB_0017ad74:
            var_21 = *(double *)(var_19 + 0x1438) / var_14;
          }
          fVar26 = (float)(var_21 * var_16 * *(double *)(var_19 + 0x1a58));
        }
        else {
          var_22 = (quantum_info->state).bits;
          var_6 = 0;
          var_7 = var_4;
          do {
            while (var_22 == 0) {
              var_25 = *var_23;
              var_23 = var_23 + 1;
              (quantum_info->state).pixel = (type_10)var_25;
              var_24 = 8;
              if (var_7 < 9) {
                var_24 = var_7;
              }
              var_22 = 8 - var_24;
              var_7 = var_7 - var_24;
              var_6 = ~(-1 << (var_24 & 0x1f)) & (type_10)(var_25 >> (var_22 & 0x1f)) |
                       var_6 << (var_24 & 0x1f);
              if ((int)var_7 < 1) goto LAB_0017a254;
            }
            var_24 = var_22;
            if (var_7 <= var_22) {
              var_24 = var_7;
            }
            var_22 = var_22 - var_24;
            var_7 = var_7 - var_24;
            var_6 = ~(-1 << (var_24 & 0x1f)) & (quantum_info->state).pixel >> (var_22 & 0x1f) |
                     var_6 << (var_24 & 0x1f);
          } while (0 < (int)var_7);
LAB_0017a254:
          (quantum_info->state).bits = var_22;
          if ((var_26 == 0) && (var_5 < var_6)) {
            *pfVar22 = *(float *)(var_19 + 0x1a50);
          }
          else {
            var_16 = (double)(int)var_6;
            if ((int)var_6 < 0) {
              var_16 = var_16 + *(double *)(var_19 + 0x1418);
            }
            var_14 = (double)(*(type_12 *)PTR___floatundidf_003a8960)(var_26,var_5);
            if (var_27 <= var_14) goto LAB_0017ae10;
            *pfVar22 = (float)(var_16 * *(double *)(var_19 + 0x1a68) * *(double *)(var_19 + 0x1a58))
            ;
          }
LAB_0017a270:
          var_22 = (quantum_info->state).bits;
          var_6 = 0;
          var_7 = var_4;
          do {
            while (var_22 == 0) {
              var_25 = *var_23;
              var_23 = var_23 + 1;
              (quantum_info->state).pixel = (type_10)var_25;
              var_24 = 8;
              if (var_7 < 9) {
                var_24 = var_7;
              }
              var_22 = 8 - var_24;
              var_7 = var_7 - var_24;
              var_6 = ~(-1 << (var_24 & 0x1f)) & (type_10)(var_25 >> (var_22 & 0x1f)) |
                       var_6 << (var_24 & 0x1f);
              if ((int)var_7 < 1) goto LAB_0017a304;
            }
            var_24 = var_22;
            if (var_7 <= var_22) {
              var_24 = var_7;
            }
            var_22 = var_22 - var_24;
            var_7 = var_7 - var_24;
            var_6 = ~(-1 << (var_24 & 0x1f)) & (quantum_info->state).pixel >> (var_22 & 0x1f) |
                     var_6 << (var_24 & 0x1f);
          } while (0 < (int)var_7);
LAB_0017a304:
          (quantum_info->state).bits = var_22;
          pfVar22 = (float *)(var_10 + var_18 * 4);
          if ((var_26 != 0) || (var_6 <= var_5)) {
            var_14 = (double)(*(type_12 *)PTR___floatundidf_003a8960)(var_26,var_5);
            var_16 = (double)(int)var_6;
            if ((int)var_6 < 0) {
              var_16 = var_16 + var_28;
            }
            goto LAB_0017acf8;
          }
          *pfVar15 = *(float *)(var_19 + 0x1a50);
LAB_0017a32c:
          var_22 = (quantum_info->state).bits;
          var_6 = 0;
          var_7 = var_4;
          do {
            while (var_22 == 0) {
              var_25 = *var_23;
              var_24 = var_7;
              if (7 < var_7) {
                var_24 = 8;
              }
              var_23 = var_23 + 1;
              (quantum_info->state).pixel = (type_10)var_25;
              var_22 = 8 - var_24;
              var_7 = var_7 - var_24;
              var_6 = ~(-1 << (var_24 & 0x1f)) & (type_10)(var_25 >> (var_22 & 0x1f)) |
                       var_6 << (var_24 & 0x1f);
              if ((int)var_7 < 1) goto LAB_0017a3c0;
            }
            var_24 = var_7;
            if (var_22 <= var_7) {
              var_24 = var_22;
            }
            var_22 = var_22 - var_24;
            var_7 = var_7 - var_24;
            var_6 = ~(-1 << (var_24 & 0x1f)) & (quantum_info->state).pixel >> (var_22 & 0x1f) |
                     var_6 << (var_24 & 0x1f);
          } while (0 < (int)var_7);
LAB_0017a3c0:
          (quantum_info->state).bits = var_22;
          if ((var_26 != 0) || (var_6 <= var_5)) {
            var_14 = (double)(*(type_12 *)PTR___floatundidf_003a8960)(var_26,var_5);
            var_16 = (double)(int)var_6;
            if ((int)var_6 < 0) {
              var_16 = var_16 + var_28;
            }
            if (var_14 < var_27) {
              *pfVar22 = (float)(var_16 * var_29 * var_17);
              if ((int)var_4 < 1) {
                var_16 = 0.0;
                goto LAB_0017ac38;
              }
              goto LAB_0017a3dc;
            }
LAB_0017ad4c:
            *pfVar22 = (float)((var_30 / var_14) * var_16 * *(double *)(var_19 + 0x1a58));
            if (0 < (int)var_4) goto LAB_0017a3dc;
            var_16 = 0.0;
            var_20 = var_21;
            goto LAB_0017ad74;
          }
          *pfVar22 = *(float *)(var_19 + 0x1a50);
LAB_0017a3dc:
          var_22 = (quantum_info->state).bits;
          var_6 = 0;
          var_7 = var_4;
          do {
            while (var_22 == 0) {
              var_25 = *var_23;
              var_24 = var_7;
              if (7 < var_7) {
                var_24 = 8;
              }
              var_23 = var_23 + 1;
              (quantum_info->state).pixel = (type_10)var_25;
              var_22 = 8 - var_24;
              var_7 = var_7 - var_24;
              var_6 = ~(-1 << (var_24 & 0x1f)) & (type_10)(var_25 >> (var_22 & 0x1f)) |
                       var_6 << (var_24 & 0x1f);
              if ((int)var_7 < 1) goto LAB_0017a470;
            }
            var_24 = var_7;
            if (var_22 <= var_7) {
              var_24 = var_22;
            }
            var_22 = var_22 - var_24;
            var_7 = var_7 - var_24;
            var_6 = ~(-1 << (var_24 & 0x1f)) & (quantum_info->state).pixel >> (var_22 & 0x1f) |
                     var_6 << (var_24 & 0x1f);
          } while (0 < (int)var_7);
LAB_0017a470:
          (quantum_info->state).bits = var_22;
          if ((var_26 != 0) || (fVar26 = (float)uVar32, var_20 = var_21, var_6 <= var_5)) {
            var_14 = (double)(*(type_12 *)PTR___floatundidf_003a8960)(var_26,var_5);
            var_16 = (double)(int)var_6;
            if ((int)var_6 < 0) {
              var_16 = var_16 + var_31;
            }
            goto LAB_0017ac38;
          }
        }
        if (var_32 != var_33) {
          *(float *)(var_10 + pPVar5[4].offset * 4) = fVar26;
        }
        var_36 = (type_5 *)((int)var_36 + 1);
        var_9 = var_34(var_23,var_10 + var_35 * 4);
        var_21 = var_20;
      } while (var_36 != var_37);
    }
    if (var_38 == *(int *)puVar3) {
      return;
    }
    (*(type_12 *)PTR___stack_chk_fail_003a9064)();
  }
  (*(type_12 *)PTR___assert_fail_003a9608)
            (var_8 + 0xdd0,var_3 + -0x7528,0x318,
             var_3 + -0x69cc);
  return;
}


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

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

{
  byte bVar1;
  undefined *puVar2;
  undefined *puVar3;
  int iVar4;
  int iVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  uint uVar13;
  uint uVar14;
  float *pfVar15;
  int iVar16;
  uint uVar17;
  int iVar18;
  uint uVar19;
  float *pfVar20;
  double dVar21;
  double dVar22;
  float fVar24;
  double dVar23;
  double dVar25;
  double dVar26;
  double dVar27;
  double dVar28;
  double dVar29;
  ulonglong uVar30;
  double dVar31;
  double dVar32;
  double dVar33;
  double dVar34;
  
  puVar3 = PTR___stack_chk_guard_003a9230;
  puVar2 = PTR_LAB_003a88e0;
  iVar4 = *(int *)PTR___stack_chk_guard_003a9230;
  if (param_1 != 0) {
    if (*(int *)(param_1 + 0x336c) != -0x54535255) {
      (*(code *)PTR___assert_fail_003a9608)
                (PTR_s_ls_0__dGridFitTT_2__sPDFPassword_003a88e8 + -0x3784,
                 PTR_s_courses_003a88ec + -0x7528,0x319,PTR_s_courses_003a88ec + -0x69cc);
      return;
    }
    uVar19 = *param_2;
    if (uVar19 - 8 < 0x39) {
                    /* WARNING: Could not emulate address calculation at 0x00179d24 */
                    /* WARNING: Treating indirect jump as call */
      (*(code *)(&_gp_1 + *(int *)(PTR_s_courses_003a88ec + (uVar19 - 8) * 4 + -0x7234)))();
      return;
    }
    iVar18 = 0;
    if (uVar19 == 0) {
      uVar17 = 0;
    }
    else {
      uVar17 = 0;
      if (uVar19 < 0x41) {
        uVar17 = uVar19;
      }
      uVar17 = uVar17 - 1;
      uVar13 = 2 << (uVar17 & 0x1f);
      uVar10 = uVar13;
      uVar14 = 1 >> (~uVar17 & 0x1f);
      if ((uVar17 & 0x20) != 0) {
        uVar10 = 0;
        uVar14 = uVar13;
      }
      uVar17 = uVar10 - 1;
      iVar18 = (uint)(uVar17 < uVar10) + (uVar14 - 1);
    }
    if (0 < param_4) {
      dVar31 = *(double *)(PTR_LAB_003a88e0 + 0x13f8);
      iVar5 = *(int *)(param_1 + 0x2d0);
      dVar29 = *(double *)(PTR_LAB_003a88e0 + 0x1a68);
      iVar9 = *(int *)(param_1 + 0x2c0);
      iVar16 = 0;
      iVar6 = *(int *)(iVar5 + 0x20);
      dVar33 = *(double *)(PTR_LAB_003a88e0 + 0x1418);
      dVar27 = *(double *)(PTR_LAB_003a88e0 + 0x1438);
      dVar21 = *(double *)(PTR_LAB_003a88e0 + 0x1a58);
      iVar7 = *(int *)(iVar5 + 8);
      iVar12 = *(int *)(iVar5 + 0x14);
      iVar8 = *(int *)(iVar5 + 0x34);
      uVar30 = (ulonglong)*(uint *)(PTR_LAB_003a88e0 + 0x1a50);
      dVar28 = dVar27;
      dVar23 = dVar29;
      dVar32 = dVar31;
      dVar34 = dVar33;
      do {
        pfVar20 = (float *)(param_6 + iVar6 * 4);
        pfVar15 = (float *)(param_6 + iVar12 * 4);
        if ((int)uVar19 < 1) {
          dVar26 = 0.0;
          dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
          if (dVar32 <= dVar22) {
LAB_0017ae10:
            *pfVar20 = (float)((dVar27 / dVar22) * dVar26 * dVar21);
            if (0 < (int)uVar19) goto LAB_0017a270;
          }
          else {
            *pfVar20 = 0.0;
          }
          pfVar20 = (float *)(param_6 + iVar7 * 4);
          dVar26 = 0.0;
LAB_0017acf8:
          dVar25 = dVar29;
          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {
            dVar25 = dVar27 / dVar22;
          }
          *pfVar15 = (float)(dVar25 * dVar26 * *(double *)(puVar2 + 0x1a58));
          if (0 < (int)uVar19) goto LAB_0017a32c;
          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {
            dVar26 = 0.0;
            goto LAB_0017ad4c;
          }
          *pfVar20 = 0.0;
          dVar26 = 0.0;
LAB_0017ac38:
          dVar25 = dVar23;
          if (*(double *)(puVar2 + 0x13f8) <= dVar22) {
LAB_0017ad74:
            dVar23 = *(double *)(puVar2 + 0x1438) / dVar22;
          }
          fVar24 = (float)(dVar23 * dVar26 * *(double *)(puVar2 + 0x1a58));
        }
        else {
          uVar13 = param_2[0x15];
          uVar10 = 0;
          uVar14 = uVar19;
          do {
            while (uVar13 == 0) {
              bVar1 = *param_5;
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar11 = 8;
              if (uVar14 < 9) {
                uVar11 = uVar14;
              }
              uVar13 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar10 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar13 & 0x1f)) |
                       uVar10 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a254;
            }
            uVar11 = uVar13;
            if (uVar14 <= uVar13) {
              uVar11 = uVar14;
            }
            uVar13 = uVar13 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar10 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar13 & 0x1f) |
                     uVar10 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a254:
          param_2[0x15] = uVar13;
          if ((iVar18 == 0) && (uVar17 < uVar10)) {
            *pfVar20 = *(float *)(puVar2 + 0x1a50);
          }
          else {
            dVar26 = (double)(int)uVar10;
            if ((int)uVar10 < 0) {
              dVar26 = dVar26 + *(double *)(puVar2 + 0x1418);
            }
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            if (dVar31 <= dVar22) goto LAB_0017ae10;
            *pfVar20 = (float)(dVar26 * *(double *)(puVar2 + 0x1a68) * *(double *)(puVar2 + 0x1a58))
            ;
          }
LAB_0017a270:
          uVar10 = param_2[0x15];
          uVar13 = 0;
          uVar14 = uVar19;
          do {
            while (uVar10 == 0) {
              bVar1 = *param_5;
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar11 = 8;
              if (uVar14 < 9) {
                uVar11 = uVar14;
              }
              uVar10 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |
                       uVar13 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a304;
            }
            uVar11 = uVar10;
            if (uVar14 <= uVar10) {
              uVar11 = uVar14;
            }
            uVar10 = uVar10 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |
                     uVar13 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a304:
          param_2[0x15] = uVar10;
          pfVar20 = (float *)(param_6 + iVar7 * 4);
          if ((iVar18 != 0) || (uVar13 <= uVar17)) {
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            dVar26 = (double)(int)uVar13;
            if ((int)uVar13 < 0) {
              dVar26 = dVar26 + dVar33;
            }
            goto LAB_0017acf8;
          }
          *pfVar15 = *(float *)(puVar2 + 0x1a50);
LAB_0017a32c:
          uVar10 = param_2[0x15];
          uVar13 = 0;
          uVar14 = uVar19;
          do {
            while (uVar10 == 0) {
              bVar1 = *param_5;
              uVar11 = uVar14;
              if (7 < uVar14) {
                uVar11 = 8;
              }
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar10 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |
                       uVar13 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a3c0;
            }
            uVar11 = uVar14;
            if (uVar10 <= uVar14) {
              uVar11 = uVar10;
            }
            uVar10 = uVar10 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |
                     uVar13 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a3c0:
          param_2[0x15] = uVar10;
          if ((iVar18 != 0) || (uVar13 <= uVar17)) {
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            dVar26 = (double)(int)uVar13;
            if ((int)uVar13 < 0) {
              dVar26 = dVar26 + dVar33;
            }
            if (dVar22 < dVar31) {
              *pfVar20 = (float)(dVar26 * dVar29 * dVar21);
              if ((int)uVar19 < 1) {
                dVar26 = 0.0;
                goto LAB_0017ac38;
              }
              goto LAB_0017a3dc;
            }
LAB_0017ad4c:
            *pfVar20 = (float)((dVar28 / dVar22) * dVar26 * *(double *)(puVar2 + 0x1a58));
            if (0 < (int)uVar19) goto LAB_0017a3dc;
            dVar26 = 0.0;
            dVar25 = dVar23;
            goto LAB_0017ad74;
          }
          *pfVar20 = *(float *)(puVar2 + 0x1a50);
LAB_0017a3dc:
          uVar10 = param_2[0x15];
          uVar13 = 0;
          uVar14 = uVar19;
          do {
            while (uVar10 == 0) {
              bVar1 = *param_5;
              uVar11 = uVar14;
              if (7 < uVar14) {
                uVar11 = 8;
              }
              param_5 = param_5 + 1;
              param_2[0x14] = (uint)bVar1;
              uVar10 = 8 - uVar11;
              uVar14 = uVar14 - uVar11;
              uVar13 = ~(-1 << (uVar11 & 0x1f)) & (uint)(bVar1 >> (uVar10 & 0x1f)) |
                       uVar13 << (uVar11 & 0x1f);
              if ((int)uVar14 < 1) goto LAB_0017a470;
            }
            uVar11 = uVar14;
            if (uVar10 <= uVar14) {
              uVar11 = uVar10;
            }
            uVar10 = uVar10 - uVar11;
            uVar14 = uVar14 - uVar11;
            uVar13 = ~(-1 << (uVar11 & 0x1f)) & param_2[0x14] >> (uVar10 & 0x1f) |
                     uVar13 << (uVar11 & 0x1f);
          } while (0 < (int)uVar14);
LAB_0017a470:
          param_2[0x15] = uVar10;
          if ((iVar18 != 0) || (fVar24 = (float)uVar30, dVar25 = dVar23, uVar13 <= uVar17)) {
            dVar22 = (double)(*(code *)PTR_FUN_003a8960)(iVar18,uVar17);
            dVar26 = (double)(int)uVar13;
            if ((int)uVar13 < 0) {
              dVar26 = dVar26 + dVar34;
            }
            goto LAB_0017ac38;
          }
        }
        if (iVar8 != 0) {
          *(float *)(param_6 + *(int *)(iVar5 + 0x38) * 4) = fVar24;
        }
        iVar16 = iVar16 + 1;
        param_6 = param_6 + iVar9 * 4;
        dVar23 = dVar25;
      } while (iVar16 != param_4);
    }
    if (iVar4 == *(int *)puVar3) {
      return;
    }
    (*(code *)PTR___stack_chk_fail_003a9064)();
  }
  (*(code *)PTR___assert_fail_003a9608)
            (PTR_LAB_003a88e0 + 0xdd0,PTR_s_courses_003a88ec + -0x7528,0x318,
             PTR_s_courses_003a88ec + -0x69cc);
  return;
}

